Platform Map
Windows App SDK is the modern Windows desktop API layer. WinUI 3 is the native UI layer inside that stack.
flowchart LR
app["Your desktop app"] --> ui["WinUI 3"]
app --> core["App logic"]
ui --> wasdk["Windows App SDK"]
app --> webview["WebView2 optional"]
wasdk --> win32["Win32 and WinRT APIs"]
wasdk --> runtime["Windows App Runtime"]
app --> msix["MSIX package identity"]
msix --> store["Microsoft Store optional"]
runtime --> os["Windows 10 1809+ or Windows 11"]
What Each Piece Does
| Piece | Role |
|---|---|
| Windows App SDK | NuGet-delivered API surface for modern Windows desktop apps |
| WinUI 3 | XAML UI framework and control set for native Windows desktop UI |
| Windows SDK | OS headers, metadata, tooling, and lower-level Windows APIs |
| Windows App Runtime | Runtime packages that framework-dependent apps rely on |
| MSIX | Packaging, identity, install/uninstall, update, Store alignment |
| WebView2 | Embedded Microsoft Edge web runtime for web content inside native apps |
| Microsoft Store | Distribution, hosting, Store signing for MSIX, certification, analytics |
Mental Model
Use WinUI 3 for the app shell and native screens. Use Windows App SDK APIs for app lifecycle, windowing, notifications, packaging-aware deployment, and modern Windows integration. Use WebView2 only for web content that truly needs a browser engine.
WPF, WinForms, and Win32 can also consume parts of Windows App SDK. They do not become WinUI 3 apps automatically.
Boundary Rules
- WinUI 3 uses
Microsoft.UI.Xaml, notWindows.UI.Xaml. - Window management uses
Microsoft.UI.Windowing.AppWindowand HWND interop, not UWPApplicationView. - Packaged apps have package identity. Unpackaged apps do not unless a chosen model creates identity.
- WebView2 is a separate runtime and security boundary.