Description
CDS 10 requires Node.js 22 as the minimum runtime. Node.js 20 reaches end-of-life and is no longer supported. Projects must update all locations that pin a Node.js version: local development tooling (.nvmrc), package.json engine declarations, Docker base images, CI/CD pipeline matrices, and BTP runtime configurations. Running CDS 10 on Node.js 20 or earlier is not supported and may produce unexpected errors.
How to Check
- [ ] Check
.nvmrcfor a version below22. - [ ] Check the
engines.nodefield inpackage.jsonfor a range that excludes Node.js 22 (e.g.">=18"is fine;"20.x"is not). - [ ] Search Dockerfiles for
FROM node:lines using a version tag below22. - [ ] Search CI/CD pipeline files (
.github/workflows/*.yml,Jenkinsfile,.gitlab-ci.yml, etc.) fornode-versionmatrix entries below22. - [ ] Check BTP deployment descriptors (
mta.yaml,manifest.yml) for Node.js version constraints. - [ ] Verify the local Node.js runtime:
node --version.
Migration Steps
Update
.nvmrc:diff- 20 + 22Update the
enginesfield inpackage.json:diff"engines": { - "node": ">=20" + "node": ">=22" }Update Dockerfile base images:
diff- FROM node:20-alpine + FROM node:22-alpineUpdate GitHub Actions node-version matrices:
diffstrategy: matrix: node-version: - - 20 + - 22Reinstall Node.js locally using nvm or your preferred version manager:
bashnvm install 22 nvm use 22Run
npm installto rebuild any native addons against Node.js 22, then run the full test suite.
Notes
Node.js 22 is an LTS release. Projects that declare "node": ">=20" in engines should update the lower bound to >=22 to make the requirement explicit. Check that any native npm dependencies (e.g. better-sqlite3) have pre-built binaries available for Node.js 22 or can be compiled against it.