Skip to content

Update Node.js to v24#2013

Open
renovate[bot] wants to merge 10 commits into
mainfrom
renovate/node-24.x
Open

Update Node.js to v24#2013
renovate[bot] wants to merge 10 commits into
mainfrom
renovate/node-24.x

Conversation

@renovate

@renovate renovate Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
node (source) major 22.23.124.18.0

Release Notes

nodejs/node (node)

v24.18.0: 2026-06-23, Version 24.18.0 'Krypton' (LTS), @​richardlau prepared by @​sxa

Compare Source

Notable Changes
  • [e07e7a31e1] - crypto: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #​63527
  • [44c8ebcbd6] - http: avoid stream listeners on idle agent sockets (Matteo Collina) #​64004
  • [d3ef4122ee] - (SEMVER-MINOR) buffer: increase Buffer.poolSize default to 64 KiB (Matteo Collina) #​63597
  • [bb2857b85a] - (SEMVER-MINOR) crypto: align key argument names in docs and error messages (Filip Skokan) #​62527
  • [b9d5e87880] - (SEMVER-MINOR) crypto: accept key data in crypto.diffieHellman() and cleanup DH jobs (Filip Skokan) #​62527
  • [ccd756d61e] - (SEMVER-MINOR) crypto: add TurboSHAKE and KangarooTwelve Web Cryptography algorithms (Filip Skokan) #​62183
  • [4c9251fc09] - (SEMVER-MINOR) http: add writeInformation to send arbitrary 1xx status codes (Tim Perry) #​63155
  • [8c989ec4a3] - (SEMVER-MINOR) inspector: expose precise coverage start to JS runtime (sangwook) #​63079
  • [3f54c8ba32] - Revert "stream: noop pause/resume on destroyed streams" (Stewart X Addison) #​63834
Commits

v24.17.0: 2026-06-18, Version 24.17.0 'Krypton' (LTS), @​aduh95

Compare Source

This is a security release.

Notable Changes
  • (CVE-2026-48618) tls: normalize hostname for server identity checks (Matteo Collina) – High
  • (CVE-2026-48933) crypto: guard WebCrypto cipher output length (Filip Skokan) – High
  • (CVE-2026-48615) lib,test: redact proxy credentials in tunnel errors (Matteo Collina) – Medium
  • (CVE-2026-48619) http2: cap originSet size to prevent unbounded memory growth (Matteo Collina) – Medium
  • (CVE-2026-48928) tls: fix case-sensitive SNI context matching (Matteo Collina) – Medium
  • (CVE-2026-48930) dns,net: reject hostnames with embedded NUL bytes (Matteo Collina) – Medium
  • (CVE-2026-48934) tls: bind reusable sessions to authenticated host (Matteo Collina) – Medium
  • (CVE-2026-48937) deps: fix integration issues with the latest nghttp2 – Medium
  • (CVE-2026-48617) permission: handle process.chdir on writereport (RafaelGSS) – Low
  • (CVE-2026-48931) http: fix response queue poisoning in http.Agent (Matteo Collina) – Low
  • (CVE-2026-48935) permission: disable FileHandle utimes with permission model (RafaelGSS) – Low
Commits

v24.16.0: 2026-05-21, Version 24.16.0 'Krypton' (LTS), @​aduh95

Compare Source

Notable Changes
  • [b267f6bca3] - (SEMVER-MINOR) crypto: implement randomUUIDv7() (nabeel378) #​62553
  • [ec2451b9cd] - (SEMVER-MINOR) debugger: add edit-free runtime expression probes to node inspect (Joyee Cheung) #​62713
  • [9705f628d9] - (SEMVER-MINOR) fs: add signal option to fs.stat() (Mert Can Altin) #​57775
  • [40ccfdecf9] - (SEMVER-MINOR) fs: expose frsize field in statfs (Jinho Jang) #​62277
  • [d7188af5c9] - (SEMVER-MINOR) http: harden ClientRequest options merge (Matteo Collina) #​63082
  • [aa1d8a9afc] - (SEMVER-MINOR) http: add req.signal to IncomingMessage (Akshat) #​62541
  • [6f37f7e240] - (SEMVER-MINOR) stream: propagate destruction in duplexPair (Ahmed Elhor) #​61098
  • [d14029be7f] - (SEMVER-MINOR) test_runner: support test order randomization (Pietro Marchini) #​61747
  • [d142c584cd] - (SEMVER-MINOR) test_runner: align mock timeout api (sangwook) #​62820
  • [01a9552585] - (SEMVER-MINOR) test_runner: add mock-timers support for AbortSignal.timeout (DeveloperViraj) #​60751
  • [00705a459a] - (SEMVER-MINOR) util: colorize text with hex colors (Guilherme Araújo) #​61556
