I wish UWP had succeeded

I work professionally as a C++ developer, and as part of my job I personally ported multiple Win32 games to run on UWP for Desktop and Xbox. I will admit, there are some aspects of the Universal Windows Platform that I found annoying, but overall I liked the direction it was going and the features it offered.

The main thing I liked about UWP apps was the user experience: the app/game runs in a sandbox with limited permissions that the user can see in advance and even turn off or customize. I am a huge, huge advocate of giving users control over what apps are allowed to do on their system. This is difficult to do with any real reliability for Win32 apps, especially without sacrificing performance, and it's why antivirus software has stepped up as an alternative. UWP on the other hand had sandboxing and permissions baked in while being really performant, especially if you implemented your UWP app or game as C++/WinRT with DirectX 11 or 12. Android, iOS, and other mobile operating systems are far, far ahead of Windows in this regard, and it's frankly embarrassing that such an ancient app model as Win32 is still so popular.

UWP apps also have a nice installation experience, either for sideloading or for installing from the Microsoft Store. Automatic update support was baked in too, so no more chaos of every app having its own weird implementation of automatic update. A single UWP package can also run on multiple device types such as Desktop, Xbox, and more, and even use APIs that only exist on one of those device types if it checks for their presence. Windows also has native support for allowing users to move UWP apps between drives with just a few clicks. Compare this to the myriad of Win32 apps that come with installers and due to registry keys and shortcuts and services and such it is easier to uninstall and reinstall the app than to try and move it by hand.

My gripes with UWP are rather minor by comparison - the new app model takes some getting used to, some of the more advanced features only work on NTFS volumes, there's no Vulkan support yet, and WinRT has a steep learning curve. Aside form that though, I mostly have positive sentiment toward UWP.

Microsoft recently released their new GDK app model designed for games, and to say I am disappointed is an understatement. It is a regression back to the Win32 app model, with the suspend/resume part of UWP bolted on haphazardly, and endless hacks and limitations to try and give developers that outdated Win32 feel. As can be seen from the Microsoft store, apps that use the GDK require all the same permissions as Win32 apps - that is to say, they require full filesystem access and other invasive permissions which are likely to discourage users from trusting them enough to try out. UWP apps often only need an internet connection and little to no other permissions or access. Even more alarming, the GDK only supports 64-bit x86, with no support for ARM, right when it is most critical for Microsoft to push for ARM support. They could add it in the future, but its omission is glaring in the face of UWP's already existing support for it.

We were also going to get WinUI 3 for UWP along with WebView2 support, but Microsoft seems to have backed off from those plans, leaving UWP with outdated WebView support only. In addition to endless headlines from news publishers about UWP dying or being abandoned or being disliked and Microsoft constantly backpedaling, Microsoft is now recommending that game developers use the GDK instead of UWP. It's very frustrating to me since from both a developer's perspective and a user's perspective, UWP is by far the superior platform for apps and games. I seem to be in the minority with this sentiment though. Perhaps people really just don't like change.

I had hoped that Microsoft would continue to expand UWP such that eventually every app or game could be ported to it with the right permissions enabled, but instead it seems that the developer community and user community alike pushed back hard against it. I can't help but wonder if the awful UX of the Microsoft Store contributed to UWP's demise, even though they are separate entities.

It's not too late for Microsoft to salvage UWP, though I have a feeling that even if UWP does make a comeback, it might not be for years. What a shame.


Update: Microsoft decided to support WebView2 in UWP after all, but only in WinUI 2. WinUI 3 still has no UWP support aside from the 0.8 preview. Guess we'll take what we can get.

Comments