Last week, Microsoft has released .NET 11 Release Candidate 1, the first release candidate of the .NET 11 cycle. The release ships with a go-live support license, so teams can use it in production applications. As stated in the announcement, .NET 11 RC1 is supported in the new Visual Studio 2026 Insiders release and in Visual Studio Code with the C# Dev Kit.
Release Candidate 1 makes C# 15 the default language version for projects that target .NET 11. According to the C# release notes, the version stabilizes the features added during the preview cycle, including collection expression arguments, union types, non-virtual static interface members, closed class hierarchies, labeled break and continue, and extension indexers.
Union types no longer require the preview language setting. Roslyn now uses the final CSharp15 names, and a new API exposes the cases of a union to analyzers. Unsafe Evolution stays a preview feature with its own flag, and RC1 allows await inside an unsafe context.
F# 11 is also the default language version. Record spreads and direct delegate construction are stabilized, and string interpolation now compiles to String.Concat instead of the reflection-based printf engine, which, as described in the F# release notes, makes it work with trimming and Native AOT. The release adds reflection-free ToString output for records and unions, support for the inheritdoc and include documentation tags, and a new Async.RunSynchronouslyImmediate function.
In the SDK, dotnet test can now run test projects that target Android, iOS, macOS, and Mac Catalyst, with new project templates for each. New run-level options set a timeout, stop a run after a number of failures, and give each test application its own results directory.
As reported in the SDK notes, container publishing can produce the same image digest across builds when SOURCE_DATE_EPOCH is set, and it skips uploads when the image manifest already exists in the target registry.
ASP.NET Core finalizes the SignalR authentication refresh APIs for the server and the .NET client, and adds the same support to the TypeScript client. Blazor Server circuits now pick up a refreshed identity without reconnecting.
OpenAPI documents mark obsolete operations, types, and properties as deprecated, and validation localization moves from a preview API to resource-name conventions. According to the release, the package for Device Bound Session Credentials remains experimental and will stay prerelease throughout .NET 11.
.NET MAUI extends dotnet test to mobile and desktop targets and adds TabbedPage badges, explicit SwipeItem colors, themed splash screens, and, as described in the MAUI notes, faster and smaller Android builds.
Community reaction in the Reddit discussion was mostly practical. Several developers reported that moving an existing codebase to .NET 11 took little more than an SDK install and a few project file edits, and one commenter said the go-live license was enough to move containers into production.
Another said closed class hierarchies were the reason for leaving the long-term support track. The main criticism concerned union types, which several commenters said do not round-trip through System.Text.Json because the serialized output carries no type discriminator. Jon Galloway, from Microsoft's .NET team, replied in the thread that the release posts list changes since the previous preview rather than since .NET 10.
Other changes in this release are file-based program support in dotnet format, TLS channel binding for Negotiate authentication, and finalized Blazor browser option names.
For interested readers, the full release notes for the SDK, C#, F#, ASP.NET Core, and .NET MAUI are available on GitHub repository.