Skip to content

Raise the supported Node floor to 22.12, and move CI to Node 22 - #636

Merged
ronleizrowice-ant merged 4 commits into
mainfrom
ci/node-22-floor
Oct 1, 2026
Merged

ronleizrowice-ant merged 4 commits into
mainfrom
ci/node-22-floor

Conversation

@ronleizrowice-ant

@ronleizrowice-ant ronleizrowice-ant commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

engines goes from Node >=20.11.0 to >=22.12.0, and CI moves from Node 20 to Node 22.

Why

What changes

  • package.json and the lockfile: engines.node is >=22.12.0.
  • The check of the packed package runs on exactly 22.12.0, the floor. It ran on 20.
  • The tests run on the newest Node 22. They ran on 20.
  • eslint.config.js: the two rules that judge Node features by version use the new floor.
  • One Windows test row says every address it tried when it cannot connect.

No source changes.

Found on the way

The tests are not on 22.12.0 itself, because they also run node inside the sandbox. On Windows, Node 22.12.0 tries only ::1 for localhost and is refused: the proxy is handed to a command as localhost and listens on 127.0.0.1. Node 20 and 22.23.2 connect.

This is about the Node a sandboxed command runs, which engines does not govern. Whether the proxy should listen on both loopback addresses, or be named by address, is not decided here.

Who sees a difference

On Node 20, or on 22 before 22.12, npm install warns that the engine does not match, and fails where engine-strict is set. Worth a line in the release notes.

Testing

On this branch's CI, every leg passes with the tests on Node 22.23.2 and the package check on 22.12.0. With the tests on 22.12.0, both Windows legs failed in that one row and every other leg passed. Locally, eslint, prettier and the type-check are clean.

Node 20 has reached end of life. 22.12.0 is the first release of the 22 line
in which JSON modules and import attributes are no longer experimental.

`engines` goes from >=20.11.0 to >=22.12.0. The two CI jobs that stand for
the floor, the Node step of the tests and the check of the packed package,
run on exactly that version, so that what the package promises is what is
tested. The lint rules that judge Node features by version follow.

No source changes.
The row has Node connect to the proxy at `localhost` and printed only the
first error's code. On Node 22.12.0 it is refused, on both Windows legs, where
Node 20 connected. `localhost` is two addresses, and the code alone does not
say which was refused.
…w say more

On Node 22.12.0 the row tried `::1` only and was refused: the proxy listens on
127.0.0.1. This run is on the newest release of the 22 line, to tell a fault of
that release from one of the line. On a failure the row also prints what
`localhost` resolved to and whether Node's address fallback is on.
A comment only. On the newest Node 22 both Windows legs pass. On 22.12.0 the
row that runs `node` inside the sandbox is refused, which is about the Node a
sandboxed command runs and not about the one that runs the library.
@ronleizrowice-ant ronleizrowice-ant changed the title Raise the supported Node floor to 22.12, and test on it Raise the supported Node floor to 22.12, and move CI to Node 22 Oct 1, 2026
@antdres
antdres self-requested a review October 1, 2026 11:48
@ronleizrowice-ant
ronleizrowice-ant merged commit 117eb92 into main Oct 1, 2026
16 checks passed
@ronleizrowice-ant
ronleizrowice-ant deleted the ci/node-22-floor branch October 1, 2026 11:58
@ronleizrowice-ant ronleizrowice-ant mentioned this pull request Oct 1, 2026
ronleizrowice-ant added a commit that referenced this pull request Oct 2, 2026
The bundle had `>=22`: main's `>=22.12.0` stands. The comment on CI's Node
step is main's, with the bundle's sentence on the steps repeated on 24.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants