You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enforces the Node/npm toolchain for this repo as a prerequisite for the npm min-release-age supply-chain cooldown. min-release-age requires npm >= 11.10.0 and is silently ignored by older npm versions. Node 24's earlier bundled npm is below that floor, while 24.19.0 bundles npm 11.17.0 — staying on the same 24.x LTS line avoids CI-image risk.
.nvmrc: bumped from 24 to 24.19.0.
package.json: added an engines field with exact pins (node 24.19.0, npm 11.17.0, matching App). This repo is not published to npm, so exact pins are appropriate.
.npmrc: added with engine-strict=true so npm install/npm ci fail loudly (EBADENGINE) under a non-compliant toolchain. Removed the stale .npmrc entry from .gitignore — actions/setup-node writes auth config to a user-level npmrc via NPM_CONFIG_USERCONFIG, not the project file.
package-lock.json: regenerated under Node 24.19.0 / npm 11.17.0 (metadata-only changes, no dependency version changes).
All CI workflows already read the Node version via node-version-file: .nvmrc, so no workflow changes were needed.
NicolasBonet
changed the title
Enforce Node 26.5.0 / npm 11.17.0 via engines and engine-strict
Enforce Node 24.19.0 / npm 11.17.0 via engines and engine-strict
Aug 25, 2026
The reason will be displayed to describe this comment to others. Learn more.
Could we also add .npmrc to the paths filters in lint.yml, oxfmt.yml, test.yml and typecheck.yml? This PR makes .npmrc an input to those jobs, but a follow-up that changes only .npmrc (like the planned min-release-age) currently triggers none of the workflows that run npm ci on the branch.
Adding it next to .nvmrc keeps those changes covered
Could we also add .npmrc to the paths filters in lint.yml, oxfmt.yml, test.yml and typecheck.yml? This PR makes .npmrc an input to those jobs, but a follow-up that changes only .npmrc (like the planned min-release-age) currently triggers none of the workflows that run npm ci on the branch.
Adding it next to .nvmrc keeps those changes covered
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Details
Enforces the Node/npm toolchain for this repo as a prerequisite for the npm
min-release-agesupply-chain cooldown.min-release-agerequires npm >= 11.10.0 and is silently ignored by older npm versions. Node 24's earlier bundled npm is below that floor, while 24.19.0 bundles npm 11.17.0 — staying on the same 24.x LTS line avoids CI-image risk..nvmrc: bumped from24to24.19.0.package.json: added anenginesfield with exact pins (node 24.19.0,npm 11.17.0, matching App). This repo is not published to npm, so exact pins are appropriate..npmrc: added withengine-strict=truesonpm install/npm cifail loudly (EBADENGINE) under a non-compliant toolchain. Removed the stale.npmrcentry from.gitignore—actions/setup-nodewrites auth config to a user-level npmrc viaNPM_CONFIG_USERCONFIG, not the project file.package-lock.json: regenerated under Node 24.19.0 / npm 11.17.0 (metadata-only changes, no dependency version changes).All CI workflows already read the Node version via
node-version-file: .nvmrc, so no workflow changes were needed.Related Issues
For https://github.com/Expensify/Expensify/issues/675045
Manual Tests
npm installandnpm ciboth complete successfully.npm install --dry-runfails withnpm error code EBADENGINE—Required: {"node":"24.19.0","npm":"11.17.0"},Actual: {"npm":"10.8.2","node":"v20.20.0"}.Linked PRs
None.