Commits

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • Between 07:00 AM and 04:59 PM, only on Monday, Tuesday, Wednesday, and Thursday (* 7-16 * * 1,2,3,4)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Never, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate

renovate Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

renovate Bot and others added 3 commits July 16, 2026 18:05
The Renovate update only bumped .nvmrc, which nothing in CI or
production reads: the Cloud Run image and every test container come
from the Dockerfile FROM line, and our docker:disableMajor preset
means Renovate can never bump that base image major itself. Merged
alone, the repo would declare Node 24 while everything that actually
runs stayed on 22 — and a green build here would prove nothing, since
the tests execute inside the Node 22 image.

- Dockerfile base image → node:24.18.0-alpine, so tests and
  production genuinely move to 24
- @types/node → 24.13.3 and the renovate allowedVersions pin '<23' →
  '<25', per the lockstep rule documented in renovate.json5
setup-node's lts/* already resolves to a different Node major than the
deployed runtime and would silently jump to Node 26 at the next LTS
switch, so the frozen-lockfile install was being validated on a Node
version nobody ships. Reading .nvmrc keeps the check on the same
version as the Dockerfile.
sagzy added 6 commits July 21, 2026 10:57
The flake's overlay claimed to be the central place to set the node
version but just passed through the nixpkgs default, which the lock
file (from June 2025) resolves to Node 22. With the rest of the repo
on Node 24, direnv users would silently get a different major than
CI and production for host-side tooling. Pinning nodejs_24 makes the
shell track the deployed major regardless of what the locked nixpkgs
defaults to.
This upgrade shipped as a Renovate commit that only bumped .nvmrc plus
manual companion commits for everything else, because docker:disableMajor
blocks the node base image major while the nvm manager is unconstrained.
Left as-is, the next Node major would repeat that split — and worse: CI
now installs from .nvmrc, so merging a lone .nvmrc bump would have CI
validating a runtime production doesn't run. Grouping the docker node
package with the node-version update makes Renovate open one PR that
moves both, with automerge off since a runtime major always deserves
review.
python3/g++/make were only ever needed for install-time compilation,
which this image never does: pnpm install runs with --ignore-scripts,
pnpm-workspace.yaml denies all build scripts, and every native dep
(sharp, esbuild, mysql2) ships prebuilt binaries or is pure JS. The
later apk del couldn't reclaim the bytes either — in a single-stage
image the toolchain stays baked into the earlier layer, so the pushed
image carried ~200MB of dead weight that Cloud Run pulls on every
cold-start scale-out, and every cache-busted build (like this Node
bump) reinstalled it for nothing.
The Node version was pinned in .nvmrc, the Dockerfile, and CI, but
nothing surfaced a mismatch for local installs — a contributor still
on Node 22 could pnpm install and run host-side tooling without any
signal that the project had moved on. With engines set, pnpm warns on
the mismatch at install time. Deliberately not enabling engine-strict:
a hard failure would also apply to dependencies' engines ranges and
risks breaking installs over third-party metadata.
The comment hardcoded the runtime major in prose, so every Node
upgrade had to edit the explanation as well as the allowedVersions
value — and a missed edit would leave it describing the wrong major.
It also lost precision in the last rewrite ('APIs that won't exist in
production' no longer said whose APIs). Now only allowedVersions needs
touching on a Node bump, and the rationale spells out the hazard:
typings newer than the runtime let code compile against APIs
production doesn't have.
# Conflicts:
#	package.json
#	pnpm-lock.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant