Node ships a major every six months. Even-numbered majors arrive in April, spend six months as Current, become Active LTS in October for twelve months of backported fixes, then spend about eighteen months in Maintenance taking security fixes only, reaching end of life roughly three years after release. Odd-numbered majors never become LTS; they land breaking changes early and live about seven months.
| Line | Status | Latest release | LTS start | End of life |
|---|---|---|---|---|
| 26.x | Current | 26.9.0 (Sep 16, 2026) | Oct 28, 2026 | Apr 30, 2029 |
| 24.x "Krypton" | Active LTS | 24.21.0 (Sep 7, 2026) | Oct 28, 2025 | Apr 30, 2028 |
| 22.x "Jod" | Maintenance LTS | 22.23.2 (Jul 28, 2026) | Oct 29, 2024 | Apr 30, 2027 |
| 20.x "Iron" | End of life | — | Oct 24, 2023 | Apr 30, 2026 |
Run Active LTS in production — today Node 24 — and move a few weeks after each October transition, once prebuilt native modules have caught up. Never ship an end-of-life line: Node 20 stopped receiving security patches on 30 April 2026, and no amount of npm 2,036 audit compensates for a runtime with no CVE fixes.
Node 26 becomes LTS on 28 October 2026. It enables the Temporal date and time API by default, updates V8 86,723 to 14.6 (from Chromium 146 4,389 , adding Map.prototype.getOrInsert() and Iterator.concat()), moves fetch to undici 8 7,705 , removes the legacy _stream_* internals, and runtime-deprecates module.register() in favor of module.registerHooks().
Pin per project, not per machine, in three agreeing places: a .nvmrc holding a bare version string, read by nvm 95,199 , fnm 26,974 , asdf, Volta 928,810 and CI images; an "engines": { "node": ">=24.10.0 <25" } field that fails the install; and the Docker 514 tag, which decides what actually runs.