Which Node.js version to use in October 2026: LTS lines and the new schedule
Node.js 26 becomes LTS on 28 October 2026, Node.js 24 moves to maintenance and 20.x is already end of life. Here is every supported line, the new yearly release model from Node.js 27, and which version to run.
7 min read

In this article
Choosing a Node.js version used to be simple: take the newest even-numbered release once it reached Long Term Support. In October 2026 that rule still mostly holds, but this month is unusually busy. Node.js 26 becomes LTS on 28 October, Node.js 24 drops to maintenance on 20 October, and the project begins a new yearly release model, with Node.js 27 starting as an alpha.
If you run Node.js on servers, in CI or inside Docker images, these dates decide when you get security fixes and how long you can postpone the next upgrade. This guide sets out every supported release line as of 7 October 2026, explains the new schedule, and suggests which version fits which kind of project. All dates come from the Node.js Release Working Group schedule and the nodejs.org releases page, checked today.
The short answer: run Node.js 24 (Krypton) in production today, and plan to move to Node.js 26 during its LTS period. Upgrade anything still on Node.js 20 now, because that line reached end of life on 30 April 2026.
Supported Node.js release lines in October 2026
The Release Working Group publishes the schedule as a table in its repository and as a JSON file. Here is the state of each line on 7 October 2026, with the newest version published so far:
| Line | Codename | Status on 7 Oct 2026 | Latest release | Next milestone | End of life |
|---|---|---|---|---|---|
| 26.x | (assigned at LTS) | Current | 26.11.0 (7 Oct 2026) | Active LTS from 28 Oct 2026 | 30 Apr 2029 |
| 24.x | Krypton | Active LTS | 24.21.0 (7 Sep 2026) | Maintenance from 20 Oct 2026 | 30 Apr 2028 |
| 22.x | Jod | Maintenance LTS | 22.23.3 (23 Sep 2026) | None | 30 Apr 2027 |
| 25.x | none | End of life | 25.9.0 (31 Mar 2026) | None | 1 Jun 2026 |
| 20.x | Iron | End of life | 20.20.2 (24 Mar 2026) | None | 30 Apr 2026 |
The schedule page notes that dates are subject to change, so check the official sources linked at the end before you commit to a long migration plan.

What the phases mean
- Current: receives most non-breaking changes that land on the main branch. Good for trying new features, but expect frequent minor releases (26.x went from 26.0.0 in May to 26.11.0 in October).
- Active LTS: new features, bug fixes and updates that the Release team has audited and judged stable for the line.
- Maintenance: critical bug fixes and security updates. New features arrive only occasionally, usually to help users migrate to a later line.
- End of life: no more releases, including security fixes. Anything still running an EOL line is on borrowed time.
Which version should you run?
The right answer depends on what you are deploying and how often your team upgrades. A practical mapping:
| Situation | Recommended line | Why |
|---|---|---|
| New production service starting now | 24.x, with a planned move to 26.x | 24 is LTS until April 2028; 26 becomes LTS on 28 October and is supported until April 2029. |
| Existing service on 22.x | Upgrade to 24.x (or straight to 26.x after 28 Oct) | 22 is in maintenance and reaches end of life on 30 April 2027. |
| Anything still on 20.x or older | Upgrade immediately | 20.x has been end of life since 30 April 2026 and receives no security releases. |
| Libraries and npm packages | Test on 22.x, 24.x and 26.x | Your users run every supported line; your CI matrix should too. |
| Trying new language features | 26.x | 26 ships V8 14.6 and the Temporal API enabled by default. |
For most small teams the safest pattern is: stay on the Active LTS line, apply every patch release within a week or two, and schedule the move to the next LTS line during its first months of Active LTS rather than waiting for the old line's end of life.
What changes from Node.js 27: one major release a year
On 10 March 2026 the Node.js Release Working Group announced that, starting with 27.x, Node.js moves from two major releases per year to one. The old odd/even pattern, where odd-numbered versions never became LTS, ends with Node.js 26.
The new model has four phases:
| Phase | Duration | Purpose |
|---|---|---|
| Alpha | 6 months (October to March) | Early testing; semver-major changes allowed |
| Current | 6 months (April to October) | Stabilisation |
| LTS | 30 months | Long-term support with security fixes |
| End of life | Indefinite | No further support |
The announcement gives 36 months of total support from the first Current release to end of life. Every release becomes LTS, and version numbers follow the calendar year of their first Current release: 27.0.0 in 2027, 28.0.0 in 2028. Alpha builds use semver prerelease versions such as 27.0.0-alpha.1; they are signed and tagged, but the project says they are not intended for production use.
For Node.js 27 the planned dates are: alpha begins in October 2026, 27.0.0 in April 2027, LTS in October 2027 and end of life in April 2030. The schedule JSON lists the alpha start as 28 October 2026 and the 27.0.0 release as 22 April 2027.
If you already upgrade only to LTS versions, the announcement's own summary applies: little changes beyond version numbering. The release team's stated reasons are that odd-numbered releases saw little adoption and that maintaining security fixes across four or five active lines had become hard to sustain for a mostly volunteer project.
Library authors are asked to add alpha releases to CI as early as possible, so that breaking changes are reported before they reach users.

What to check before moving to Node.js 26
Node.js 26.0.0 was released on 5 May 2026. Its release notes list the headline changes and several removals worth checking in your code base:
- Temporal enabled by default. The modern date and time API is available without a flag.
- V8 14.6, part of Chromium 146, which adds
Map.prototype.getOrInsert(),getOrInsertComputed()andIterator.concat(). - Undici 8, the library behind the built-in
fetch(). - Removed:
http.Server.prototype.writeHeader()(usewriteHead()) and the legacy internal stream modules such as_stream_readableand_stream_writable. Some old packages still import these directly. - Removed: the
--experimental-transform-typesflag. Type stripping of erasable TypeScript syntax still works, but enums and other syntax that needs code generation must be compiled by a separate tool. - Runtime-deprecated:
module.register(), used by some custom loaders.
Native add-ons must be rebuilt, because the release bumps NODE_MODULE_VERSION to 147. If you build Node.js from source, the release also raises the GCC requirement to 13.2 and drops Python 3.9 support.
A low-risk upgrade checklist
- Find every place the version is pinned. Look in
.nvmrcor.node-version, DockerfileFROMlines, CI configuration, serverless runtime settings, and theenginesfield inpackage.json. - Read the changelog for each major version you skip. Going from 22 to 26 means reading the notable changes for 23, 24, 25 and 26, not just 26.
- Run your tests on both versions in CI for at least one release cycle, so regressions show up as a failing job rather than a production incident.
- Watch deprecation warnings. Start the application with
--trace-deprecationin staging to see where deprecated APIs are called from. - Rebuild native dependencies and recreate lockfiles only if necessary; a clean
npm cion the new version will surface install-time problems. - Roll out gradually: one service or one instance group first, with an easy way back to the previous image.
Pin the major version, not an exact patch release, in places where you want security fixes to flow in automatically (for example a CI matrix entry of 24), and pin the exact version where you need reproducible builds (for example a production image that is rebuilt and promoted through environments). Whichever you choose, write down the policy so that everyone on the team updates the same files.
A quick way to see what a server is actually running:
node -p "process.version" # e.g. v24.21.0
node -p "process.release.lts" # 'Krypton' on 24.x; undefined on a Current releaseThe process.release.lts property only exists on LTS releases and is undefined on Current releases, which makes it a handy assertion in a deployment health check.
// fail fast if a container was built from the wrong base image
const [major] = process.versions.node.split('.').map(Number);
if (major < 24) {
console.error(`Node.js ${process.version} is not supported; use 24.x or newer`);
process.exit(1);
}Summary
- Production default today: Node.js 24 (Krypton), supported until 30 April 2028.
- Node.js 26 becomes LTS on 28 October 2026 and is supported until 30 April 2029; plan your move during its Active LTS period.
- Node.js 22 is in maintenance until 30 April 2027. Node.js 20 and 25 are end of life.
- From Node.js 27 there is one major release per year, every release becomes LTS, and alpha builds start each October.
Next step: open your Dockerfiles and CI files today, list every pinned version, and replace any 20.x reference first.
Frequently asked questions
Is Node.js 20 still supported?
No. Node.js 20 (Iron) reached end of life on 30 April 2026 and no longer receives security releases. Move to 24.x, or to 26.x once it becomes LTS on 28 October 2026.
When does Node.js 26 become LTS?
The Release Working Group schedule lists 28 October 2026 as the start of Active LTS for 26.x. It moves to maintenance on 20 October 2027 and reaches end of life on 30 April 2029.
Will Node.js 27 be an LTS release?
Yes. From 27.x every major release becomes LTS. Node.js 27 starts as an alpha in October 2026, ships 27.0.0 in April 2027 and enters LTS in October 2027.
Should I use alpha releases in production?
No. The project describes alpha releases as intended for library authors and CI pipelines that test compatibility with upcoming breaking changes, not for production use.
Your next customer could start right here.
Introduce your tool, product or business to readers exploring technology.
Explore placements and request a private quote
Sources
- Node.js Releases — Node.js
- Node.js Release Working Group: release schedule — Node.js Release Working Group
- Release schedule JSON — Node.js Release Working Group
- Evolving the Node.js Release Schedule — Node.js, 2026-03-10
- Node.js 26.0.0 (Current) — Node.js, 2026-05-05
- Node.js distribution index — Node.js
- process.release (Node.js v24 docs) — Node.js
Written with substantial AI assistance. Facts checked against cited sources. Editorial policy.
Comments
No comments yet. Be the first to join the conversation.
Leave a comment
Every comment is read by a moderator before it appears. Your email address is never published; it is used only to contact you about this comment.
More from Cloudsoft Zone

ComparisonNode.js
Express 5 vs Fastify 5: which Node.js framework to pick in 2026
Express 5 and Fastify 5 compared on support status, validation, error handling, upgrades and performance, with the same API built and tested in both.
By Cloudsoft Zone

TutorialNode.js
How to test a Node.js API with the built-in test runner (node:test)
Write, run, mock and measure coverage for a small Node.js HTTP API using only node:test and node:assert. Covers port-0 servers, fetch(), spies, t.mock.method(), fake dates and coverage thresholds.
By Cloudsoft Zone

ComparisonNode.js
Running TypeScript in Node.js: built-in type stripping vs tsx vs tsc
Node.js now runs .ts files directly by stripping types. Compare built-in type stripping with tsx and a full tsc build: what each supports, what breaks (enums, decorators, paths), and which to pick in 2026.
By Cloudsoft Zone
