GitHub

Windows App SDK 2.4.0

Windows App SDK 2.4.0

Windows App SDK 2.4.0 is the latest stable release on the 2.x line, adding expanded input support, more precise LanguageModel response statuses, and targeted reliability fixes across input, Storage Pickers, MRT Core, app runtime isolation, composition, and XAML tooling.

What's new in WinAppSDK 2.4.0:

  • Expanded input support. WinUI 3 apps can now use operating system touchpad and mouse haptics through Windows.Devices.Haptics, along with touchpad single-finger panning, when supported by the operating system and hardware.
  • More precise LanguageModel response statuses. The new LanguageModelResponseStatus.UnsupportedLanguage and LanguageModelResponseStatus.LanguageMismatch values let apps distinguish unsupported-language and input/output-language mismatch conditions from generic errors.

Bug fixes:

Bug Fix Runtime Compatibility Change
Fixed a crash that could occur when a touch or pen contact left a scrollable area with precise timing. InputPointerSource_DepartingScrollInputCrashFix
Fixed an issue where the Storage Pickers left the calling WinUI app window without keyboard focus after the file dialog closed. The app now restores its previous focus. See GitHub issue microsoft/WindowsAppSDK#6505. StoragePickers_RestoreFocusAfterDialogCloses
Fixed a regression where MrmGetFilePathFromName returned ERROR_FILE_NOT_FOUND when the PRI file didn't exist instead of returning the documented fallback path. See GitHub issue microsoft/WindowsAppSDK#5940. ResourceManager_RestoreDefaultFallbackPath
Fixed an issue where MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY could be inherited by child processes, disrupting MRT Core and catalog lookups. See GitHub issue microsoft/WindowsAppSDK#5987. WindowsAppRuntime_BaseDirectoryIsolation
Fixed a crash when apps using the System Composition Engine called VisualInteractionSource.TryRedirectForManipulation. N/A, operating system composition bridge fix
Fixed the access modifier on the generated C# entry point helper when DISABLE_XAML_GENERATED_MAIN is defined. See GitHub issue microsoft/microsoft-ui-xaml#11245. N/A, build-time tooling change

To see everything that's new and changed, see the full Windows App SDK 2.4.0 release notes.

Try it out

  • Download the 2.4.0 NuGet package to use WinAppSDK 2.4 in your app.
  • Download and update the WinUI Gallery to see the WinUI 3 updates firsthand.

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

2.3.2-experimentalA 🧪

Pre-release

Windows App SDK 2.3 Experimental A (2.3.2-experimentalA) 🧪

Windows App SDK 2.3 Experimental A is the latest experimental release, headlined by new DPI-aware window sizing from XAML, a substantial round of App Content Index indexing and reliability improvements, and additional Windows AI and speech APIs. It builds on the Windows App SDK 2.3.1 stable release and adds the experimental-only work described below.

What's new in WinAppSDK 2.3 Experimental A:

  • Window.Width and Window.Height. New properties give apps a DPI-aware way to get and set a window's size in logical (client) pixels directly from code or markup, without reaching through Window.AppWindow and doing manual logical-to-physical DPI conversion. Companion Window.MinWidth, Window.MinHeight, Window.MaxWidth, and Window.MaxHeight properties constrain the window's size.
  • App Content Index improvements. The experimental App Content Index APIs add faster batch indexing via AppContentIndexer.BatchAddOrUpdate, direct indexing of bitmap and image-stream content (with OCR and semantic options), static ranking boosts for individual content items or regions, ICU-based multilingual tokenization, and automatic recovery from index corruption. Indexing and query paths are also substantially faster, with more stable lexical ranking.
  • Structured JSON generation. A new LanguageModel.GenerateStructuredJsonResponseAsync API lets apps generate structured JSON output from the on-device language model, making it easier to get typed, machine-readable results back from a prompt.
  • Speech recognition cleanup. The experimental SpeechAudioProvider now implements IClosable, so apps can deterministically release the provider with Close/Dispose when they finish streaming audio.

