chore(node): drop Node 20; default to 24, test 22 + 24#19
Merged
Conversation
Node 20 left LTS at end of April 2026. Drop it from the supported set: bump `engines.node` from `>=20.0.0` to `>=22.0.0`, switch every workflow's default Node from 20 to 24, change the CI test matrix from ['20','22'] to ['22','24'], and move the coverage-upload gate from `matrix.node == '20'` to `'24'`. Update CLAUDE.md / CONTRIBUTING.md / copilot-instructions.md prose from "Node 20+" to "Node 22+". The `npm install -g npm@latest` defensive step in release.yml stays, with its comment updated: Node 24 bundles npm 11.5+ already, so the upgrade is now belt-and-braces. Shipping as a minor, not a major. `engines` is advisory (npm warns but installs), no Node 22+ APIs are introduced in this release, and the package is too young for a 2.0.0 on a Node-support narrowing alone. The changelog entry captures the contract change in prose.
Contributor
There was a problem hiding this comment.
Pull request overview
Drops Node 20 from supported runtimes, raises the floor to Node 22, and standardizes single-version jobs on Node 24 while testing across Node 22 and 24. Shipped as a minor since engines is advisory and no Node 22+ APIs are introduced.
Changes:
package.jsonengines.nodebumps from>=20.0.0to>=22.0.0; CI test matrix becomes['22','24']; coverage upload now keys offnode == '24'.- All single-version
setup-nodejobs (lint, typecheck, build, release, deploy-docs, self-check) pin to Node 24; release.yml comment is updated to reflect that Node 24 already ships npm 11.5+ (with Node 22 still bundling npm 10). - Docs/guidance (
CLAUDE.md,CONTRIBUTING.md,.github/copilot-instructions.md) and a changeset (.changeset/drop-node-20.md) are aligned with the new policy.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Raises engines.node to >=22.0.0. |
| .github/workflows/ci.yml | Defaults single-version jobs to Node 24; matrix → ['22','24']; coverage upload condition tracks node 24. |
| .github/workflows/release.yml | Bumps release Node to 24; rewords npm-version comment to note Node 22 still bundles npm 10. |
| .github/workflows/deploy-docs.yml | Bumps docs build Node to 24. |
| .github/workflows/self-check.yml | Bumps self-check Node to 24. |
| CLAUDE.md | Stack note updated to Node 22+. |
| .github/copilot-instructions.md | Stack note updated to Node 22+. |
| CONTRIBUTING.md | Prereq updated to Node 22+. |
| .changeset/drop-node-20.md | Minor changeset explaining the policy change and rationale. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
engines.node; require Node 22+.['22','24'].Version policy
Shipping as a
minor.enginesis advisory (npm warns but installs), no Node 22+ APIs are introduced, and the package is too young for a 2.0.0 on a Node-support narrowing alone. See.changeset/drop-node-20.mdfor the full rationale and the user-facing note.Test plan
package.jsonengines field shows>=22.0.0.