Skip to content

chore(node): drop Node 20; default to 24, test 22 + 24#19

Merged
ylabonte merged 1 commit into
mainfrom
chore/bump-node-22-24
May 18, 2026
Merged

chore(node): drop Node 20; default to 24, test 22 + 24#19
ylabonte merged 1 commit into
mainfrom
chore/bump-node-22-24

Conversation

@ylabonte
Copy link
Copy Markdown
Owner

Summary

  • Drop Node 20 from CI matrix and from engines.node; require Node 22+.
  • Default Node for lint/typecheck/build/release/deploy-docs/self-check bumps to 24.
  • Test matrix becomes ['22','24'].

Version policy

Shipping as a minor. engines is 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.md for the full rationale and the user-facing note.

Test plan

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.
Copilot AI review requested due to automatic review settings May 18, 2026 19:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json engines.node bumps from >=20.0.0 to >=22.0.0; CI test matrix becomes ['22','24']; coverage upload now keys off node == '24'.
  • All single-version setup-node jobs (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.

@ylabonte ylabonte merged commit 9eae823 into main May 18, 2026
17 checks passed
@ylabonte ylabonte deleted the chore/bump-node-22-24 branch May 18, 2026 19:18
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