Node.js 26 became the Active LTS line on 28 October 2026, Node.js 24 moved to Maintenance LTS on 20 October, and Node.js 20 reached end-of-life on 30 April 2026. At the same time the project has started a new, yearly release cycle beginning with Node.js 27. This article summarises where each line stands, what changes from Node.js 27 onward, and how to move a production server to a supported version without surprises.
Where each release line stands
| Line | Codename | Status on 31 Oct 2026 | End-of-life | Latest release |
|---|---|---|---|---|
| 27.x | none yet | Alpha (not for production) | 30 Apr 2030 (planned) | alpha builds |
| 26.x | Lithium | Active LTS since 28 Oct 2026 | 30 Apr 2029 | 26.13.0 (28 Oct 2026) |
| 24.x | Krypton | Maintenance LTS since 20 Oct 2026 | 30 Apr 2028 | 24.22.2 (27 Oct 2026) |
| 22.x | Jod | Maintenance LTS | 30 Apr 2027 | 22.23.4 (20 Oct 2026) |
| 25.x | none | End-of-life | 1 Jun 2026 | 25.9.0 |
| 20.x | Iron | End-of-life | 30 Apr 2026 | 20.20.2 |
The Node.js project's guidance is short: production applications should only use Active LTS or Maintenance LTS releases. Maintenance LTS lines receive critical bug fixes and security updates; Active LTS lines also receive audited improvements. The Release working group notes that dates are subject to change, so check the official schedule before you plan around a specific day.
What changes from Node.js 27
Until now, Node.js shipped two major versions a year: even-numbered lines in April became LTS, and odd-numbered lines in October were short-lived. The project announced that, starting with 27.x, it moves to one major release per year:
- A new line is branched each October and gets Alpha releases for six months. Alpha builds may include breaking changes and are meant for library authors and CI pipelines, not production.
- Each April the line gets its first stable release (for example 27.0.0 in April 2027) and is Current for six months.
- Each October it is promoted to LTS and supported for 30 months, 36 months in total. Every line becomes LTS, so the odd/even distinction disappears.
- Version numbers will line up with the calendar year of their first Current release: 27.0.0 in 2027, 28.0.0 in 2028.
For teams that only run LTS versions, little changes in practice: you will still upgrade roughly once a year or every other year, with overlapping support windows to migrate in.
Check what your servers run
node -v
command -v node
apt policy nodejsThe third command shows whether node comes from your distribution or from another repository. Distribution packages often sit on an older line: Debian 12 (bookworm) packages Node.js 18.20.4, Debian 13 (trixie) packages 20.19.2, and Ubuntu 24.04 packages 18.19.1. Debian's security tracker shows that Debian ships security updates for these packages, but they stay on lines the upstream project no longer supports, and many npm packages and frameworks set their minimum version by upstream support. If your application needs a current line, install it from another source.
Installing a current LTS line
Two common routes on Debian and Ubuntu servers:
- NodeSource's apt repository, which publishes setup scripts per major line (for example
setup_26.xandsetup_24.x). The script adds the repository and its signing key; read it before running it as root. - Official binaries from
nodejs.org/dist, verified against the publishedSHASUMS256.txt, which is itself signed.
# NodeSource, Node.js 26 LTS
curl -fsSL https://deb.nodesource.com/setup_26.x -o nodesource_setup.sh
less nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt install -y nodejs
node -vOne detail from the Node.js 26 LTS release notes: since Node.js 25, the official Linux binaries are linked against libatomic, which some distributions do not install by default. On Debian and Ubuntu it is the libatomic1 package. Version managers such as nvm are convenient on developer machines, but they install into a user's home directory, which makes them awkward for system services.
Upgrading a production app, step by step
- Pick the target. Node.js 26 gives the longest runway (to April 2029); Node.js 24 is the more established choice (to April 2028). Anything on 20 or older should move now; 22 has until 30 April 2027.
- Read the release notes for every major version you are skipping, and check your framework's supported versions.
- Declare it. Set the
enginesfield inpackage.json(for example"node": ">=24") so tooling warns about mismatches. - Test in CI on the target version, including a clean
npm ci. - Rebuild native addons. Addons built on Node-API are designed to run on later major versions without recompiling; others must be rebuilt, which
npm rebuilddoes after a Node.js upgrade. - Stage, then roll out. Upgrade a staging server, run the app under real load for a day, then upgrade production in a maintenance window and restart the service (for example
sudo systemctl restart myapp). - Keep a way back. Note the previous package version or keep the previous binary directory so you can roll back quickly.
Common pitfalls
- systemd services do not read your shell profile. Use an absolute path to
nodeinExecStart=and confirm it after the upgrade. - Globally installed npm tools are tied to the Node.js installation; reinstall them after switching.
- Docker images pin Node.js through the base image tag; update the tag in your Dockerfile, not just on the host.
If you run Node.js apps on Skyline's web hosting rather than your own server, they run on Node.js 22 LTS managed from S Panel; that line is supported under the project's schedule until 30 April 2027.
What you should do
- Run
node -von every server and container and list anything on 20.x or older. - Choose Node.js 24 or 26 as your target and test your application on it in CI.
- Install from NodeSource or official binaries if your distribution's package is on an unsupported line, and install
libatomic1if you use the official binaries. - Rebuild native addons, stage the change, and keep a rollback path.
- Put 30 April 2027 (end of Node.js 22) and 30 April 2028 (end of Node.js 24) in your maintenance calendar.
Sources
- github.com/nodejs/Release
- raw.githubusercontent.com/nodejs/Release/main/schedule.json
- nodejs.org/en/about/previous-releases
- nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule
- nodejs.org/en/blog/release/v26.13.0
- nodejs.org/dist/index.json
- nodejs.org/dist/v26.13.0/SHASUMS256.txt
- nodejs.org/api/n-api.html
- docs.npmjs.com/cli/v11/commands/npm-rebuild
- docs.npmjs.com/cli/v11/configuring-npm/package-json
- qa.debian.org/madison.php?package=nodejs
- security-tracker.debian.org/tracker/source-package/nodejs
- packages.ubuntu.com/noble/nodejs
- github.com/nodesource/distributions
- deb.nodesource.com/setup_26.x
- cloud.alskyline.com/nodejs-hosting-saudi-arabia
Comments
0 total · 0 threads