Node.js 20 EOL on 2026-04-30: upgrade path to 22 LTS or 24 Active LTS — when and how should I migrate?

Teams still on Node 20 need a decision card for upgrading before end-of-life on April 30, 2026, including compatibility and managed-runtime support tradeoffs between Node 22 and Node 24.

Upgrade to Node 22 LTS first, unless you can absorb broader regression testing now and want to skip a short-lived stop at 22.

Blockers

Who this is for

Candidates

Upgrade to Node.js 22 LTS first

As of 2026-03-20, Node 20 is in Maintenance LTS and reaches end-of-life on 2026-04-30, while Node 22 is in Maintenance LTS and is scheduled to reach end-of-life on 2027-04-30. Node 22 became LTS on 2024-10-29 and gives a one-year support extension beyond Node 20. Its launch added features such as built-in WebSocket client support, stable watch mode, `fs.glob`, and a higher default stream high water mark. On AWS Lambda, `nodejs22.x` is already supported on Amazon Linux 2023 with a projected runtime deprecation date of 2027-04-30.

When to choose

Use this when you need the smallest supported step off Node 20 before 2026-04-30 and want to avoid Node 24-specific semver-major changes for now. The decisive factor is whether support through 2027-04-30 is enough for your estate and release cadence.

Tradeoffs

Lower immediate migration churn than jumping straight to 24, but it creates another mandatory major upgrade within roughly one year.

Cautions

Node 22 increased the default stream high water mark from 16 KiB to 64 KiB, which the release notes call out as a memory tradeoff for memory-sensitive workloads. If you plan to rely on `require()` for ESM, the Node 22 launch described that behavior as gated by `--experimental-require-module` for synchronous graphs.

Jump directly to Node.js 24 Active LTS

As of 2026-03-20, Node 24 is not Current; it is Active LTS, and the official release schedule lists its end-of-life as 2028-04-30. That gives two more years of runway than staying on Node 20 and one more year than stopping at Node 22. Node 24 launched with V8 13.6 and npm 11, changed `AsyncLocalStorage` to use `AsyncContextFrame` by default, exposed `URLPattern` globally, renamed the permission-model flag to `--permission`, and introduced several runtime deprecations and removals. On AWS Lambda, `nodejs24.x` is already supported on Amazon Linux 2023 with a projected runtime deprecation date of 2028-04-30.

When to choose

Use this when you want to avoid a short-lived stop at 22 and can afford broader regression testing now. The decisive factor is whether reducing upgrade frequency matters more than minimizing change surface in this quarter.

Tradeoffs

Longest support runway and fewer future platform migrations, but more behavior changes must be validated immediately.

Cautions

Node 24 removed support for MSVC when compiling Node on Windows and requires ClangCL instead. The 24.0.0 release also called out runtime deprecation of `url.parse()`, runtime deprecation of `SlowBuffer`, removal of `tls.createSecurePair`, and deprecation of some legacy `child_process` and zlib call patterns.

Facts updated: 2026-03-20
Published: 2026-04-03

Try with your AI agent

$ npm install -g pocketlantern
$ pocketlantern init
# Restart Claude Code, Cursor, or your MCP client, then ask:
# "Node.js 20 EOL on 2026-04-30: upgrade path to 22 LTS or 24 Active LTS — when and how should I migrate?"
Missing something? Request coverage