.NET 8 End of Life: November 10, 2026 — and .NET 9 Dies the Same Day
.NET 8 — the LTS release most production .NET workloads run today — reaches end of support on November 10, 2026. .NET 9 dies the same day. That coincidence is the trap in Microsoft's cadence: LTS releases get three years, STS releases get eighteen months, and this cycle they land on the same Tuesday. The only place to go is .NET 10, supported to November 2028.
The .NET 8 install base is enormous precisely because it was the responsible choice — teams standardized on it as the post-.NET-6 LTS. Three years goes faster than it feels: apps built at 8's launch in November 2023 are now twenty months from their platform's cutoff, and the upgrade to 10 is mercifully incremental for most codebases — the work is in CI images, base containers, and dependency chains more than in the code.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 line in your fleet (see our FROM-line audit guide)..NET End-of-Life Table (every modern release)
| Version | Released | End of support | Status |
|---|---|---|---|
| .NET 10 | Nov 11, 2025 | Nov 14, 2028 | Supported |
| .NET 9 | Nov 12, 2024 | Nov 10, 2026 | Supported |
| .NET 8 | Nov 14, 2023 | Nov 10, 2026 | Supported |
| .NET 7 | Nov 8, 2022 | May 14, 2024 | EOL |
| .NET 6 | Nov 8, 2021 | Nov 12, 2024 | EOL |
| .NET 5 | Nov 10, 2020 | May 10, 2022 | EOL |
| .NET Core 3.1 | Dec 3, 2019 | Dec 13, 2022 | EOL |
| .NET Core 3.0 | Sep 23, 2019 | Mar 3, 2020 | EOL |
| .NET 2.2 | Dec 4, 2018 | Dec 23, 2019 | EOL |
| .NET 2.1 | May 30, 2018 | Aug 21, 2021 | EOL |
| .NET 2.0 | Aug 14, 2017 | Oct 1, 2018 | EOL |
| .NET 1.1 | Nov 16, 2016 | Jun 27, 2019 | EOL |
| .NET 1.0 | Jun 27, 2016 | Jun 27, 2019 | EOL |
Per-version pages: endoflife.ai/dotnet · The news angle: the November 10 double cutoff, explained.
Planning the move to .NET 10
- Target .NET 10 directly — it's the LTS (November 2028); moving 8→9 would buy you nothing since they die together.
- Inventory the hidden .NET 8: container base images, build agents, self-contained deployments, and Azure Functions runtimes all pin versions independently of your csproj files.
- The upgrade is usually mild — 8→10 breaking changes are modest for typical ASP.NET Core and worker services; dependency packages that pin the runtime are the usual snag.
- Windows-hosted .NET Framework is a different world — 4.8 follows its OS's lifecycle, not this table; don't conflate the two when scoping.
Frequently Asked Questions
When does .NET 8 reach end of support?
November 10, 2026 — three years after its release, per Microsoft's LTS policy. .NET 9 (an STS release) reaches end of support the same day, making .NET 10 the only supported destination afterward.
Should I upgrade from .NET 8 to 9 or straight to 10?
.NET 10, always — .NET 9 dies the same day as .NET 8 (November 10, 2026), so it isn't an upgrade at all. .NET 10 is the current LTS, supported until November 14, 2028.
What happens if I stay on .NET 8 after November 2026?
No further security patches for the runtime, SDK, or ASP.NET Core 8. Vulnerabilities disclosed afterward remain permanently open, and because .NET ships inside container base images, unsupported runtimes quietly persist in Dockerfiles long after the csproj files get updated.
How much work is the .NET 8 to 10 upgrade?
For most ASP.NET Core and worker-service codebases, modest: retarget, update packages, rebuild containers on 10.0 base images, and re-run the test suite. The commonly underestimated part is infrastructure — CI images, build agents, and pinned base images all carry their own copy of the deadline.