NewsProgramming

.NET 11 Ships November 10 — Same Day .NET 8 and 9 Lose Support

Calendar showing November 10 with .NET 11 logo launching while .NET 8 and .NET 9 logos fade, representing end of support deadline
.NET 11 ships November 10, 2026 — the same day .NET 8 and .NET 9 lose support

On November 10, Microsoft is doing two things at once: shipping .NET 11 and pulling support for both .NET 8 and .NET 9. The same Patch Tuesday that brings C# 15 union types and a 9% throughput boost also marks the day any future CVE against .NET 8 or 9 goes permanently unpatched. If your services are on either version, you have eight days to get moving.

The Support Cliff Is Real

.NET 8 was an LTS release — three years of support from its November 2023 ship date. That clock runs out November 10. .NET 9, an STS release from November 2024, ends the same day on its 18-month schedule. After that date, Microsoft stops issuing security patches, bug fixes, or any CVE responses for either version. Your app keeps running. The next exploit discovered in the runtime does not get fixed.

Teams that held on to .NET 8 under the assumption that LTS means “safe for a while longer” are not wrong — it did. But “a while” is now measured in days, not quarters. The calendar didn’t sneak up on anyone, but plenty of teams treat EOL dates as someone else’s problem until they aren’t.

Which Version to Target: .NET 10 or .NET 11

This is the real decision. .NET 10 is an LTS release (November 2025 through November 2028). .NET 11 is STS — it ships November 10 and loses support November 9, 2028. That’s almost the same end date, with .NET 10 actually expiring about five days later. For most production workloads, go to .NET 10. It’s the calmer LTS-to-LTS path (.NET 8 → 10 → 12), and one real-world team reported the migration took 1.5 engineer-days for 95,000 lines of code with an 11% throughput gain at the end. .NET 11 makes sense if you specifically need C# 15 features now — otherwise you’re taking on STS churn for minimal extra support time.

What .NET 11 Actually Ships

C# 15 Union Types

The headline C# 15 feature is union types — the first native discriminated-union support the language has had. You declare a closed set of case types, get implicit conversions, and the compiler enforces exhaustive pattern matching so you never need a default branch you’ll forget to update.

public union Result(Success, Error, Timeout);

var message = ProcessRequest() switch
{
    Success s => $"Done: {s.Value}",
    Error e   => $"Failed: {e.Message}",
    Timeout   => "Request timed out"
    // No default — compiler verifies all cases are covered
};

Closed hierarchies ship alongside unions: add the closed modifier to a class and the compiler prevents subclassing outside your assembly, enabling the same exhaustive pattern matching for class trees you already own.

Runtime Async

The async machinery C# developers have lived with for over a decade — compiler-generated state machines, cryptic MoveNext() stack frames, ExecutionContext capture on every continuation — gets replaced in .NET 11 with runtime-native async. Stack traces become readable again. The ASP.NET Core shared framework switched to it by default, and benchmarks show a 9.4% throughput gain over .NET 10 (278k to 304k requests per second in API load tests).

Other Additions Worth Noting

BFloat16 arrives as a first-class type for ML and scientific workloads: 16-bit float with the same exponent range as float32, half the storage. Zstandard compression is now built in, faster than GZip for most payloads. CoreCLR now runs on WebAssembly, not just AOT-compiled .NET.

Breaking Changes to Check First

Three areas cause the most production surprises. First, System.Text.Json tightened its validation — properties that serialized cleanly before may now throw or behave differently. Second, EF Core 11 switched the Cosmos DB provider from Newtonsoft.Json to System.Text.Json; if you relied on any Newtonsoft.Json quirks there, you’ll hit silent data issues. Third, ASP.NET Core routing changed endpoint-matching logic in edge cases that can cause route conflicts. After retargeting your csproj to .NET 11, run the full test suite before treating a green build as a green light.

The Migration Path in Practice

The free .NET Upgrade Assistant is gone. Microsoft deprecated it and replaced it with GitHub Copilot App Modernization, a paid feature in Visual Studio 2026. Community feedback on large, undocumented codebases has been mixed at best. For most teams the reliable path is manual: change <TargetFramework> to net10.0 (or net11.0), fix build errors, run tests, test auth flows and serialization explicitly. Check the top breaking changes guide before you merge. If you can’t complete the migration before November 10, start anyway — getting halfway onto .NET 10 is better than staying on an unpatched runtime indefinitely.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:News