feat!: end of support for Node.js v18 and v20#7054
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR raises the monorepo Node.js minimum to 22.12.0 across manifests and CI, simplifies plugin node-version selection by removing the upcoming-minimum check and plugin package.json inspection, updates addPluginsNodeVersion call sites, replaces corepack-based pnpm provisioning with explicit corepack install/Yarn enable and global pnpm@10 installation in workflows, and removes semver-gated test registration making several tests unconditional. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This pull request adds or modifies JavaScript ( |
c5cb934 to
618e7c7
Compare
The monorepo fixtures build with pnpm, which corepack can't reliably provision on every CI leg (e.g. the pinned Node 22.12.0 and Windows test-build legs). Replace the removed semver-based guard with a runtime pnpm check so these tests skip where pnpm can't run instead of failing. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
618e7c7 to
a78c409
Compare
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/workflow.yml (1)
86-88:⚠️ Potential issue | 🟠 Major | ⚡ Quick winFix Node 22 detection in npm pin step conditions.
Line 88 and Line 173 use
matrix.node-version == '22', which does not match the new oldest-leg value22.12.0. That skips the npm@10 pin exactly on the newly added Node 22.12.0 lanes, despite the step intent being “Node 22+”.Suggested patch
- if: ${{ !steps.release-check.outputs.IS_RELEASE && matrix.node-version == '22' }} + if: ${{ !steps.release-check.outputs.IS_RELEASE && startsWith(matrix.node-version, '22') }}Apply this at both:
testjob npm setup steptest-buildjob npm setup stepAlso applies to: 171-173
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/workflow.yml around lines 86 - 88, The step named "Setup npm version" currently checks matrix.node-version == '22', which misses values like '22.12.0'; update the if condition for both the "Setup npm version" steps in the test and test-build jobs so it detects Node 22.x by using a startsWith/contains check on matrix.node-version (e.g. startsWith(matrix.node-version, '22')) instead of strict equality, ensuring the npm@10 pin runs for Node 22.12.0 and any other 22.x versions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In @.github/workflows/workflow.yml:
- Around line 86-88: The step named "Setup npm version" currently checks
matrix.node-version == '22', which misses values like '22.12.0'; update the if
condition for both the "Setup npm version" steps in the test and test-build jobs
so it detects Node 22.x by using a startsWith/contains check on
matrix.node-version (e.g. startsWith(matrix.node-version, '22')) instead of
strict equality, ensuring the npm@10 pin runs for Node 22.12.0 and any other
22.x versions.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ae479f24-4d50-457f-9652-1c5115353022
📒 Files selected for processing (4)
.github/workflows/workflow.ymlpackages/build/tests/blobs_upload/tests.jspackages/build/tests/frameworks_api/tests.jspackages/build/tests/functions/tests.js
🔗 Linked repositories identified
CodeRabbit considers these linked repositories for cross-repo context during reviews:
netlify/blueprints(manual)
🚧 Files skipped from review as they are similar to previous changes (3)
- packages/build/tests/blobs_upload/tests.js
- packages/build/tests/frameworks_api/tests.js
- packages/build/tests/functions/tests.js
🎉 Thanks for submitting a pull request! 🎉
Summary
Related to FRB-2069
Merge on 2026-06-16
Phase 2 of the Node.js 18/20 end-of-support rollout for Build Plugins, and the breaking half. Raises the minimum Node.js version used to execute local / package.json build plugins from >=18.14.0 to >=22.12.0. Plugins running on a Node.js version below 22.12 now fall back to the system default Node.js version (≥22) instead of the user's version, with a warning. The advance-notice warning added in #7053 is removed (its job is done once this lands).
Branch Protection Note
This PR renames the "oldest supported Node" CI legs (test-build (ubuntu-24.04, 18.14.0, npm ci, 0..4) → …22.12.0…). Required-status-check names in main's branch protection still reference the old names, so this PR shows 5 checks stuck at "Expected — Waiting for status to be reported" — those jobs no longer exist; the renamed 22.12.0 legs run and pass.
Before merging, a repo admin must update main's required status checks:
Testing
Verified working with deploy

6a29b9472f16e7736056a2d6For us to review and ship your PR efficiently, please perform the following steps:
we can discuss the changes and get feedback from everyone that should be involved. If you`re fixing a typo or
something that`s on fire 🔥 (e.g. incident related), you can skip this step.
your code follows our style guide and passes our tests.
A picture of a cute animal (not mandatory, but encouraged)