Repository navigation
feat(node)!: require Node.js 22 or newer - #305
Conversation
Node.js 20 reached end-of-life on 2026-04-30. Raise engines.node to >=22, drop the Node 20 CI lane (every Node 22 mutation shard already runs the full nonmutation checks), move @types/node to 22.x, and update the docs that named Node 20. BREAKING CHANGE: @volcano.dev/sdk now requires Node.js 22 or newer. Upgrade server-side and build environments from Node.js 20 before updating. Browser support is unchanged.
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Dependabot moved actions/checkout, actions/setup-node and actions/setup-go to v7 SHAs but left their '# v6' comments. Name the exact release each SHA resolves to. The Node 20 job keeps its comments; #305 removes that job.
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
Dependabot moved actions/checkout, actions/setup-node and actions/setup-go to v7 SHAs but left their '# v6' comments. Name the exact release each SHA resolves to. The Node 20 job keeps its comments; #305 removes that job.
Tracking
Tracks: https://konghq.atlassian.net/browse/VOL-1094 (epic VOL-1077)
Summary
Sean decided to drop Node.js 20, which reached end-of-life on 2026-04-30. Current dev tooling has moved past it: orval 8.38+ calls
Map.groupBy(#297), and Stryker 10 declaresnode >=22(#301).engines.node:>=20→>=22.pnpm quality(policy, all nonmutation checks and tests, then its mutation shard), so nothing that ran on Node 20 goes unchecked on Node 22. The SDK Lint, Tests, and Build and Quality Gate aggregators now expect 1 and 5 results. Their names, and the repo's required checks, don't change.scripts/mutation-scope.test.mtsnow asserts that no job pins a separatenode-version.@types/node:20.19.43→22.20.5, the latest 22.x, so the types match the oldest supported runtime. The Dependabot comment that ties it toenginesnow says>=22.docs/getting-started.md,docs/versions.md, the README's durable-runtime note, the Next.js example README, andmaintainers/mutation-testing.md/quality-policy.mdno longer mention Node 20. Comments inpnpm-workspace.yamland the durable packaging test drop the Node 20 reasons and keep the ones that still apply.node: 'current'. Release jobs stay on Node 24.Release impact
The title and the commit use
feat(node)!:, and the commit carries aBREAKING CHANGE:footer. The repo is at 1.15.1, andbump-minor-pre-majorapplies only below 1.0, so Release Please will make the next release 2.0.0. Its changelog will include the breaking-change note. The open release PR (#287, 1.16.0) will become 2.0.0 too.Lockfile
pnpm installrewrotepnpm-lock.yamlin pnpm's own layout, as #303 expected for the first lockfile change after it. Apart from@types/node22.20.5 (and the peer suffixes that name it), the parsed lockfile is unchanged.Verification
Following the standing rule, I ran only the checks that cover this change. CI runs lint, the full suite and mutation.
node --test .quality-tools/mutation-scope.test.mjs: 7/7 pass.pnpm test:types(build and bothtscprojects with@types/node22): pass.tsc -p tsconfig.tooling.json: pass.jest __tests__/durable-runtime-packaging.test.ts: 6/6 pass.bash .github/scripts/actionlint.sh: clean.prettier --checkon every changed file except the lockfile, which Prettier now ignores: clean.🤖 Generated with Claude Code