.NET 8 & .NET 9 End of Life:
the November 10 double cutoff, four months out
.NET 8 (LTS) and .NET 9 (STS) both reach end of support on November 10, 2026, per Microsoft's official .NET and .NET Core support policy. That's four months from today. This piece is deliberately advance coverage, not a postmortem: the point is to plan the migration on your own schedule, not Microsoft's shutoff schedule. If you already read our earlier .NET EOL rundown, this piece narrows in specifically on the November 2026 wave and what makes it unusual.
Why LTS and STS Die Together This Time
It looks like a coincidence that a Long-Term Support release and a Standard-Term Support release expire on the same day, but it's a predictable outcome of Microsoft's release cadence and support-term math, not a one-off scheduling accident:
- .NET 8 shipped November 14, 2023 As an LTS release, it gets a 3-year support term. Three years out lands on November 10, 2026 (Microsoft's .NET end-of-support dates fall on the second Tuesday of the month, aligned to Patch Tuesday).
- .NET 9 shipped November 12, 2024 As an STS release, it now gets a 2-year support term — Microsoft extended STS coverage from 18 to 24 months starting with .NET 9, announced in 2025. Two years out from November 2024 also lands on November 10, 2026.
- One release cycle apart, same expiration Because a new major .NET version ships every November and the STS term (2 years) is exactly one release cycle longer than the 1-year gap between an LTS release and the STS release after it, the LTS release and its immediate STS successor are structurally likely to expire close together or on the same date under this policy.
The .NET Support Model, Explained
Modern .NET (the successor to .NET Core) ships a new major version every November, on a strict annual cadence, alternating two support tracks:
The practical upshot: STS is the right choice only if your team genuinely re-platforms every year or two. If that's not realistic for your application, LTS is the correct default — but "correct default" still means tracking a 3-year clock, not treating the version as permanent.
The Dates, Stated Plainly
| Version | Track | Released | End of support |
|---|---|---|---|
| .NET 6 | LTS | Nov 2021 | Nov 12, 2024 EOL |
| .NET 7 | STS | Nov 2022 | May 14, 2024 EOL |
| .NET 8 | LTS | Nov 14, 2023 | Nov 10, 2026 4 months out |
| .NET 9 | STS | Nov 12, 2024 | Nov 10, 2026 4 months out |
| .NET 10 | LTS | Nov 11, 2025 | Nov 14, 2028 Current target |
Every date above comes from Microsoft's official .NET and .NET Core support-policy documentation. Note that .NET 6 and 7 are already well past their end-of-support dates — if either is still in production anywhere in your stack, that gap predates the November 2026 wave this article is about and needs its own immediate attention.
Still Running .NET 8 or 9 in Production?
Unlike an EOL date that has already passed, four months out is exactly the window where the decision is still cheap. Realistically, most ASP.NET Core and console applications on .NET 8 or 9 move to .NET 10 with a target-framework bump, a NuGet package refresh, and a CI pipeline update — not a rewrite. The teams who end up scrambling in November are consistently the ones who treated "LTS" as "I don't need to check this again," not the ones who had a harder technical migration.
If you're on .NET 6 or 7 today, the same logic applies with more urgency — those runtimes have had zero vendor security patches since 2024, and every month adds to the gap. Skipping straight to .NET 10 is fully supported regardless of which version you're starting from; there's no requirement to step through 8 or 9 first, and doing so would just mean landing on a release that's itself about to expire.
.NET 10 as the Upgrade Target
.NET 10 shipped November 11, 2025 as an LTS release and is supported until November 14, 2028 — the longest runway currently available on modern .NET. It's a mature, generally-available release at this point, not a bleeding-edge target, which is why it's the recommended destination rather than a wait-and-see option.
-
Update the target framework moniker
Change
<TargetFramework>net8.0</TargetFramework>(ornet9.0) tonet10.0in project files. - Update NuGet packages Bump dependencies to .NET 10-compatible versions; most actively maintained libraries ship day-one support for a new major .NET release.
- Review the breaking-changes list Microsoft publishes a per-version breaking-changes document; most applications hit few or none moving from 8 or 9 to 10.
-
Update CI and container base images
Bump
mcr.microsoft.com/dotnetDocker tags and pipeline SDK versions to 10.0 across every environment. - Run the full test suite before shipping A passing suite on .NET 10 in CI is a strong signal that production migration will be clean.
The .NET Framework 4.8 Contrast
It's worth distinguishing this from the legacy .NET Framework line — the older, Windows-only framework that predates modern .NET (formerly .NET Core) and is a separate product with a separate lifecycle model. .NET Framework 4.8 and 4.8.1 do not carry their own fixed end-of-support date the way .NET 8 or 9 do. Instead, .NET Framework support is tied to the lifecycle of the Windows OS release it ships in: 4.8.1 is built into Windows 11 and current Windows Server releases, so it remains supported for as long as that underlying Windows version does.
In practice, this means .NET Framework 4.8 apps are not on the November 10, 2026 clock this article covers — but they are quietly riding whatever Windows lifecycle clock their host OS is on, which is easy to lose track of precisely because there's no standalone ".NET Framework EOL date" to watch. See the .NET Framework product page for the current Windows-tied support windows.
Your Action Checklist
- Inventory every application on .NET 8 or .NET 9Include background services, Azure Functions, and containerized workloads — not just the applications your team thinks of as "the .NET app."
- Confirm nothing is still on .NET 6 or 7Both are already past end of support with no vendor patches since 2024 — treat any finding here as higher priority than the November wave.
- Target .NET 10 directlySkipping intermediate versions is supported; there's no reason to land on a release that's also about to expire.
- Update target framework, packages, CI, and container images togetherTreat it as one coordinated change per application rather than a partial update that leaves the runtime and dependencies out of sync.
- Separate .NET Framework apps from this timelineConfirm which applications are modern .NET (on the Nov 10, 2026 clock) versus legacy .NET Framework (on the host Windows OS clock) so you're not tracking the wrong deadline for either.
- Log the plan and dates in your risk register nowA documented migration plan ahead of the deadline reads very differently to an auditor than an EOL runtime discovered after the fact.
Frequently Asked Questions
Why do .NET 8 and .NET 9 reach end of life on the same day?
It's a scheduling outcome of Microsoft's release cadence and support terms. .NET 8 is LTS (3 years from November 2023), .NET 9 is STS (2 years from November 2024) — both terms land on November 10, 2026.
Isn't .NET 8 an LTS release? Why is it EOL so soon?
LTS in the .NET policy means 3 years, not indefinite. .NET 8 shipped November 14, 2023, so its 3-year term ends November 10, 2026 (end-of-support dates align to the second Tuesday of the month). LTS is the longest available track, not a permanent one.
What's the difference between .NET LTS and STS support?
LTS releases (even-numbered) get 3 years of free patches; STS releases (odd-numbered) get 2 years, extended from the original 18 months starting with .NET 9. Both get full security and quality updates during their term — STS is simply shorter.
What should I upgrade to instead of .NET 8 or 9?
.NET 10, an LTS release that shipped November 11, 2025 and is supported until November 14, 2028. Skipping straight from 8 or 9 to 10 is fully supported and recommended.
Is this the same as .NET Framework 4.8 going end of life?
No — .NET Framework 4.8/4.8.1 has no standalone end-of-support date; its support is tied to the Windows OS lifecycle it ships with. It is not affected by the November 10, 2026 modern-.NET cutoff. See our earlier .NET EOL overview for the full version history including .NET Framework context.
Check your full stack for EOL exposure
.NET 8 and 9 are one line in a busy November 2026 lifecycle calendar. Run your full stack through the EOL checker and see your Risk Scores.
Scan your stack Check a version How Risk Scores work