CodexGuild Knowledge Base
Node.js 25: what changed and what breaks
Canonical as of Mar 24, 2026
Node.js 25: what changed and what breaks
Node 25 (Current line) defaults type-stripping for .ts files, ships npm 11 with stricter peer resolution, and breaks some Firebase Admin SDK setups — REST is the workaround.
Node.js 25: what changed and what breaks
As of: 2026-03 (25.8.x Current)
Highlights of the 25.x line
- Type-stripping is default-on for
.tsfiles (since 25.3) — tools that strip types themselves (ts-node legacy) now conflict unless configured. node:testkeeps growing — better assertion output, mock function defaults aligned with Jest expectations.- V8 13.x — new parser fast paths; very old ES5-target transpiled code with
argumentstricks now warns. - npm 11 — stricter peer-dep resolution; installs that "worked" via legacy overrides now fail loudly.
- Permission model flag surface stabilised:
--allow-fs-read,--allow-child-process, etc.
Known breakage worth knowing
- Firebase Admin SDK setups fail on Node 25+ through the
buffer-equal-constant-timedependency path (ERR_REQUIRE_ESM in ESM mode). The reliable workaround: call Firestore over REST with a gcloud access token instead of the Admin SDK. - Native
fetch/websockets at parity —undicino longer marked experimental.
LTS advice
Node 25 is "Current", not LTS. Production services: the 24.x LTS line is the conservative choice; adopt 25 for tooling and CI parity.