To see everything that's new and changed, see the full Windows App SDK 2.3 Experimental A release notes.

Try it out

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 1.8.11 (1.8.260804001)

Windows App SDK 1.8.11 (1.8.260804001)

WinAppSDK 1.8.11 is the latest stable servicing release for 1.8, with fixes for Storage Picker focus restoration, MRT Core fallback paths, and Windows App Runtime base-directory isolation.

Bug fixes:

Bug Fix Runtime Compatibility Change
Fixed an issue where the Storage Pickers (FileOpenPicker, FileSavePicker, and FolderPicker) left the calling WinUI app window without keyboard focus after the file dialog closed. The app now restores its previous focus. See GitHub issue microsoft/WindowsAppSDK#6505. StoragePickers_RestoreFocusAfterDialogCloses
Fixed a regression where MrmGetFilePathFromName returned ERROR_FILE_NOT_FOUND when the PRI file didn't exist instead of returning the documented fallback path. See GitHub issue microsoft/WindowsAppSDK#5940. ResourceManager_RestoreDefaultFallbackPath
Fixed an issue where MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY could be inherited by child processes, disrupting MRT Core and catalog lookups. See GitHub issue microsoft/WindowsAppSDK#5987. WindowsAppRuntime_BaseDirectoryIsolation

To see everything that's new and changed, see the full Windows App SDK 1.8.11 release notes.

Try it out

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 2.3.1

Windows App SDK 2.3.1

Windows App SDK 2.3.1 is the latest stable release on the 2.x line, with a new structured JSON output API for Phi Silica, the XamlOptionalChanges API for opting into XAML breaking changes, an unstable CompositionEngine Limited Access Feature, Video Super Resolution improvements, ARM64EC support for Windows ML, a broad set of XAML performance optimizations, and a batch of reliability fixes.

