Edit

Use modern Windows features in desktop apps

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.

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