This article is meant to promote a common understanding of the Windows development experience and product direction. The answers to these questions apply to Windows App SDK version 1.0.
What should I use to build Windows apps?
For Windows desktop application development, Windows App SDK / WinUI 3 could be a great choice. This combination of technologies succeeds UWP / WinUI 2 for desktop apps. See the Windows App SDK Roadmap to determine if Windows App SDK / WinUI 3 will meet your needs.
Other options may be more appropriate depending on what you’re building and how you’re building it:
- If Windows App SDK / WinUI 3 don’t meet your needs based on the information provided within the Windows App SDK Roadmap, you can use UWP / WinUI 2.
- If you're a web developer: You can use WebView2 as an application host. This lets you use web technology to build desktop apps that can access the Windows SDK and Windows App SDK APIs. You can also use React Native for Windows.
- If you're a C++ developer: For desktop apps, Windows App SDK / WinUI 3 are a great choice. If you're building a game, consider using DirectX.
- If you're a Rust developer: Check out Rust for Windows.
There are other development technologies that may be more appropriate depending on your needs and technology preferences. Learn more about choosing a development technology.
Where can I find a straightforward comparison of Windows development technologies?
Windows App SDK / WinUI 3
What is the Windows App SDK?
The Windows App SDK is a Windows application development platform that allows you to create beautiful, modern, backwards-compatible (down to Windows 10 1809) desktop apps. WinUI 3 is the UI framework that ships with Windows App SDK.
What's the difference between the Windows App SDK and the Windows SDK?
Both are software development kits (SDKs) that let you build Windows apps.
The Windows App SDK is a new development platform that lets you build modern desktop apps that can be installed across Windows versions (down to Windows 10 1809). When you use Windows App SDK to build an app, you’ll have access to the latest Windows development platform features. The Windows App SDK includes WinUI 3.
The Windows SDK is a development platform that lets you build UWP apps and Win32/desktop apps. It's designed around Windows APIs that are coupled to particular versions of the OS.
The Windows App SDK doesn't replace the Windows SDK. Instead, the Windows App SDK is a complement to the Windows SDK. It provides a convenient, OS-decoupled abstraction around the rich catalogue of Windows OS APIs that you can already access using the Windows SDK. When you build apps with Windows App SDK, you might end up using some Windows SDK APIs depending on the functionality that you need. Over time, more Windows SDK functionality will be lifted into the Windows App SDK.
Can I use Windows App SDK / WinUI 3 in my existing Windows app?
Generally speaking, you can't use WinUI 3 unless you're ready to migrate your UI framework entirely. We’re working on a feature called XAML islands that allow you to host WinUI 3 content in other UI frameworks (WPF, Win32).
You should be able to use elements of the Windows App SDK in any Win32/desktop app, depending on how your existing app was built. UWP apps are not supported by Windows App SDK / WinUI 3.
This means that WPF/MFC/WinForms apps can use Windows App SDK APIs that are not related to WinUI 3. Examples of such APIs include App Lifecycle, Windowing, and Toast Notifications.
Do I need to use Visual Studio to build WinUI 3 apps?
We strongly recommend using Visual Studio 2022 versions 17.1 and above to develop Windows App SDK / WinUI 3 apps. Using the latest version of Visual Studio will give you access to rich development features like Hot Reload.
You may be able to use other IDEs and development workflows, but Visual Studio is currently the only officially supported IDE for Windows App SDK / WinUI 3. Note that MSBuild is required to compile projects that use XAML or Windows App SDK / WinUI 3.
When I build an app using Windows App SDK / WinUI 3, am I building a "WinUI 3 app"?
Yes - "WinUI 3 app” is the term that we recommend you use.
Can I incrementally update my WinUI 2 app to WinUI 3 by gradually replacing WinUI 2 components with WinUI 3 components?
No. Windows App SDK can't be used in UWP apps, and WinUI 2 can't be mixed with WinUI 3. See About migrating from UWP to the Windows App SDK.
How hard is it to migrate UWP apps to Windows App SDK / WinUI 3?
Migrating UI components will generally be straightforward. Otherwise, the cost of migrating from UWP to Windows App SDK / WinUI 3 will depend primarily on three considerations:
- Project file and MSBuild customization: Migrating your project may require a significant level of effort, depending on whether you used advanced MSBuild features.
- .NET API migration: If your UWP app relies on .NET, you'll need to upgrade to .NET 6. In most cases, adopting .NET 6 will be straightfoward.
- UI component libraries: If you use UI component libraries, you'll need new versions of them that target WinUI 3.
See About migrating from UWP to the Windows App SDK for more information about UWP migration. See the Windows App SDK Roadmap for more information about upcoming features that may support your migration needs.
If I have an existing UWP app in the Store, can I publish a new packaged WinUI 3 app using the same identifiers?
Yes, upgraded apps can be published without having to update your application's identity. Users who have the old version will get updated to the new version. This guidance applies only to desktop apps. Xbox, HoloLens, and Surface Hub apps can't migrate to WinUI 3 yet.
How do I package/distribute my WinUI 3 app?
See Deployment overview.
Where can I find Windows App SDK migration guidance?
Do I need to use XAML markup if I want to use WinUI 3?
No. UI controls can be created in code. But there are many benefits to representing your WinUI 3 UI in the form of declarative XAML markup, such as improved developer experience.
If you’re migrating from UWP to WinUI 3, you’ll probably be able to reuse a lot of your XAML markup and UI-related code (but you'll have to update some of the syntax). If you’re migrating from WPF to WinUI 3, you'll be able to reuse a lot of the concepts, but the control set and APIs will be different.
Does Visual Studio have a design surface / GUI designer for WinUI 3?
No. We recognize that this is a gap in the WinUI 3 developer experience. Tools like XAML Hot Reload can help in many scenarios. You can refer to our public roadmap to see what we're currently prioritizing.
Does Windows App SDK include WinUI 3?
Yes. WinUI 3 ships as a part of the Windows App SDK.
Does Windows App SDK include WinUI 2?
No. WinUI 2 is part of the UWP platform.
Are WinUI 2 and WinUI 3 built on the same technology?
Not quite. Although WinUI 3 started from the WinUI 2 codebase, they are distinct technologies. Both WinUI 2 and WinUI 3 are XAML-based UI frameworks that work across .NET and C++. Note that WinUI 2 and WinUI 3 are not compatible with each other.
Can I use WinUI 3 without using Windows App SDK?
No. WinUI 3 ships as part of the Windows App SDK.
Can I use WinUI 3 in unpackaged apps?
Yes. All technologies in the Windows App SDK work in unpackaged apps, including WinUI 3.
What's the difference between XAML Islands and WinUI 3?
XAML Islands allow you to host modern WinUI controls alongside existing Win32 UI from other frameworks, such as WinForms and WPF. Today, XAML Islands are supported with most system XAML and WinUI 2 controls. See here for more information. XAML Islands support for WinUI 3 controls is currently under development.
If I use WinUI 3, will my app look modern on both Windows 11 and Windows 10?
Yes, your app's UI will inherit the latest Fluent UI design principles on all supported versions of Windows 11 and Windows 10 down to version 1809 in both packaged and unpackaged scenarios.
Can I use Mica (Windows 11) or Acrylic (Windows 10) backgrounds in apps built with Windows App SDK?
Not yet. This is currently under development.
Where can I find WinUI 3 samples?
See Sample applications for Windows development. Some notable repositories:
- WindowsAppSDK-Samples: Demonstrates how to use specific Windows App SDK API sets.
- WinUI 3 Demos: Contains demos used during Microsoft's WinUI 3 presentations.
- XAML Controls Gallery: Showcases WinUI 3 and Windows App SDK. Note that this points to the
winui3branch of the XAML Controls Gallery repository. Note also that the XAML Controls Gallery is published to the Store.
UWP and WinUI 2
Can UWP apps be distributed outside of the Microsoft Store?
Yes. If your MSIX package is signed, the signing certificate must be valid and trusted on the target device.
Can I mix UWP XAML UI controls with Win32, WPF, or WinForms UI controls?
Yes - XAML Islands lets you do this. Learn more about XAML Islands.
Can I start with WinUI 3 and App SDK, and later integrate .NET MAUI if I eventually want to target cross-platform scenarios?
Not at this time. Although .NET MAUI apps use Windows App SDK / WinUI 3 when running on Windows, we recommend starting with .NET MAUI or React Native for Windows if you anticipate the need to target multiple platforms.
What should I use if I want to build apps that work on Windows and Xbox?
If your app needs to support Xbox, HoloLens, or IoT, we recommend using UWP. Windows App SDK doesn’t support these platforms. For game development, we recommend using Microsoft Game Development Kit.
What should I use if I want to build apps that work on Windows and Surface Hub?
If you're targeting both Windows and Surface hub, we recommend using UWP.
How do I build native-feeling progressive web apps (PWAs) on Windows?
Packaging, deployment, and updates
What's the difference between MSIX-packaged, unpackaged, and sparse-packaged apps?
MSIX-packaged apps use MSIX to give users an easy installation, uninstallation, and update experience.
Unpackaged apps don't use MSIX - instead, they use a non-MSIX installer.
Sparse-packaging offers a hybrid between these two approaches. Sparse-packaged apps use MSIX to package, but they use a non-MSIX installer (like unpackaged apps) and they run with package identity (like packaged apps).
Each type of app can be published to the Microsoft Store, but we encourage you to MSIX-package your app to ensure that end-users enjoy a seamless installation and update experience.
Will my WinUI 3 app automatically update for end-users?
A Windows App SDK / WinUI 3 app can be delivered through the Store, an .appinstaller file, or in your existing MSI or setup.exe package. The Store and the AppInstaller support automatic updates for end-users who have automatic updating enabled, but your MSI/setup.exe app needs to have its own updater.
Can I use Windows App SDK without using MSBuild?
Generally speaking, no. WinUI 3 and Windows App SDK require MSBuild, which is why Visual Studio is a prerequisite to Windows App SDK / WinUI 3 application development. While It's technically possible to build Windows App SDK apps that don’t use WinUI 3 using other toolchains, this isn’t supported.
Performance and optimization
What can I do to make my Windows app feel great to end-users?
Will my users ever have to update Windows to use my Windows App SDK / WinUI 3 app?
Users who have Windows 10, version 1809 and beyond will be able to install your WinUI 3 / Windows App SDK apps without updating their OS.
Can I target Arm64 with my WinUI 3 app?
Deprecations and migrations
Are UWP / WinUI 2 deprecated?
No. UWP and WinUI 2 are still supported and will receive bug, reliability, and security fixes. However, most new features and capabilities, including support for the latest .NET runtimes, will only be added to the Windows App SDK / WinUI 3.
When should I migrate a UWP / WinUI 2 app to WinUI 3?
UWP developers should feel no pressure to migrate their apps to the Windows App SDK, if they are happy with UWP and its feature set. The best choice for some apps may be to never migrate. For apps that want to benefit from the latest Windows platform and .NET investments from Microsoft, these apps should consider moving to the Windows App SDK. See Migrate from UWP to the Windows App SDK).
When should I *not* migrate a UWP + WinUI 2 app to WinUI 3?
The Windows App SDK Roadmap details upcoming features and what we're prioritizing. This will help you determine if the current or vNext version of Windows App SDK / WinUI 3 will meet your needs. We recommend continuing to use UWP if you're building for Xbox, Surface Hub, or HoloLens.
Is WPF deprecated?
No. WPF is still supported and receives some feature updates as well.
Is WinForms deprecated?
No. WinForms is still supported and receives some feature updates as well.
Is the Windows Runtime (WinRT) deprecated?
No. WinRT refers to a type of API. WinRT is the evolution of COM. Windows App SDK provides most of its functionality through WinRT APIs.
Release notes and roadmaps
Where can I find release notes for Windows App SDK?
Where can I find a public roadmap for WinUI 3?
Upcoming WinUI 3 features are documented in the Windows App SDK roadmap.
Where can I find a public roadmap for Windows App SDK?
Where can I find a roadmap for React Native Windows + Windows App SDK integration?
React Native for Windows layers on top of the native WinUI stack. See the React Native on Windows roadmap.