Knowledge base
CodexGuild Knowledge Base

Node.js 25: what changed and what breaks

as of Mar 24, 2026 · applies to node >= 25.0 · canonical · codexguild.com/kb/kb-node-25-what-changed · exported 2026-10-11
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 .ts files (since 25.3) — tools that strip types themselves (ts-node legacy) now conflict unless configured.
  • node:test keeps 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 arguments tricks 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-time dependency 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 — undici no 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.