Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This FAQ provides answers to common questions about Windows application development, including guidance on choosing the right framework for your projects. Topics covered include:
- Getting started and the Windows app development landscape.
- Native Windows-only app development with WinUI, Windows Presentation Foundation (WPF), and Windows Forms (WinForms).
- Windows Software Development Kit (SDK) and Windows App SDK.
- Targeting Windows as part of your cross-platform development strategy.
- Hybrid and web app development with .NET MAUI, Blazor, and ASP.NET Core.
- How to choose an approach while understanding Microsoft's investments.
Windows app development landscape
Where can I find a straightforward overview of Windows development technologies?
For a great review of today's options for Windows developers, watch the most recent Windows Dev Chat episode, Choosing your ideal dev platform, where they discuss WinUI, .NET MAUI, React Native, Blazor, and Progressive Web Apps (PWAs).
You can also refer to the overview of app development options for Windows developers.
Why is client app development still crucial for modern digital transformation in the era of cloud services?
In the age of cloud services, client app development remains a critical component of modern digital transformation. For developers, building client applications is essential not just for reach but for delivering responsive, meaningful interactions on user devices.
Here's why client apps matter:
- Device Reach: With over 1.5 billion Windows devices and more than 5 billion Android and iOS devices globally, client apps let you bring your applications directly to users on their devices of choice.
- Gateway to Intelligent Services: Client apps are often the first interaction users have with your services. They offer a rich, interactive interface that allows you to showcase intelligent features and differentiate your product from others.
- Scalability with Cloud Integration: A well-integrated client app can sync effortlessly with backend cloud services, enabling real-time data access and seamless scalability as your user base grows.
- Enhanced Productivity and User Loyalty: A thoughtfully designed app can enhance productivity and keep users engaged with your product or service over time.
Native Windows-only app development
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 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 building with Windows App SDK, the latest Windows development platform features are available. The Windows App SDK includes WinUI.
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 complements the Windows SDK. It provides a convenient, OS-decoupled abstraction around the rich catalogue of Windows OS APIs that are already accessible using the Windows SDK. Apps built with Windows App SDK may still use Windows SDK APIs depending on functionality needs. Over time, more Windows SDK functionality will move into the Windows App SDK.
I'm building a new team to develop a Windows-only app. Why should I choose to develop with a native Windows framework like WinUI, WPF, or WinForms?
Here are some reasons to choose a native Windows framework for your Windows-only app:
- Performance: Native Windows frameworks are optimized to leverage modern Windows hardware, providing fast and responsive user experiences.
- Integration: Windows ships with a wide variety of APIs that enable sophisticated experiences only available on Windows. Native frameworks provide deep integration with these features and APIs.
- Native user experience: Native frameworks provide a consistent experience across Windows devices, ensuring that your app looks and works great everywhere.
- Offline support: Native frameworks support offline scenarios, allowing apps to function even without internet connectivity.
- Monetization: Native frameworks are actively maintained and supported by Microsoft, ensuring access to the latest updates and features.
Which framework should I use to leverage Microsoft's latest investments in Windows app development?
If you're building a new Windows-only app, we recommend using WinUI. WinUI is the latest native UI framework for Windows app development and is designed to work across a wide range of Windows devices. It provides a modern and flexible UI framework for creating visually appealing and interactive Windows apps. WinUI is part of the Windows App SDK and works best with the latest versions of Windows.
Can I use Windows App SDK / WinUI in my existing Windows app?
Note that WinUI (a UI framework) ships with the Windows App SDK (a Windows platform development framework).
Generally, WinUI can't be used unless the app is ready to migrate its UI framework entirely. A feature called XAML islands is in development to host WinUI content in other UI frameworks (WPF, Win32).
Elements of the Windows App SDK can often be used in desktop apps, depending on how the existing app was built. UWP apps are not supported by Windows App SDK.
This means WPF/MFC/WinForms apps can use Windows App SDK APIs that are unrelated to WinUI. Examples include App Lifecycle, Windowing, and Toast Notifications.
See Use the Windows App SDK in an existing project for more info.
Do I need to use Visual Studio to build WinUI apps?
Using Visual Studio 2022 version 17.10 or above is strongly recommended for WinUI development. The latest Visual Studio versions offer rich development features like Hot Reload and include a WinUI application development workload that simplifies setup.
Other IDEs and workflows may work, but Visual Studio is currently the only officially supported IDE for WinUI. Note that MSBuild is required to compile XAML or WinUI projects.
What is the difference between WinUI, WinUI 2 and WinUI 3?
WinUI is the latest native UI framework for Windows app development. It provides a modern and flexible UI framework for creating visually appealing and interactive Windows apps. WinUI is part of the Windows App SDK and works best with the latest versions of Windows.
WinUI 2 is a set of UI controls and styles built on top of UWP. It provides a modern look and feel for UWP apps and is designed for Windows 10.
WinUI 3 was the earlier name for WinUI when it first shipped as part of the Windows App SDK.
In summary, WinUI is the latest and most advanced version of the WinUI framework, WinUI 2 is a control library for UWP, and WinUI 3 was an earlier label for WinUI. Use “WinUI” going forward unless specifically referring to WinUI 2.
When I build an app using Windows App SDK and WinUI, am I building a "WinUI app"?
Yes — “WinUI app” is the recommended term. WinUI apps are referred to as “WinUI apps” because WinUI 2 is not a type of app but a set of components used in UWP apps.
Can I incrementally update my UWP app with WinUI 2 controls to WinUI by gradually replacing WinUI 2 components with WinUI components?
No. Windows App SDK can't be used in UWP apps, and WinUI 2 can't be mixed with WinUI. See Migrate from UWP to the Windows App SDK.
How hard is it to migrate a UWP app to WinUI?
Migrating UI components is generally straightforward (for C# and C++/WinRT). Otherwise, migration cost depends primarily on:
- Project file and MSBuild customization: Migration effort varies depending on advanced MSBuild usage.
- .NET API migration: UWP apps using .NET must move to .NET 6 or later. In many cases, adopting .NET 6 is straightforward.
- UI component libraries: Libraries must have versions targeting WinUI.
- If the UWP app is written in the now-superseded C++/CX, some source code porting is required. See Move to C++/WinRT from C++/CX.
For more info, see Migrate from UWP to the Windows App SDK.
If I have an existing UWP app in the Store, can I publish a new packaged WinUI app using the same identifiers?
Yes, upgraded apps can be published without updating the application identity. Users of the old version will be updated to the new version. This applies to desktop apps only. Xbox, HoloLens, and Surface Hub apps cannot migrate to WinUI.
How do I package/distribute my WinUI 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?
No. UI controls can be created in code. However, representing the UI in declarative XAML markup provides many benefits, including an improved developer experience.
- Migrating from UWP to WinUI: Many XAML and UI components can be reused, though some syntax adjustments are required.
- Migrating from WPF to WinUI: Many concepts carry over, but the control set and APIs differ.
Does Visual Studio have a design surface / UI designer for WinUI?
Not yet. This is a known gap in the WinUI developer experience. Tools like XAML Hot Reload can help in many scenarios. Work has started on a Visual Studio UI designer for WinUI in Windows App SDK 1.7, but there is no timeline yet for its release.
Does Windows App SDK include WinUI?
Yes. WinUI ships as 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 built on the same technology?
Not quite. Although WinUI originally started from the WinUI 2 codebase, they are distinct technologies. Both are XAML-based UI frameworks that work across .NET and C++, but WinUI 2 and WinUI are not compatible with each other.
Can I use WinUI without using Windows App SDK?
No. WinUI ships as part of the Windows App SDK.
Can I use WinUI in an unpackaged app?
Yes. All technologies in the Windows App SDK, including WinUI, work in unpackaged apps.
What's the difference between XAML Islands and WinUI?
XAML Islands let you host modern XAML-based controls alongside existing Win32 UI from other frameworks such as WinForms and WPF.
Today, XAML Islands support most system XAML and WinUI 2 controls. See Host WinRT XAML controls in desktop apps (XAML Islands) for more details. Support for hosting WinUI controls is available starting in Windows App SDK 1.4.
If I create a WinUI app, will it 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 or Acrylic backgrounds in apps built with Windows App SDK?
Yes. See Apply Mica or Acrylic materials in desktop apps for Windows 11.
Where can I find WinUI samples?
See Sample and resources. Some notable repositories:
- WindowsAppSDK-Samples: Demonstrates how to use specific Windows App SDK API sets.
- Windows topic-specific samples: Contains a WinUI notes sample used in the Create a WinUI app tutorial.
- WinUI Gallery: Showcases WinUI and Windows App SDK. Also available in the Microsoft Store.
If I have already invested heavily in WPF, should I continue to use WPF or consider migrating to WinUI?
If you've already invested heavily in WPF, you can continue using it for existing apps. WPF is a mature, stable framework widely used to build Windows desktop apps.
Consider using the .NET Upgrade Assistant to migrate .NET Framework WPF apps to the latest .NET platform. It analyzes your codebase and provides guidance on updating it.
If I build a new WPF app, will it look dated compared to other new Windows apps?
When developing a WPF application with .NET 9 or later, you can ensure your app matches the sleek, modern look of Windows 11. The new Fluent theme for WPF introduces a contemporary Windows 11 aesthetic, with integrated Light/Dark mode and system accent color support. This modernizes your app’s appearance and delivers a polished, cohesive user experience.
My team is comfortable building WinForms apps, and it suits our needs. Should we consider migrating to WinUI or another framework?
If WinForms meets your needs and your team is comfortable with it, you can continue using WinForms for existing apps. WinForms is a mature and stable framework widely used for Windows desktop development.
The WinForms team continues to invest in the platform. Some current areas of investment include:
- Async support for common controls
- Dark mode
- Layout flexibility
- Desktop security features such as clipboard access
Cross-platform native development
What are some reasons for building cross-platform, native apps that target Windows?
If you're targeting users across multiple OS platforms, building cross-platform apps with .NET MAUI or React Native can offer several benefits:
- Reach: Cross-platform apps reach a larger audience across different devices and operating systems.
- Code reuse: Reusing code across platforms reduces development time and cost. Building separate apps for Windows, Android, iOS, and macOS can be prohibitively expensive.
- Consistent user experience: Cross-platform frameworks help provide a consistent look and feel across platforms.
- Integration: Cross-platform apps can still integrate with platform-specific services to deliver a comprehensive experience.
Can I be confident that .NET MAUI apps will run well on Windows?
When you build a .NET MAUI app for Windows, the output is a WinUI app. During development, .NET MAUI offers a single .NET experience across platforms, but it generates platform-specific code under the hood. This ensures that .NET MAUI apps perform well on each platform and deliver a native user experience.
How can .NET MAUI provide native device APIs across every platform?
.NET MAUI provides a unified .NET experience across Windows, iOS, Android, and macOS. It abstracts over 60 platform-specific APIs into a single cross-platform API set, covering areas like storage, networking, and device sensors. Additional platform-specific APIs can also be accessed using dependency injection to provide specialized implementations per platform.
Can I start with WinUI, and later integrate .NET MAUI if I eventually want to target cross-platform scenarios?
Not at this time. Although .NET MAUI uses WinUI when running on Windows, teams expecting to target multiple platforms should start with .NET MAUI or React Native for Desktop.
Our team has strong web front-end development skills. Should we consider using React Native for Desktop?
Teams with strong web development experience may want to consider React Native for Desktop. It includes React Native for Windows and macOS. With the “Learn once, write anywhere” approach, existing JavaScript, TypeScript, and React skills can be used to build native Windows and macOS apps.
React Native for Desktop renders UI directly to native primitives, delivering native performance and platform capabilities.
See the React Native for Desktop documentation to get started.
Are any other Windows devices supported by React Native for Desktop?
React Native apps can be deployed to all devices supported by Windows 10 and later, including PCs, tablets, 2-in-1s, Xbox, and mixed reality devices.
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, UWP is recommended. Windows App SDK does not support these platforms. For game development, use the 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, UWP is recommended.
Hybrid and web development
What are hybrid apps, and why should I consider building one?
Hybrid apps blend the best of web and native app development. Their core is built using web technologies like HTML, CSS, and JavaScript, and wrapped in a native container that gives access to certain native platform features and hardware. They can also be distributed through app stores.
The main advantage is that hybrid apps allow you to build a single app that can run on multiple native platforms and on the web, reducing development time and cost. Examples of hybrid app development platforms include:
- Electron for desktop apps
- Ionic for mobile apps
- .NET MAUI Blazor Hybrid for cross-platform apps
How do I build native-feeling progressive web apps (PWAs) on Windows?
See Web development on Windows and Overview of Progressive Web Apps.
What is a .NET MAUI Blazor hybrid app?
With .NET MAUI, Blazor apps can run natively on Windows, iOS, Android, and macOS. This allows you to create hybrid client apps that combine Blazor and .NET MAUI components in a single native client app, with full access to native platform capabilities.
Learn more at ASP.NET Core Blazor Hybrid.
Do the web components of a .NET MAUI hybrid app need to be created with Blazor?
No. Starting with .NET 9, .NET MAUI includes a HybridWebView control that allows hosting other JavaScript-based UIs inside a native app.
This allows you to host Angular, React, Vue, or other HTML/JavaScript apps inside a .NET MAUI app. The hybrid control provides interop between C# and JavaScript, so C# code can call JavaScript functions and vice versa.
Can any other native app types host Blazor hybrid components?
Yes. WPF and WinForms apps can also host Blazor hybrid components, enabling the addition of modern web UI to existing apps. This is not supported for WPF or WinForms apps built on .NET Framework.
Does my entire app need to be a hybrid app, or can I mix and match native and hybrid components?
Native and hybrid components can be mixed within an app. For example, the core of an app may be built with .NET MAUI components while hybrid components provide additional functionality. This allows combining the performance and capabilities of native components with the flexibility and cost efficiency of hybrid components.
What are my choices for building .NET-based web apps that look great on modern browsers on Windows?
Web apps offer the broadest reach of any client app platform. Options for creating beautiful .NET web apps include:
- ASP.NET Core apps with Razor Pages
- ASP.NET Core MVC apps
- ASP.NET Core Blazor apps, with hosting model options:
- Blazor WebAssembly
- Blazor Server
Blazor hosting models can now be configured at the component level, enabling scenarios like hosting a Blazor WebAssembly component within a Blazor Server app.
See the ASP.NET Core documentation for more details.
Choose an approach and understand Microsoft's investments
There are so many framework options for building apps that target Windows! How do I decide?
Windows is an open platform that supports many technologies. Here are some criteria that can help you choose a platform:
- Are you building Windows-first or cross-platform?
- What languages or skills do you already have — .NET, JavaScript, something else?
- Do you need access to Windows-specific APIs?
- Which framework’s capabilities best match your app’s requirements?
- See this table for additional comparison factors.
For many business apps, teams often choose based on existing skills and what the team is most comfortable using.
How do I choose the best development approach for my web app?
Consider the following when choosing a development approach for your web app:
- Blazor is recommended for building front-end web apps with .NET. It lets you build both the front-end and back-end using .NET, saving time and cost, and it’s especially good for enterprise apps.
- JavaScript web apps still make sense if you want to leverage existing JavaScript skills or need to integrate with established JS libraries or frameworks.
- Existing apps using older frameworks like Web Forms, MVC, or Razor Pages remain supported and can continue to be developed and maintained.
Who is building apps with WinUI today?
Many customers are building with WinUI today, including Adobe and Apple:
- Adobe Fresco, a free drawing and painting app.
- Apple’s Apple Music, Apple TV, and Apple Devices apps were built with WinUI and the Windows App SDK.
Microsoft has also built many WinUI apps, such as Windows 11 File Explorer and the Photos app.
Who is building .NET MAUI apps today?
Many customers, including Microsoft, are building cross-platform apps with .NET MAUI. For example, the Microsoft Azure mobile app is built using .NET MAUI.
See more on the .NET customer showcase.
Who is building WPF apps today?
Most of the Microsoft Visual Studio UI is built with WPF. The Visual Studio IDE itself is a major example of a complex, high-performance WPF app.
Who is building Blazor apps today?
GE Digital’s FlightPulse airline system uses Blazor for the backend configuration of everything pilots see, bringing sensor data and analytics directly to pilots to improve safety and efficiency.
See more Blazor customer stories on the .NET site.
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 enables this. See Learn more about XAML Islands.
Packaging, deployment, and updates
What's the difference between apps that are packaged, unpackaged, and packaged with external location?
For definitions of packaged, unpackaged, and packaged with external location apps, see Deployment overview. That topic also explains the advantages and disadvantages of each option.
Will my WinUI app automatically update for end-users?
A WinUI app can be delivered through the Store, an .appinstaller file, or through an existing MSI or setup.exe package. The Store and AppInstaller support automatic updates for end-users who have automatic updates enabled, but MSI/setup.exe apps must provide their own update mechanism.
Can I use Windows App SDK without using MSBuild?
Generally, no. WinUI and the Windows App SDK require MSBuild, which is why Visual Studio is a prerequisite for developing with them. While it is technically possible to build Windows App SDK apps that don't use WinUI with other toolchains, this isn't supported.
Performance and optimization
What can I do to make my Windows app feel great to end-users?
Compatibility
Will my users ever have to update Windows to use my WinUI app?
Users with Windows 10, version 1809 or later can install WinUI apps without updating their OS.
Can I target Arm64 with my WinUI app?
Yes.
Deprecations and migrations
Are UWP / WinUI 2 deprecated?
No. UWP and WinUI 2 are still supported and continue to receive bug, reliability, and security fixes. However, most new features and capabilities are added to WinUI.
UWP support for .NET 9 is available. This option provides a modernization path for UWP apps using the latest .NET version.
The goals of .NET 9 UWP support are:
- Provide a better migration path for developers who want to move to WinUI.
- Remove dependencies on .NET Native so developers can benefit from the latest .NET and C# features.
For more information, see the blog post: Modernize your UWP app with preview UWP support for .NET 9 and Native AOT.
When should I migrate a UWP / WinUI 2 app to WinUI?
UWP developers should not feel pressured to migrate if they are satisfied with UWP and its feature set — for many apps, the right choice may be to stay on UWP.
Apps that want to benefit from the latest Windows platform and .NET investments 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?
Continue using UWP if you're building for Xbox, Surface Hub, or HoloLens.
Is WPF deprecated?
No. WPF is supported, recommended, and continues to receive feature updates. See the WPF roadmap on GitHub.
Is WinForms deprecated?
No. WinForms is supported and continues to receive feature updates. See the Windows Forms Roadmap on GitHub.
Is the Windows Runtime (WinRT) deprecated?
No. WinRT is an application binary interface (ABI) that enables interop across multiple languages. WinRT is the evolution of COM, and the Windows App SDK provides most of its functionality through WinRT APIs.
Release notes
Where can I find release notes for Windows App SDK?
See Stable channel release notes and Preview channel release notes.
Related content
Windows developer