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.
You don't need to rewrite your WPF, Windows Forms, or Win32 app to take advantage of modern Windows features. The Windows App SDK and the broader Windows platform offer modular capabilities you can adopt incrementally, at your own pace.
Note
This article covers adding modern Windows features to your existing desktop app. If you want to modernize your .NET toolchain or C++ compiler, see GitHub Copilot modernization for .NET or the Microsoft C++ porting and upgrading guide.
Migrate your UI framework?
If your goal is to fully modernize your app's UI layer, the recommended path is to migrate to WinUI 3 — the native UI framework for Windows desktop apps. See Create your first WinUI 3 app to get started.
If you want to add Windows features to your existing app framework (WPF, WinForms, or C++ Win32) without changing your UI layer, continue reading.
Choose your approach
The three modernization approaches are independent. You can use one, two, or all three in the same app.
| Approach | What it gives you | Requires packaging? |
|---|---|---|
| WinRT APIs | Direct access to Windows platform APIs (notifications, Bluetooth, share contract, sensors, and more) from any .NET or C++ desktop app | No, for most APIs |
| Windows App SDK | A NuGet package that brings modern Windows development features (windowing, text rendering, resources, and more) to existing apps | No, for most features |
| MSIX packaging | A modern installer with clean uninstall, automatic updates, and package identity; can be added without changing app source code | N/A — packaging is the approach |
Tip
Start with WinRT APIs if you want to call a specific Windows platform API. Add the Windows App SDK when you need its features (DWriteCore, MRT Core, windowing). Add MSIX packaging when you need package identity or want to modernize your installer.
WinRT APIs
Windows Runtime (WinRT) APIs expose Windows platform features such as app notifications, the share contract, Bluetooth, and more. You can call these APIs directly from WPF, Windows Forms, and C++ Win32 apps.
Windows App SDK
The Windows App SDK delivers modern Windows development features as a NuGet package you add to your existing project. You don't need to change your UI framework.
MSIX packaging and package identity
MSIX packaging replaces your existing installer and gives your app package identity. Some Windows features — including background tasks, startup tasks, file associations, and Windows AI Foundry — require package identity at runtime. If you want to keep your existing installer, you can still grant package identity without full MSIX packaging — an approach sometimes called packaging with external location or a sparse package.
- Packaging overview
- Features that require package identity
- Grant identity to a non-packaged app
- Integrate your desktop app with Windows using packaging extensions
- Package your app using single-project MSIX
Framework-specific starting points
| Your framework | Recommended starting point |
|---|---|
| WPF | Use the Windows App SDK in an existing project |
| WinForms | Use the Windows App SDK in an existing project |
| C++ Win32 | Use the Windows App SDK in an existing project |
| C++/WinRT | WinRT APIs for desktop apps |
Feature catalog
The following table lists common modernization features and whether they require the Windows App SDK or package identity.
AI
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| Windows AI Foundry | No | Yes |
UI and text
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| WinUI 3 components in a desktop app | Yes | No |
| Render text with DWriteCore | Yes | No |
| Apply Mica or Acrylic to Win32 apps | No | No |
| Apply rounded corners | No | No |
| Apply Windows themes | No | No |
App lifecycle
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| Background tasks (Windows App SDK) | Yes | Yes |
| Startup tasks | No | Yes |
Windows integration
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| Share sheet integration | No | No |
| Cross Device People API | No | No |
| File associations | No | Yes |
| Windows Widgets | No | Yes |
Security
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| Credential locker | No | No |
| OAuth 2.0 | No | No |
| Fingerprint biometrics | No | No |
| Smart cards | No | No |
| Cryptography | No | No |
Resources
| Feature | Windows App SDK required? | Package identity required? |
|---|---|---|
| MRT Core resource management | Yes | No |
For the full list of features available in desktop apps, see Features for Windows app development.
Next steps
Windows developer