Release Lines and LTS

Release Lines, LTS and Choosing a Version

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.

Node.js 2,131 release lines on 17 September 2026
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.