What's new in WinAppSDK 2.3.1:

  • Structured JSON output for Phi Silica. The new LanguageModel.GenerateStructuredJsonResponseAsync API generates language-model responses constrained to a caller-supplied JSON Schema, so apps get well-formed, schema-conformant output instead of free-form text they have to parse themselves.
  • XamlOptionalChanges. A new API that lets apps opt into optional breaking changes before XAML initialization. In the same release, the DISABLE_XAML_GENERATED_MAIN preprocessor constant now renames the generated main() method (C#: XamlGeneratedProgram.XamlGeneratedMain(); C++/WinRT: wXamlGeneratedMain()) instead of removing it, so a custom main() can invoke the default implementation. See PR microsoft/microsoft-ui-xaml#11110.
  • CompositionEngine (Limited Access Feature). A new, unstable Limited Access Feature that lets apps opt into using the OS as the engine for the Composition APIs.
  • Video Super Resolution improvements. Fixed NPU detection, added CPU support, and improved performance for Video Super Resolution.
  • Windows ML: ARM64EC support. Windows ML now supports ARM64EC, alongside a fix to execution-provider enumeration in certain scenarios.
  • XAML performance optimizations. This release adds a broad set of startup, styling, and resource-lookup optimizations. Several are opt-in through the DefaultStyleOptimizations and OptimizeApplyStyles XamlChangeIds, including optimized XamlControlsResources styles, a lighter FontIcon/BitmapIcon visual tree, and faster ThemeResource and ResourceDictionary lookups.
  • AI IntelliSense documentation. Added IntelliSense documentation for the stable APIs in the Microsoft.WindowsAppSDK.AI NuGet package.

Bug fixes:

Bug Fix Runtime Compatibility Change
Fixed ApplicationData.GetForUnpackaged().LocalSettings() opening a registry key at a roaming path (HKCU\SOFTWARE\publisher\product) instead of a machine-local one, so unpackaged app settings now persist in the correct location. See GitHub issue microsoft/WindowsAppSDK#6559. ApplicationData_GetForUnpackaged_LocalSettings
Fixed a crash that could repeatedly bring down backgroundTaskHost.exe when a background task had no stored CLSID, and added graceful handling when CoCreateInstance fails. See GitHub issue microsoft/WindowsAppSDK#5870. UniversalBGTask_RunCrash
Fixed windowed and non-windowed flyouts appearing misaligned (about one item-height above the parent item) for side placements when they open upward near the bottom of the screen. Flyout_SidePlacementFlipUpAlignmentFix
Fixed a crash in MediaPlayerPresenter when the GPU device is lost during media playback event handling. MediaPlayerPresenter_DeviceLostCrash
Fixed a use-after-free crash in CPopupRoot::ReplayPointerUpdate when a popup is closed synchronously during pointer-event replay. CPopupRoot_ReplayPointerUpdateCrash
Fixed a crash (null LayoutState dereference) in UniformGridLayout and FlowLayout that could occur when a collection change was raised on an ItemsRepeater that was no longer loaded. UniformGridLayoutFlowLayout_OnItemsChangedNullLayoutStateCrash

To see everything that's new and changed, see the full Windows App SDK 2.3.1 release notes.

Try it out

  • Download the 2.3.1 NuGet package to use WinAppSDK 2.3 in your app.
  • Download and update the WinUI Gallery to see the WinUI 3 updates firsthand.

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 1.8.10 (1.8.260710003)

Windows App SDK 1.8.10 (1.8.260710003)

WinAppSDK 1.8.10 is the latest stable servicing release for 1.8, with a reliability fix for Microsoft.UI.System.ThemeSettings.

Bug fixes:

Bug Fix Runtime Compatibility Change
Fixed an issue where Microsoft.UI.System.ThemeSettings could crash an app if it was destroyed on a background thread, for example when destroyed by the .NET garbage collector. ThemeSettings_OffThreadDestructorFix

To see everything that's new and changed, see the full Windows App SDK 1.8.10 release notes.

Try it out

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

2.2 Experimental 9 (2.2.2-experimental9) 🧪

Pre-release

Windows App SDK 2.2 Experimental 9 (2.2.2-experimental9) 🧪

Windows App SDK 2.2 Experimental 9 is the latest experimental release. It ships alongside Windows App SDK 2.2.0 stable and generally brings over the changes from that release; the highlights below describe the experimental-only additions.

What's new in WinAppSDK 2.2 Experimental 9:

  • Language Model APIs on GPU [Experimental]. The Language Model APIs now run on non-Copilot+ PCs equipped with a supported GPU, bringing local language model capabilities to a broader range of Windows 11 devices. Supported hardware includes NVIDIA GeForce RTX 30 series and newer with 6+ GB vRAM. GPU inference requires Developer Mode to be enabled and a Windows Insider Experimental Channel build. The GPU model is not pre-installed; it is downloaded on demand via EnsureReadyAsync through Windows Update. Apps should check GetReadyState and display a consent dialog before triggering the download. Users can manage the model at Settings > System > AI Components. For responsible AI guidance, see the new Transparency Note: Language Model APIs on Non-Copilot+ PCs.
  • Speech Recognition APIs [Experimental]. New on-device speech recognition APIs in Microsoft.Windows.AI.Speech enable both batch and streaming speech-to-text. BatchRecognition recognizes a complete audio source in a single call, and StreamingRecognition raises Recognizing and Recognized events. Audio can be sourced from a device (AudioConfiguration.FromAudioDevice), file (FromFile), input stream (FromStream), or pushed by the caller via SpeechAudioProvider (16 kHz, 16-bit, single-channel PCM). The on-device model is managed via SpeechRecognitionModel.EnsureReadyAsync / TryCreateAsync, with download and load progress reported through SpeechRecognitionModelProgress.
  • New NpuType API. A new Microsoft.Windows.Workloads.NpuType enum surfaces the NPU class on the current device (for example, Qnn, Lnl, Stx, Win365, Unknown, None), so apps and Workloads infrastructure can route AI workloads to the appropriate execution path.

This release also rolls forward all changes from the 2.2.0 stable release: the new Microsoft.Windows.AI.Video.VideoScaler Video Super Resolution API, the new Microsoft.Windows.Storage.ApplicationData.GetForUnpackaged() entry point for unpackaged apps, the new XamlBindingHelper boxing-free setter overloads, and the WinUI / Windows ML reliability fixes shipped in 2.2.0.

New or updated APIs (since 2.1 Experimental 8):

Microsoft.UI.Xaml
    Setter
        ValueProperty
Microsoft.UI.Xaml.Markup
    XamlBindingHelper
        SetPropertyFromColor
        SetPropertyFromCornerRadius
        SetPropertyFromThickness
Microsoft.Windows.AI.Speech
    AudioConfiguration
    BatchRecognition
    SpeechAudioProvider
    SpeechContract
    SpeechRecognitionModel
    SpeechRecognitionModelProgress
    SpeechRecognitionModelProgressStatus
    SpeechRecognitionModelResult
    StreamingRecognition
    StreamingRecognizedEventArgs
    StreamingRecognizingEventArgs
Microsoft.Windows.AI.Text.Experimental
    LanguageModelExperimental
        CompressPromptAsync
        GenerateResponseAsync
        GenerateResponseFromEmbeddingsAsync
    LanguageModelOptionsExperimental
        PreferredRetentionRatio
Microsoft.Windows.Workloads
    NpuType

Try it out

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 2.2.0

Windows App SDK 2.2.0

WinAppSDK 2.2.0 is the latest stable servicing release for 2.0, with a new Windows AI video upscaling API, a first-class ApplicationData entry point for unpackaged apps, additions to XamlBindingHelper, and a batch of WinUI and Windows ML reliability fixes.

What's new in WinAppSDK 2.2.0:

  • Video Super Resolution AI API. The new Microsoft.Windows.AI.Video.VideoScaler API delivers real-time video enhancement through advanced AI upscaling, optimized for streams featuring people in conversation. It enables developers to provide sharper, clearer visuals across conferencing, streaming, and editing platforms, even under poor network conditions. The API supports customization of output resolution, frame rate, and regions of interest, with compatibility for multiple video formats including BGR, RGB, and NV12. VideoScaler is disposable, and includes a capability check so apps can validate VSR support at runtime. Explicit Windows ML initialization is not required.
  • New ApplicationData API for unpackaged apps. Microsoft.Windows.Storage.ApplicationData.GetForUnpackaged() gives unpackaged apps a first-class WinRT entry point to per-user / per-machine application data, matching the surface previously available only to packaged apps. This simplifies future packaged ↔ unpackaged migration and removes the need for Registry-API workarounds.
  • New XamlBindingHelper APIs. Added boxing-free value setter overloads to XamlBindingHelper (SetPropertyFromThickness, SetPropertyFromCornerRadius, SetPropertyFromColor) and exposed the Setter.ValueProperty dependency property.

Bug fixes:

Bug fix Runtime Compatibility Change
Fixed a crash in RenderTargetBitmap when the target element leaves the visual tree (for example, a popup closes) before PreCommit completes. RenderAsync now returns E_ABORT instead of crashing. RenderTargetBitmap_PreCommitCrashOnTreeLeave
Fixed a use-after-free crash in ScrollView when the control is destroyed while its hide-indicators timer tick is still pending. See microsoft/microsoft-ui-xaml#10514. ScrollView_HideIndicatorsTimerUseAfterFree
Fixed a potential crash in Microsoft.UI.Xaml.dll!DirectUI::DXamlCore::GetPeerPrivate caused by attempting to access an object scheduled to be freed. GetPeerPrivate_UseAfterFree
Fixed an issue where Microsoft.UI.System.ThemeSettings could crash an app if it was destroyed on a background thread (for example, when destroyed by the .NET garbage collector). ThemeSettings_OffThreadDestructorFix
Fixed a crash that could occur on certain devices when active touch contacts were canceled by input hardware, such as when pen input overrides them. InputPointerSource_PointerCancelCrashFix
Fixed an issue where sparse-packaged apps were unable to discover module-specific PRI files. See microsoft/WindowsAppSDK#6375. MRTCore_SparsePackagedPriFallback
Fixed a string ownership bug when using the Flat-C Windows ML Catalog API. WindowsMLFlatCCatalog_CallbackStringOwnership
Fixed a potential issue in Windows ML during process shutdown. WindowsML_ComRundownFix
Fixed potential COM initialization and teardown issues in Windows ML. WindowsML_ComInitializationFix

New or updated APIs (since 2.1.3):

Microsoft.UI.Xaml
    Setter
        ValueProperty
Microsoft.UI.Xaml.Markup
    XamlBindingHelper
        SetPropertyFromColor
        SetPropertyFromCornerRadius
        SetPropertyFromThickness
Microsoft.Windows.AI.Video
    VideoScaler
    VideoScalerOptions
    VideoScalerResult
    VideoScalerStatus
Microsoft.Windows.Storage
    ApplicationData
        GetForUnpackaged

Try it out

  • Download the 2.2.0 NuGet package to use WinAppSDK 2.0 in your app.
  • Download and update the WinUI Gallery to see the WinUI 3 updates firsthand.

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 1.8.9 (1.8.260529003)

Windows App SDK 1.8.9 (1.8.260529003)

WinAppSDK 1.8.9 is the latest stable servicing release for 1.8, with two reliability fixes in WinUI input and items controls.

Bug fixes:

Bug fix Runtime Compatibility Change
Fixed a memory leak in ItemsRepeater where recycled elements were never garbage collected due to a reference cycle through the RecyclePool, which could also cause crashes in InvalidateChildrenMeasure. ItemTemplateWrapper_RecyclePoolLeak
Fixed a potential crash when releasing touch contacts in a ScrollViewer before scrolling. InputPointerSource_TouchUpScrollCrashFix

Try it out

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

2.1 Experimental 8 (2.1.4-experimental8) 🧪

Pre-release

Windows App SDK 2.1.4-Experimental8 (2.1.4-experimental8) 🧪

Windows App SDK 2.1 Experimental 8 ships alongside Windows App SDK 2.1.3 stable. It generally brings forward the changes in 2.1.3 (TitleBar custom drag-region APIs, the Phi Silica LoRA API on the stable surface, AICapabilities.HasAICapability, expanded Windows ML execution-provider support, ONNX Runtime 1.24.6, and the 2.1.3 bug fix batch) and adds one experimental-only refinement to the Phi Silica structured JSON output API.

What's new in WinAppSDK 2.1 Experimental 8:

  • Strongly typed result and status for structured JSON responses [Experimental]. LanguageModelExperimental.GenerateStructuredJsonResponseAsync (introduced in 2.0 Experimental 7) now returns a dedicated GenerateStructuredJsonResponseResult type with a GenerateStructuredJsonResponseStatus property, instead of the generic LanguageModelResponseResult / LanguageModelResponseStatus pair. The new status enum is specific to schema-constrained generation: it includes a ResponseInvalidJson value for cases where the model output did not satisfy the requested JSON schema, separate from generic language-model response failures.
  • As part of that split, the ResponseInvalidJson value has been removed from the stable LanguageModelResponseStatus enum. Apps that handled ResponseInvalidJson from LanguageModelResponseStatus should move that handling onto the new GenerateStructuredJsonResponseStatus returned by GenerateStructuredJsonResponseAsync.

Brought forward from 2.1.3 stable

This experimental release also rolls forward the 2.1.3 stable changes, including the new TitleBar custom drag-region APIs, the Phi Silica LoRA API on the stable surface, AICapabilities.HasAICapability, the Windows ML execution-provider improvements, the ONNX Runtime 1.24.6 bump, and the full 2.1.3 bug fix batch. See the Windows App SDK 2.1.3 release notes for details.

To see everything that's new and changed, see the full Windows App SDK 2.1 Experimental 8 release notes.

Try it out

Getting Started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Windows App SDK 2.1.3

Windows App SDK 2.1.3

Windows App SDK 2.1.3 is the latest stable servicing release on the 2.x line, with new TitleBar drag-region APIs in WinUI, the LoRA API for Phi Silica promoted to the stable surface, a new Copilot+ PC detection API, expanded Windows ML execution-provider support, an ONNX Runtime update, and a batch of reliability fixes.

What's new in WinAppSDK 2.1.3:

  • TitleBar custom drag regions. TitleBar now recursively walks TitleBar.Content and automatically excludes interactive controls from the drag region while keeping empty gaps draggable by default. Three new APIs (TitleBar.IsDragRegion attached property, TitleBar.AutoRefreshDragRegions, and TitleBar.RecomputeDragRegions()) give developers explicit control when the default behavior isn't sufficient. See PR microsoft/microsoft-ui-xaml#10936 and tracking issue microsoft/microsoft-ui-xaml#10421.
  • Phi Silica LoRA API on the stable surface. Developers can now fine-tune the on-device Phi Silica language model with their own LoRA adapters from the stable API surface, using LanguageModelLowRankAdapter.CreateFromPath and LanguageModelOptions.LowRankAdapter. See Phi Silica LoRA for details.
  • AICapabilities.HasAICapability is a new API that lets third-party applications determine whether the device is a Copilot+ PC.
  • Windows ML execution-provider improvements. This release adds support for multiple execution providers within a single MSIX package, discovery of execution providers delivered as framework packages, and a new selection mode for more flexible deployment configurations.
  • The version of ONNX Runtime has been updated to 1.24.6.

Bug fixes:

Bug Fix Runtime Compatibility Change
Fixed a memory leak in ItemsRepeater where recycled elements were never garbage collected due to a reference cycle through the RecyclePool, which could also cause crashes in InvalidateChildrenMeasure. ItemTemplateWrapper_RecyclePoolLeak
Fixed a crash where an implicit Show/Hide animation completion callback could access a destroyed CUIElement, causing an access violation. The callback now uses a weak reference to safely handle the case where the element is destroyed before the animation completes. Animation_FixImplicitHideAnimationCrash
Fixed an issue where windowed popup content opened in a XAML Island did not respect OverrideScale, causing content to appear oversized and clipped. See GitHub issue microsoft/microsoft-ui-xaml#11000. Popup_WindowedPopupOverrideScale
Fixed a fail-fast crash caused by re-entrant dispatch during cross-apartment COM release operations in UIAffinityReleaseQueue::DoCleanup. UIAffinityReleaseQueue_PauseDispatchDuringCleanup
Fixed ambiguous module lookup in WinUI when multiple modules with the same name are loaded in the same process. GetModuleHandleW has been replaced with GetModuleHandleExW so the correct module is resolved by address. GetModuleHandle_FixAmbiguousModuleLookup
Fixed an integer divide-by-zero crash in UniformGridLayout::GetMajorSize when an ItemsRepeater is laid out in an available width narrower than one item's minor stride. UniformGridLayout_GetItemsPerLineDivideByZero
Fixed a potential crash when a package has been uninstalled prior to being processed. PackageManager_FixCrash
Fixed an issue where GetReadyState could return incorrect error codes (for example, DisabledByUser or NotSupportedOnCurrentSystem) when required packages were not yet deployed. The API now correctly reports NotReady in this scenario, improving diagnostic clarity. ModelInitialization_GetReadyStateAvailabilityGuard
Fixed an issue where XAML compiler errors were silently lost when using dotnet build, showing only MSB3073: exited with code 1 instead of the actual error messages. See GitHub issue microsoft/microsoft-ui-xaml#9813. N/A, build-time XAML compiler tooling change

To see everything that's new and changed, see the full Windows App SDK 2.1.3 release notes.

Try it out

  • Download the 2.1.3 NuGet package to use WinAppSDK 2.1 in your app.
  • Download and update the WinUI Gallery to see the WinUI 3 updates firsthand.

Getting started

To get started using Windows App SDK to develop Windows apps, check out the following documentation:

Read the original on github.com ↗