Skip to content

The publication for web craftspeople Sunday, 1 November 2026

Back-end

Node.js Ditches Its Twice-a-Year Majors: Version 27’s Alpha Opens an Annual Calendar

The Node.js project has shipped the first alpha of version 27 and confirmed a shift to one major release per year. The decade-old split between odd and even version lines is going away.

Node.js 27 alpha

On October 29, 2026, the Node.js project published the first alpha of version 27, 27.0.0-alpha.0.0.0, alongside a full rework of its release calendar. Starting with this line, a single major release will ship every year, in April, and each one will graduate to Long-Term Support after six months of stabilization. The odd/even version split, inherited from the io.js merger a decade ago, is going away — a shift landing just months after Node.js 26 “Lithium” entered LTS.

What actually changes

The new cycle introduces a six-month Alpha phase, from October to March, during which semver-major changes are still allowed. It is followed by a Current stabilization phase running through October, then entry into LTS for 30 months. In total, each version line gets 36 months of support, from its first Current release to end of life.

The new Alpha channel

Unlike nightly builds, which are automated and untested, Alpha releases are signed, tagged, and run through CITGM (Canary in the Goldmine), which runs the test suites of major ecosystem packages against the upcoming version. The release team says this channel is aimed primarily at library authors and CI pipelines that want to catch breaking changes early, not at production environments.

Old and new model, side by side

MilestoneNode.js 26 (current model)Node.js 27 (new model)
Alpha—October 2026
Current releaseApril 2026April 2027
Enters LTSOctober 2026October 2027
End of maintenanceOctober 2027—
End of lifeApril 2029April 2030

Why the change

The current schedule is roughly ten years old and was set, according to one project contributor, as an educated guess of what enterprises would need around the time of the io.js merger. Usage data has long shown that odd-numbered releases see minimal adoption, since most teams wait for the next LTS. Maintaining four or five active version lines at once also strains a maintainer base that is overwhelmingly made up of volunteers, particularly when it comes to backporting security fixes like the one that targeted the Brotli decoder in late October.

To test a library against the alpha in a CI matrix, it’s enough to add the version line to the workflow file:

strategy:
  matrix:
    node-version: ['24', '26', '27.0.0-alpha.0.0.0']
steps:
  - uses: actions/setup-node@v4
    with:
      node-version: ${{ matrix.node-version }}
  - run: npm ci && npm test

Every version line now becomes an LTS line: the odd/even split that confused newcomers disappears with 27.

The Alpha versioning format isn’t fully settled: the official announcement cites 27.0.0-alpha.1 as the example, while the first published build is tagged v27.0.0-alpha.0.0.0. The release team itself notes that the schedule “may be amended” and points to the schedule.json file in the Release repository as the authoritative source.

What to remember

Node.js 27 opens an annual rhythm where every major release effectively becomes an LTS. Teams that only track LTS lines will barely notice a change in their habits; library maintainers, on the other hand, have good reason to wire the Alpha channel into their CI now, to catch breaking changes well before the April 2027 Current release.

This tighter calendar is a good call. I’ve more than once lost time debugging a behavior that only showed up on an odd-numbered release no client was ever running in production — collapsing to one annual line, always destined to become LTS, cuts a layer of testing that wasn’t adding much. Whether the Alpha channel genuinely draws in package maintainers, or ends up like nightlies before it, a tool reserved for a handful of regulars, remains to be seen. — Simon Janvier

To go further: the full official announcement is available on the Node.js blog.

Read next