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

PieceRole
Windows App SDKNuGet-delivered API surface for modern Windows desktop apps
WinUI 3XAML UI framework and control set for native Windows desktop UI
Windows SDKOS headers, metadata, tooling, and lower-level Windows APIs
Windows App RuntimeRuntime packages that framework-dependent apps rely on
MSIXPackaging, identity, install/uninstall, update, Store alignment
WebView2Embedded Microsoft Edge web runtime for web content inside native apps
Microsoft StoreDistribution, 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, not Windows.UI.Xaml.
  • Window management uses Microsoft.UI.Windowing.AppWindow and HWND interop, not UWP ApplicationView.
  • Packaged apps have package identity. Unpackaged apps do not unless a chosen model creates identity.
  • WebView2 is a separate runtime and security boundary.