In a GitHub issue comment, Nicolas Champagne-Williamson, Principal Software Engineering Manager on the WebView2 team confirmed that the WebView2 team were working on both Mac and Linux support, were prioritising Mac support over Linux support, and didn’t expect Linux support to come until at least 2022. there will be 2 supported desktop clients for Teams: an Electron-based one and a WebView2-based one.
It’s supported on lots of Windows versions, but nowhere else. One of the reasons given for using Electron to build the Teams application was that all clients would be on the same evergreen version and that this would limit the number of supported applications and enable faster development progress. We should also see some performance improvements associated with removing a generic abstraction (Electron) and replacing it with something custom-built.
However, I predict that the power and ease of being able to write client-side code that operates alongside the WebView2 control will prove too much of a lure and we will see innovations in the desktop client experience that aren’t possible elsewhere. The most simple implementation of this approach is to create a new application, add a single WebView2 control that fills the canvas, host Teams in it, and write an abstraction layer to deal with communication to the desktop. but it’s also a big deal because it’ll make some things easier and some things harder. It’s not a rewrite of Microsoft Teams – remember that all the real logic and UI is in web components and that remains (expect that that has also all been re-written to use React instead of Angular, but that’s a different story!) the case.
On the other side, they don’t get anything for free anymore: so all the hooks and events that Electron was providing need to be written in. So, things like support for multiple windows and spanning multiple displays become much easier. With this new approach, the Teams developers are no longer required to use an intermediary to talk to the underlying system – because they are running a native application they can directly interact with devices, screens, the file system. A proper new application from the ground up: a File > New Project for someone in Engineering. That means that in order to use it, the Microsoft Teams team have needed to build a new Teams desktop application, and then used the WebView2 control to “host” parts of the Teams experience. (if you disagree with this last bit, that’s OK, I’m just trying to broadly explain the difference)
WebView2 is a control that is part of an application, whereas Electron is the application (sort of). It’s a powerful enough web-rendering control to host the Teams application, it would appear, and it’s using this control that the recently demoed application shown in Windows 11 is being built. WebView2 uses the newer Edge rendering engine and is supported across many more Windows platforms. WebView used the original Edge (Trident) rendering engine and was a Windows10 only control.
The reason it’s called WebView2 is that it replaces the WebView control, which in turn replaced the WebBrowser control, which old-school Win32 developers may remember. It is a control that renders webpage experiences, using the Chromium rendering engine built into Edge. It’s quite a sophisticated control but it’s still just a control. WebView2 is a control, like a text box, a button or a label is a control. It provides an abstraction to the desktop and means that all the “real” work of the application has to happen in JavaScript, with Electron being the “gateway” through which applications interact with the underlying desktop (for instance to show a popup or respond to a device being plugged in).
Electron is a wrapper application technology, to enable you to build something that is cross-platform but still a desktop application, and it is a host to a web application. I think this is an important distinction to make. WebView2 != Electron: Teams will be a “proper” Windows application