Skip to content

Align Node.js version across the repo (Node 24 default, CI on 24 + 26) #2465

Open

Description

@martastn

Problem

The Node.js version is hard-coded in several places, and each one is updated in a separate PR. Some of them get left behind, which has already caused bugs:

Current state on master (ee1bdee):

Place Node
package.json → engines >=24.0.0
node.js.yml, L126, manual_test.yml 24.x (3× hard-coded)
node.js.yml → deploy_gh_pages npm install runs before setup-node, so it uses the runner's preinstalled Node, not 24
Dockerfile node:24
.devcontainer/devcontainer.json typescript-node:20 (likely unused)

Some tools also enforce supported Node versions: after #2463, dependency-cruiser 18 refuses to run on Node 20 and 25, so npm run depcruise:* won't work in the current devcontainer (Node 20) or on a local Node 25.

Node 24 has been in maintenance LTS since 2026-10-20, and Node 26 became Active LTS on 2026-10-28 (release schedule). The plan is to stay on 24 for now and later migrate to 26, so 26 should already be supported and tested in CI.

Proposal

  1. Add .nvmrc containing 24 as the default version (read by actions/setup-node, nvm use and fnm).
  2. node.js.yml → build_and_test: run the matrix on [24.x, 26.x].
  3. node.js.yml → deploy_gh_pages: use node-version-file: '.nvmrc' and move setup-node before npm install.
  4. manual_test.yml: add 26.x to the node-version matrix.
  5. Remove .devcontainer/ (and its entry in .prettierignore).
  6. Dockerfile: keep node:24; optionally move it to ARG NODE_VERSION=24 so it's obvious what to update.
  7. engines: change to "^24 || >=26", so 26 is listed as supported and odd, short-lived releases like 25 are excluded.

Done when

  • .nvmrc exists; deploy_gh_pages reads it and installs dependencies after setup-node
  • build_and_test passes on both 24.x and 26.x
  • .devcontainer/ is removed
  • Dockerfile and engines are consistent with the above

Activity

  1. grzanka commented on Oct 29, 2026

    @grzanka
    Contributor
    Image https://nodejs.org/en/about/previous-releases

    Its OK to use v24 as for now, but by the end of this year I'd consider migration to v26, so at this moment it would be good to have it on supported list and run some CI on v24 and v26 in parallel

    As for devcontainer - maybe remove it completely, I think nobody uses it now

  2. changed the title [-]Align Node.js version across the repo (Node 24)[/-] [+]Align Node.js version across the repo (Node 24 default, CI on 24 + 26)[/+] on Nov 1, 2026
  3. self-assigned this
    on Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions