"node-version: latest" installs Node.js 27.0.0-alpha.0.0.0 in GitHub Actions: setup-node, the new Alpha line, and '*' or lts/*
On October 29, 2026, Node.js published 27.0.0-alpha.0.0.0, the first release of the Alpha phase that its new release schedule puts before each major line; 27.0.0 itself is planned for April 22, 2027. The alpha is the top entry of nodejs.org/dist/index.json, and actions/setup-node takes the top entry of that list for node-version: latest, current and node, prereleases included. So a workflow that asks for "latest" now runs an alpha, with npm 12.1.0, while the latest folder on nodejs.org holds 26.13.0, the Active LTS since October 28 (setup-node #1660).
What it looks like
The setup step downloads the alpha from nodejs.org, because it is not in GitHub's own manifest, and its environment details name it. From a run in setup-node #1657:
Attempting to download 27.0.0-alpha.0.0.0... Not found in manifest. Falling back to download directly from Node Acquiring 27.0.0-alpha.0.0.0 - x64 from https://nodejs.org/dist/v27.0.0-alpha.0.0.0/node-v27.0.0-alpha.0.0.0-linux-x64.tar.gz ... Environment details node: v27.0.0-alpha.0.0.0 npm: 12.1.0 yarn: 1.22.22
The job usually fails later, in a step that never mentions the version. Examples from the Node.js project's own tests of popular packages on the alpha:
- A test that expects no output gets
[DEP0032] DeprecationWarning: The `domain` module is deprecated, because that deprecation now prints at run time (gulp, citgm #1230). - npm 12 stops at an unknown command-line flag instead of warning:
npm install --log-level infofails,--loglevelworks (citgm #1229). npm 12 also refuses git dependencies and skips install scripts by default (npm 12 in GitHub Actions). - The default heap limit changes: without
--max-old-space-sizeit is half of the physical memory, between 256 MB and 4 GB, and memory held by Buffer and ArrayBuffer counts toward it. The release notes ask applications that relied on the old defaults to set the flag.
On Intel macOS there is no build at all. The alpha has a darwin-arm64 archive but no darwin-x64 one (the same release downgraded Intel macOS to experimental support), so on macos-15-intel and macos-26-intel latest points to a version with nothing to download for that runner. Another tool that installs Node.js stopped at "Hash not found for node-v27.0.0-alpha.0.0.0-darwin-x64.tar.gz in SHASUMS256.txt" (vite-plus #3290).
Staying on the newest stable release
node-version: '*'installs the newest version that is not a prerelease, 26.13.0 today (setup-node #1660). Quote it in YAML.node-version: lts/*gives the same 26.13.0 now. The two part on April 22, 2027:'*'moves to 27.0.0 when it becomes Current, andlts/*stays on 26 until 27 becomes LTS in October 2027.node-version: 26follows one major line and never picks a prerelease.
On November 3, a setup-node maintainer wrote that latest, current and node will be aligned with nodejs.org so they resolve to the newest stable release. On November 5 that change was not released; the newest setup-node release was still v7.1.0 of October 8. When it ships, workflows on @v7 get it as the tag moves, while a pinned version or commit SHA needs an update.
Testing on the alpha on purpose
- Only the exact version works today:
node-version: 27.0.0-alpha.0.0.0.27,27.0.0and27.0.0-alphaare not recognized, so the entry needs editing for each alpha. Anallow-prereleasesinput like the one in setup-python has been requested (setup-node #1657) and does not exist yet. - Keep it in its own matrix entry with
continue-on-error: true, so a failure on the alpha does not block the merge. - Check automated pull requests that change
.nvmrc,.node-versionor the Volta setting. Updaters that read "latest" from the same list have proposed 27.0.0-alpha.0.0.0 as the latest version, for example moving.nvmrcfrom 26.8.1 (kompagnon-app #149), andnode-version-fileinstalls exactly what the file says.
Telling it apart
- A job that runs in the
node:latestDocker image is not affected: the change that adds the alpha images gives them only exact tags such as27.0.0-alpha.0.0.0-alpine3.23(docker-node #2678, not merged on November 5). - On a self-hosted runner,
nvm install nodeandn latestalso give the alpha (nodejs/node #67135). - npm 12 can also come from
npm install -g npm@lateston any Node.js version; the fixes for that are on the npm 12 page.
See failed jobs from IntelliJ IDEA
Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, so a matrix entry that started failing when its Node.js version moved stands out, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).
Get it on JetBrains Marketplace
GitHub and GitHub Actions are trademarks of GitHub, Inc.; Node.js is a trademark of the OpenJS Foundation; npm is a trademark of npm, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc., the OpenJS Foundation, npm, Inc. or JetBrains.
More: npm 12 in GitHub Actions: "EALLOWGIT" and blocked install scripts · "Node.js 20 actions are deprecated" · GitHub Actions plugins for IntelliJ IDEA compared · 日本語