What’s New & Version History
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production; see the section bibliography for the reference material consulted while preparing these pages. |
Desktop development on Windows moves on several clocks at once. The .NET runtime ships every November, the Windows App SDK ships at most every six months, Visual Studio ships a feature update every month and the MVVM Toolkit ships when it is ready. A guide written against one snapshot of those clocks goes stale quickly, so this page records which snapshot the rest of this section was written against, what changed on each clock on the way there, and which habits from older tutorials should be replaced.
The page was written against these versions, verified on 23 October 2026:
-
.NET 10 LTS, latest patch 10.0.13 (13 October 2026), supported until 14 November 2028, with C# 14.
-
.NET 11 at release candidate 2 (11.0.0-rc.2, 13 October 2026, go-live licence). General availability is expected at .NET Conf, 10 to 13 November 2026, so everything said about .NET 11 here can still change.
-
.NET 8 and .NET 9 both leave support on 10 November 2026.
-
Visual Studio 2026 18.11.1 (20 October 2026).
-
Windows App SDK 2.5.1 (16 September 2026), the stable channel.
-
CommunityToolkit.Mvvm 8.4.2 (25 March 2026).
-
Windows 11 and Windows 10; Windows 10 reached end of support on 14 October 2025.
Details of the topics summarised here live on the topic pages of this section, such as Themes & Fluent Design, MVVM Toolkit, WinUI 3 & the Windows App SDK and Windows Forms on .NET. The Microsoft Learn "what’s new" pages are the primary source for the release-by-release notes; each subsection ends with its source link.
The Timeline at a Glance
The diagram places the milestones of the five clocks on one axis.
Read the diagram left to right as a dependency chain: a new .NET release is what makes a new WPF or WinForms feature available, a new Visual Studio version is what lets the designer and the tooling use it, and the Windows App SDK and the MVVM Toolkit are independent NuGet packages that you update on their own schedule.
Release Cadence and Support at a Glance
| Component | Cadence | Support rule |
|---|---|---|
.NET |
One release every November. Even-numbered releases are LTS. |
.NET 10 is LTS until 14 November 2028. .NET 8 and .NET 9 end on 10 November 2026. |
WPF, Windows Forms |
Ship inside the .NET release. |
Follow the .NET support policy of the release you target. |
Windows App SDK |
Stable major releases no more than every six months, plus minor and patch servicing. Preview and experimental channels in between. |
A release is Current while it is the latest stable one, then Maintenance; 2.0 is listed as Current with end of servicing 29 April 2027, and 1.8 as Maintenance until 24 September 2026. |
Visual Studio 2026 |
Feature updates in the second week of each month, servicing releases in between. |
Install the latest servicing build; 18.10.4 (13 October 2026) was a security update. |
CommunityToolkit.Mvvm |
Irregular, driven by Roslyn and .NET changes. |
Open-source package; use the latest 8.4.x. |
Source: Windows App SDK release channels
WPF and Windows Forms: .NET Core 3 to .NET 11
WPF and Windows Forms were never rewritten for .NET; they were ported. The first release that could run them on the cross-platform-capable runtime was .NET Core 3.0 (September 2019, Windows only), followed by .NET Core 3.1 as the first long-term-supported version. .NET 5 (November 2020) dropped the "Core" name, and from .NET 6 onwards every release is a plain, yearly "new version of WPF" and "new version of Windows Forms". The Microsoft Learn index states this directly: each .NET release introduces a new version of WPF.
| .NET release | WPF | Windows Forms |
|---|---|---|
.NET Core 3.0 / 3.1 |
First open-source, Windows-only ports of both frameworks on the new runtime. Designer support for WinForms arrived later. |
Same. The legacy |
.NET 5 |
Rename of the runtime; same frameworks, same projects. |
Same. |
.NET 6 (LTS) |
No WPF-specific what’s-new page exists on Microsoft Learn for .NET 6. |
|
.NET 7 |
Performance work (fewer allocations and boxing), keyboard accessibility for |
PerMonitorV2 scaling improvements, UI Automation for more controls, preview of the new data binding and |
.NET 8 (LTS) |
Opt-in hardware acceleration over RDP, |
Data binding and button commands fully enabled, DPI-unaware designer in VS 2022 17.8, |
.NET 9 |
Fluent theme, |
Experimental dark mode and async forms, multi-select |
.NET 10 (LTS) |
More Fluent controls, unified clipboard, new |
Dark mode and async forms stable, |
.NET 11 (RC) |
Bug fixes only so far. |
Modern visual styles, |
WPF release by release
.NET 7. The release was mostly performance and community fixes: avoiding boxing and heap allocations, reusing
StringBuilder instances, and fixes such as a FocusVisualStyle that could not be overridden globally and a
CommandParameter that invalidated CanExecute. Accessibility gained keyboard shortcuts (Alt+Left/Right to resize
DataGrid and GridView columns, F3 to sort a column) and correct narration of checkable menu items. The page also
states that WPF stays fully supported on .NET Framework but most fixes and all new features go to .NET only.
.NET 8. Two additions: hardware acceleration for apps accessed over Remote Desktop, enabled by setting the
Switch.System.Windows.Media.EnableHardwareAccelerationInRdp property to true in runtimeconfig.json, and the
OpenFolderDialog class in Microsoft.Win32. Before it, a folder picker needed a third-party library or the
WinForms FolderBrowserDialog.
.NET 9. The headline was visual: a Fluent theme for Windows 11, applied either by merging the
PresentationFramework.Fluent resource dictionary or through the ThemeMode property, plus support for the Windows
accent colour through SystemColors.AccentColor* resources. BinaryFormatter was removed from the runtime, which
affected WPF clipboard and drag-and-drop paths that used it. The Fluent theme is described in its own section below.
.NET 10. More controls were restyled for Fluent (DatePicker, GridSplitter, GridView, GroupBox,
Hyperlink, Label, NavigationWindow, RichTextBox, TextBox), several HighContrast crashes and right-to-left
layout bugs were fixed, and WPF and WinForms now share one clipboard implementation. Two new APIs stand out:
-
MessageBoxButtongainedAbortRetryIgnore,RetryCancelandCancelTryContinue, andMessageBoxResultgainedAbort,Retry,Ignore,TryAgainandContinue. -
Gridaccepts a string short form, so five column definitions become a single attribute.
<!-- Before .NET 10: one element per definition -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="300" />
</Grid.ColumnDefinitions>
</Grid>
<!-- .NET 10: the same three columns as a string -->
<Grid ColumnDefinitions="1*, Auto, 300" RowDefinitions="Auto, *" />
Source: What’s new in WPF for .NET 10
.NET 11 RC. The Microsoft Learn page is still titled "What’s new in WPF for .NET 11 RC 1" and lists bug fixes
only: self-contained WPF apps now carry ijwhost.dll so mixed-mode assemblies load, WPF no longer crashes when the
Desktop Window Manager fails and corrects Fluent window backdrop problems on Windows 10, and a
WeakEventTable.Purge enumeration error was fixed. No new WPF APIs are announced. Treat this as provisional until
general availability.
Windows Forms release by release
.NET 6. Templates changed to the new application bootstrap: Main calls ApplicationConfiguration.Initialize(),
and the settings it applies are project properties.
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
<ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
<ApplicationDefaultFont>Segoe UI, 9pt</ApplicationDefaultFont>
</PropertyGroup>
The default value of ApplicationHighDpiMode is SystemAware; the example above sets PerMonitorV2 on purpose, as
Bookshelf Desktop does. The default font of Segoe UI, 9pt had been introduced by .NET Core 3.0, and .NET 6 made it
configurable to ease migration of layouts built around the .NET Framework font of Microsoft Sans Serif, 8.25pt.
.NET 7 and .NET 8. A WPF-style binding engine arrived as a preview in .NET 7 (switched on with
EnablePreviewFeatures) and was fully enabled in .NET 8, together with Button.Command and CommandParameter.
The page for .NET 8 states plainly that XAML is not coming to Windows Forms. This is why a WinForms version of
Bookshelf Desktop can bind a Button to the same RelayCommand as the WPF version while still using a BindingSource
for the list. .NET 8 also made the PerMonitorV2 scaling of minimum and maximum form sizes the default.
.NET 9. Experimental dark mode (Application.SetColorMode with SystemColorMode.Classic, System or Dark,
behind compiler error WFO5001) and experimental async forms (Form.ShowAsync, Form.ShowDialogAsync,
TaskDialog.ShowDialogAsync, behind WFO5002; Control.InvokeAsync was not experimental). BinaryFormatter was
removed and analyzers were added to flag accidental binary serialization.
.NET 10. The two experimental feature sets above lost their compiler errors and became supported, so the
following code compiles without a NoWarn:
namespace Bookshelf.WinForms;
internal static class Program
{
[STAThread]
private static void Main()
{
ApplicationConfiguration.Initialize();
// .NET 9: experimental, needed <NoWarn>WFO5001</NoWarn>. .NET 10: stable.
Application.SetColorMode(SystemColorMode.System);
Application.Run(new MainForm());
}
}
Form.FormScreenCaptureMode (Allow, HideContent, HideWindow; the last needs Windows 10version 2004 or later), a redesigned clipboard shared with WPF that obsoletes some BinaryFormatter-dependent
methods in favour of TryGetData<T>, and the analyzers WFDEV004 to WFDEV006.
.NET 11 RC. The page lists a larger set of changes than WPF, all explicitly not final: VisualStylesMode and
Application.SetDefaultVisualStylesMode for a modernised renderer, KioskModeManager, the
Application.SystemVisualSettings snapshot and SystemVisualSettingsChanged event, FormRevealMode.Deferred, the
ISupportSuspendPainting scope, and Appearance.ToggleSwitch for CheckBox. It also removes the preview-only
TreeView.NodeLeading property. The page warns that rendering behaviour continues to change until GA and advises
layout-based design instead of pixel-perfect design.
WPF Fluent Theme History
The Fluent theme is the one part of WPF whose history spans several releases, and the one most often described wrongly.
| Release | What happened |
|---|---|
.NET 8 and earlier |
WPF ships only the Aero2 theme. Fluent-looking WPF apps used third-party libraries. |
.NET 9 |
The |
.NET 10 |
Fluent coverage extended to more controls; |
.NET 11 RC |
Fixes for Fluent window backdrop and background issues on Windows 10 and for DWM failures. No new theme APIs announced. |
The XAML form needs no suppression, while the code form does:
<Application x:Class="Bookshelf.Desktop.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
ThemeMode="System" />
// Requires <NoWarn>$(NoWarn);WPF0001</NoWarn> in the project file.
Application.Current.ThemeMode = ThemeMode.Dark;
Source: What’s new in WPF for .NET 9
The WinUI 3 counterpart has always been Fluent, and Windows Forms follows a different path (the
SystemColorMode switch above). The comparison across the three stacks is in
Themes & Fluent Design.
CommunityToolkit.Mvvm: 7 to 8.4
The MVVM Toolkit started as Microsoft.Toolkit.Mvvm and was renamed CommunityToolkit.Mvvm. Its major version 8.0
is the dividing line for this section: from 8.0 the package includes Roslyn source generators, so a field annotated
with [ObservableProperty] or a method annotated with [RelayCommand] produces the boilerplate at compile time.
Microsoft Learn states "Starting with version 8.0" for this.
| Version | Date | Change relevant to this section |
|---|---|---|
7.x |
2021 |
|
8.0 |
2022 |
Source generators: |
8.2.0 |
27 April 2023 |
Fixers project, |
8.2.1 and 8.2.2 |
6 July and 25 October 2023 |
Analyzer for |
8.3.0 |
27 August 2024 |
.NET 8 targets, AOT support for WinRT scenarios, trimming feature switches. |
8.4.0 |
12 December 2024 |
|
8.4.1 |
24 March 2026 |
Analyzers and generator moved to Roslyn 5.0, so partial properties no longer need the preview language version; .NET 10 test support. |
8.4.2 |
25 March 2026 |
Fix to the order of a version check in a build target. |
The practical consequence for readers is the shape of the property declaration. The three generations compile to the same behaviour:
using CommunityToolkit.Mvvm.ComponentModel;
namespace Bookshelf.Desktop.ViewModels;
// 7.x style: manual notification
public partial class BookDetailsHandWritten : ObservableObject
{
private string? title;
public string? Title
{
get => title;
set => SetProperty(ref title, value);
}
}
// 8.0 to 8.3 style: annotated field
public partial class BookDetailsFieldStyle : ObservableObject
{
[ObservableProperty]
private string? title;
}
// 8.4 style: annotated partial property (current)
public partial class BookDetailsCurrent : ObservableObject
{
[ObservableProperty]
public partial string? Title { get; set; }
}
Source: ObservableProperty attribute
The partial-property form needs a compiler that understands C# 13 partial properties and, from 8.4.1, the Roslyn 5.0 generator; C# 14 is the baseline of this section, so it is the form used throughout. Projects pinned to an older SDK can keep the field form, which still compiles. Details are in MVVM Toolkit.
Windows App SDK: 1.0 to 2.5
The Windows App SDK is the runtime library behind WinUI 3. Its version history has two eras: a 1.x series whose version numbers did not follow semantic versioning, and the 2.x series that does.
| Version | Released | Status on 23 October 2026 | Notes |
|---|---|---|---|
1.0 |
16 November 2021 |
Out of support (ended 16 November 2022) |
First stable release; latest patch 1.0.4. |
1.1 to 1.7 |
24 May 2022 to 18 March 2025 |
Out of support |
One minor release every few months; 1.7 ended on 18 March 2026. |
1.8 |
9 September 2025 |
Listed as Maintenance, end of servicing 24 September 2026 (already passed) |
Last 1.x release; latest patch 1.8.260921001. |
2.0 |
29 April 2026 |
Current |
First release on Semantic Versioning. 2.0.1 was the stable build. |
2.1 to 2.4 |
2.1.3 on 21 May to 2.4.0 on 13 August 2026 |
Superseded within the 2.x line |
Minor releases under SemVer; mostly additive. |
2.5.1 |
16 September 2026 |
Current, latest stable |
Diagnostic service module extension for Windows Error Reporting; limited-access content-index APIs. |
What SemVer changes in practice, according to the 2.0 notes:
-
The NuGet package version equals the SDK version, so
Microsoft.WindowsAppSDK2.5.1 is Windows App SDK 2.5.1. -
Breaking changes are reserved for major versions. The package family name aligns with the major version, so the next side-by-side major release is 3.0.0.
-
Many fixes ship behind
RuntimeCompatibilityChangeflags, so an app can temporarily opt out of a behaviour change throughRuntimeCompatibilityOptions.DisabledChanges. -
Some 2.x behaviour changes are still visible: the
FileSavePickerno longer creates an empty file when the user chooses a name that does not exist, and theTitleBardefault drag region now includes the empty gaps.
The three channels differ in what you may ship:
| Channel | Purpose | Latest on 23 October 2026 |
|---|---|---|
Stable |
Production, supported APIs only. |
2.5.1, 16 September 2026 |
Preview |
Early look at the next stable release; may break before it stabilises. |
2.0 Preview 2 (2.0.0-preview2), 31 March 2026 |
Experimental |
Prototypes that may change, be removed or never ship. |
2.5.4-experimental, 29 September 2026 |
Ship only the stable channel. Note that App Content Search entered the stable channel in 2.5.1 as a limited-access feature, so it needs a token before the first call. Deployment models (framework-dependent, self-contained, packaged, unpackaged) are covered in WinUI 3 & the Windows App SDK.
Visual Studio 2022 to 2026
Visual Studio 2026 is a new major version (18.x) that installs alongside Visual Studio 2022 (17.x). Version 18.0 was generally available on 11 November 2025, the same day as .NET 10. It follows a monthly feature-update rhythm, with servicing builds between the feature updates.
| Version | Date | Notable content |
|---|---|---|
18.0 |
11 November 2025 |
General availability with .NET 10 support. |
18.7.0 |
9 June 2026 |
PR review in the IDE, Hot Exit for unsaved work, Fonts and Colors moved to Unified Settings. |
18.8.0 |
14 July 2026 |
Agent mode (preview) on the Copilot SDK. |
18.9.0 |
11 August 2026 |
Git submodules and worktrees, model thinking-effort control. |
18.10.0 |
8 September 2026 |
Bring-your-own-key for AI models. |
18.10.3 and 18.10.4 |
29 September and 13 October 2026 |
Servicing; 18.10.4 is a security update for .NET, NuGet and ASP.NET Core CVEs. |
18.11.0 |
13 October 2026 |
Compare a commit or file with the working tree; bulk-resolve merge conflicts. |
18.11.1 |
20 October 2026 |
Current latest servicing build. |
Source: Visual Studio 2026 release notes
For desktop developers the relevant workloads keep their names (".NET desktop development" and "WinUI application development"); the XAML Hot Reload, Live Visual Tree and Live Property Explorer tools continue to work as in Visual Studio 2022. The AI and Git features above are IDE features and do not change how WPF, WinUI or WinForms projects are built. The setup of the workloads is in Development Environment & Tooling.
Current Baseline
The versions below are the ones every page of this section is written against, as of 23 October 2026.
| Item | Version | Notes |
|---|---|---|
.NET 10 |
10.0.13 (13 October 2026), LTS |
Supported until 14 November 2028; C# 14 is the default language version. |
.NET 11 |
RC2 (11.0.0-rc.2, 13 October 2026, go-live) |
General availability expected at .NET Conf, 10 to 13 November 2026. The WPF and WinForms what’s-new pages are still titled "RC 1". |
.NET 8 and .NET 9 |
8.0.32 and 9.0.21, in maintenance |
Both end support on 10 November 2026. |
Visual Studio 2026 |
18.11.1 (20 October 2026) |
Earlier 18.x builds are superseded by servicing releases. |
Windows App SDK |
2.5.1 (16 September 2026), stable channel |
The experimental channel is at 2.5.4-experimental. |
CommunityToolkit.Mvvm |
8.4.2 (25 March 2026) |
8.4.1 shipped on 24 March 2026. |
winapp CLI |
0.7.1, public preview |
Latest GitHub release dated 1 October 2026. |
Microsoft Store Policies |
Version 7.20 (published 15 September 2026) |
Effective 22 October 2026. |
WinGet |
winget-cli 1.29.380 (21 September 2026); winget-create 1.12.13.0 |
Preview channel at winget-cli 1.30.140-preview. |
WinAppDriver |
v1.2.1 (5 November 2020), latest stable |
The newest release overall is the pre-release v1.2.99 (1 July 2021); the project is unmaintained. |
Microsoft.Xaml.Behaviors.Wpf |
1.1.161 |
Used where behaviours are shown. |
Source: .NET support policy and Windows App SDK release channels
Outdated Idioms and Their Current Replacements
Tutorials written between 2012 and 2022 teach patterns that still compile but are no longer the recommended shape. The table lists the most common, with the release that made the replacement possible.
| Outdated idiom | Current code | Since |
|---|---|---|
Hand-written |
|
MVVM Toolkit 8.0 (fields), 8.4 (partial properties) |
|
|
MVVM Toolkit 8.0 |
|
|
MVVM Toolkit 7 and 8 |
|
|
.NET 6 |
Third-party dark-mode hacks in WinForms |
|
Stable in .NET 10 |
|
|
Stable in .NET 10 |
|
|
.NET 9 (WinForms) |
Folder picker through |
|
.NET 8 |
|
JSON with |
Removed in .NET 9 |
|
|
WPF in .NET 10 |
Custom styles to imitate Windows 11 in WPF |
|
.NET 9 |
|
SDK-style project, |
.NET Core 3 / .NET 5 and later |
|
|
Rename in the 7.x to 8.0 transition |
WinUI 3 on Windows App SDK 1.x with the |
Windows App SDK 2.x (SemVer) |
2.0, April 2026 |
|
|
Newer Visual Studio 2022 and 2026 builds |
Pitfalls
-
Dates and statuses move. .NET 11 is a release candidate; its two "what’s new" pages carry an "RC 1" title while the runtime is already at RC2. Re-read them after general availability.
-
No WPF page for .NET 6. The Microsoft Learn index of WPF changes begins at .NET 7, so the notes here about WPF in .NET Core 3.0, .NET 5 and .NET 6 are intentionally short.
-
Experimental does not mean absent. In .NET 9 the WinForms dark-mode and async APIs compiled only after suppressing WFO5001 or WFO5002, and WPF
ThemeModeset from code still raises WPF0001. Check the diagnostics before assuming an API is stable. -
Preview and experimental Windows App SDK packages are not for production. The channels page marks both as unsupported.
-
Support ends are dated. .NET 8 and .NET 9 leave support on 10 November 2026, and Windows App SDK 1.8 reaches the end of servicing on 24 September 2026, so by this page’s date it is already past it; plan the move to .NET 10 and Windows App SDK 2.x.
-
Years of older MVVM Toolkit releases are approximate. The release page shows only a day and a month; the years in the table above are inferred from the sequence of releases.
Summary
Use .NET 10 LTS with C# 14, Visual Studio 2026 18.11.1, Windows App SDK 2.5.1 from the stable channel and
CommunityToolkit.Mvvm 8.4.2. Treat .NET 11 as a preview until November 2026. In WPF use ThemeMode, OpenFolderDialog
and the Grid short form; in Windows Forms use ApplicationConfiguration.Initialize(), SetColorMode and the async
form APIs; in view models use partial-property [ObservableProperty] and [RelayCommand]. Retire BinaryFormatter,
Messenger.Default and hand-written command classes. Because Windows App SDK 2.x follows SemVer, upgrades inside
the 2.x line should not break your code, whereas the jump to 3.0 will be the next breaking one.