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. Drupal Website API Starter declares "node": ">= 20.0" and yarn@4.9.3, commits a yarn.lock, and its CI runs node:20 and NodeSource setup_20.x.

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

  1. On 2.0.x, open package.json: "node": ">= 20.0", packageManager yarn@4.9.3, and a committed yarn.lock.
  2. Open .gitlab-ci.yml: cspell and the lint jobs run node:20, the webship-js job installs NodeSource setup_20.x.

Proposed resolution

  • package.json engines: "node": ">= 24.0". Yarn moves to yarn@4.18.1 (packageManager) with the floor ">= 4.18.1", and .yarnrc.yml sets approvedGitRepositories, enableScripts, nodeLinker: node-modules, npmMinimalAgeGate: 0, which Yarn before 4.14.0 rejects.
  • .gitlab-ci.yml: node:24 for cspell and the lint jobs, NodeSource setup_24.x for the webship-js job, and YARN_ENABLE_IMMUTABLE_INSTALLS: "false" for every job, since no lockfile is committed.
  • .gitlab-ci.yml: .composer-base, which every composer job extends, sets YARN_RC_FILENAME: .yarnrc.core.yml and YARN_NODE_LINKER: node-modules, so Drupal core's own Yarn in those jobs does not read the project .yarnrc.yml.
  • The test scripts call node ./node_modules/@cucumber/cucumber/bin/cucumber.js: Yarn 4 does not expose the cucumber-js bin of a webship-js dependency to yarn run (command not found: cucumber-js).
  • yarn.lock is removed. .gitignore now ignores yarn.lock, package-lock.json and pnpm-lock.yaml, so installs resolve from package.json.

AI-Generated: Yes

Remaining tasks

  • ✅ File an issue
  • ✅ Addition/Change/Update/Fix
  • ✅ Testing to ensure no regression
  • ➖ 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
Command icon 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

rajab natshah created an issue. See original summary.

rajab natshah’s picture

Issue summary: View changes
Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.