I figured I’d start the year off with a quick thought post on where things are at with building apps for Windows. As Windows rapidly approaches the 4 decade mark, you’d expect there to be a well defined model for building apps. Instead we’re still realing from the years of missteps and indecision by Microsoft. My concern is that this isn’t going to get any easier or clearer in the year to come but at least the community seems to be coming together and encouraging Microsoft to stick with the WinUI/WinAppSdk investment, as shown in this X/Twitter poll:
What’s interesting about this poll is the number of people who indicated that Microsoft should invest in Raw Win32. I’m not even sure this would mean? Additional Win32 APIs perhaps.
There were also a number of replies asking where UWP was on the list. I’m guess if polls supported more options, UWP might have been on the list but for me it doesn’t surprise me that UWP was missing, given that Microsoft has been pretty clear that UWP isn’t getting any love anytime soon. Whilst I know there are some features of UWP that haven’t made it across to WinAppSdk, I don’t believe there’s much reason for starting a new UWP based application (excluding apps that make sense to run on XBox). Furthermore, if I had a UWP based application, I’d be working to migrate it to WinAppSdk and continue to provide feedback to Microsoft on any features that are preventing you from completing the migration.
I’ve mentioned that I feel that WinUI/WinAppSdk applications are a way for building Windows applications but it’s definitely not the only way. WinForms and WPF are still valid options and continue to be supported by Microsoft. In fact they’re not only still supported, there is still some development in both technologies (GitHub for WinForms and WPF).
Every new application has a set of requirements that will help determine the choice of technology. I doubt UWP will ever make it to the top of my list of technologies to use for a project (again, unless there’s a specific requirement for Xbox) since it comes with so much baggage and limitations. WinForms and WPF would only rate a mention if there was some specific library that wasn’t compatible with WinAppSdk.
So, what options would I consider for future applications. WinAppSdk makes sense for the majority but in a few scenarios it’d be worth considering building a PWA and deploying it either via the web, or as a native wrapped app. The latter would include options such as .NET Maui Blazor Hybrid applications.
Another important consideration is whether Windows is the only target for the application. In most cases, it’s likely that the application makes sense on other platforms. In this case, building using the WinAppSdk makes sense because you can leverage the Uno Platform to take your application cross platform to iOS, Android, MacCatalyst, Web (WebAssembly) and Linux.
In fact, it makes sense to start your application using the Uno Platform, even if you’re just building for Windows initially. You can immediately take advantage of all the features and components that the Uno team has been working on such as Toolkit, Themes (Material and Fluent), C# Markup, Extensions, MVUX and even .NET MAUI Embedding.