Problem/Motivation
Node.js 20 reached end of life on 30 April 2026, and Drupal core main now requires "node": ">= 24.0" in core/package.json. View Modes Inventory - Bootstrap Ready still declares "node": ">= 18.0" and "yarn": ">= 1.6" on 3.0.x, 4.0.x, 5.0.x and 8.x-2.x, with a Yarn Classic yarn.lock everywhere, even where packageManager says yarn@4.9.1. The 5.0.x GitLab CI installs Node 20.
Node 24 is the LTS line, latest v24.22.2, and it is one of the lines the November 2026 security releases will patch. Pinning the major picks those patches up with no further change. Local systems should use Node.js 24 or 26.
Steps to reproduce
- On any of 3.0.x, 4.0.x, 5.0.x or 8.x-2.x, open
package.json: the engines say"node": ">= 18.0"and"yarn": ">= 1.6", andyarn.lockis a Yarn Classic lockfile. - On 4.0.x and 5.0.x,
packageManagerisyarn@4.9.1. - On 5.0.x, open
.gitlab-ci.yml: the browser test jobs install NodeSourcesetup_20.x..gitlab-ci-local.ymlrunsnode:20.
Proposed resolution
package.jsonengines:"node": ">= 24.0". On every branch.- 3.0.x, 4.0.x and 5.0.x: Yarn moves to
yarn@4.18.1with the floor">= 4.18.1", and.yarnrc.ymlfollows the Varbase standard (approvedGitRepositories,enableScripts,nodeLinker: node-modules,npmMinimalAgeGate: 0), which Yarn before 4.14.0 rejects. - 5.0.x:
.gitlab-ci.ymlinstalls NodeSourcesetup_24.xfor the browser test jobs, which already setYARN_ENABLE_IMMUTABLE_INSTALLSto"false"..gitlab-ci-local.ymlrunsnode:24. - 5.0.x:
.gitlab-ci.yml:.composer-base, which every composer job extends, andstylelintsetYARN_RC_FILENAME: .yarnrc.core.ymlandYARN_NODE_LINKER: node-modules, so Drupal core's own Yarn 4.9.1 in those jobs does not read the project.yarnrc.yml, whose keys need Yarn 4.14. - 5.0.x: the
testscripts runnode ./node_modules/@cucumber/cucumber/bin/cucumber.js: Yarn 4 does not expose thecucumber-jsbin of a dependency of@vardot/varbase-e2etoyarn run, soyarn testfailed. CI calls it throughnpx, which still works. - 8.x-2.x stays on Yarn Classic: Yarn 4 cannot install the
farbtasticGitHub tarball, which has nopackage.json(Manifest not found). yarn.lockis removed on every branch and.gitignorenow ignoresyarn.lock,package-lock.jsonandpnpm-lock.yaml(.yarn/too on the Yarn 4 branches), so installs resolve frompackage.json.- Dependency ranges in
package.jsonuse carets, the way Drupal core writes them: exact versions,~and.xranges become^MAJOR.MINOR.PATCH, with no major bump.
AI-Generated: Yes
Remaining tasks
- ✅ File an issue
- ✅ Addition/Change/Update/Fix
- ❌ Testing to ensure no regression
- ❌ Move 8.x-2.x to Yarn 4 once
farbtasticcomes from a package that has apackage.json - ➖ Automated unit testing coverage
- ➖ Automated functional testing coverage
- ➖ UX/UI designer responsibilities
- ➖ Readability
- ➖ Accessibility
- ➖ Performance
- ➖ Security
- ➖ Developer Documentation
- ➖ User Guide Documentation
- ❌ Reviewed by human
- ❌ Code review by maintainers
- ❌ Full testing and approval
- ❌ Credit contributors
- ❌ Review with the product owner
- ❌ Release notes snippet
- ✅ Release
User interface changes
- N/A
API changes
- N/A
Data model changes
- N/A
Release notes snippet
- Node.js 24 or newer is now required, in the engines and CI. Yarn 4.18.1 is the package manager.
Issue fork vmi-3635746
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #6
rajab natshahComment #11
rajab natshah✅ Released vmi-4.0.2
Comment #12
rajab natshah✅ Released vmi-8.x-2.24
Comment #13
rajab natshah✅ Released vmi-5.0.2
The 3.0.x commit is merged, but 3.0.x is a legacy line with no further releases, so it does not hold this issue open.
Comment #15
rajab natshah✅ Released vmi-3.0.7