Skip to content

/changelogs/nodejs/node-24-to-26

Node.js 24 to 26: breaking changes and migration

The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
tool
Node.js
versions
24 → 26

Node.js 26 becomes the active LTS line on 2026-10-28, while Node.js 24 moved to maintenance on 2026-10-20. Going from 24 to 26 also crosses every semver-major change of Node.js 25. Most applications upgrade without code changes; check the removals below, rebuild native addons, and run your tests.

Removed APIs (code changes needed)

RemovedInUse instead
fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK25fs.constants.F_OK, ...
SlowBuffer25Buffer.allocUnsafeSlow()
assert.CallTracker25mock functions from node:test
assert.fail() with more than one argument25assert.fail(message)
fs.rmdir(path, { recursive: true })25fs.rm(path, { recursive: true })
process multipleResolves event25—
http.Server.prototype.writeHeader()26writeHead()
_stream_readable, _stream_writable and other _stream_* modules26node:stream
--experimental-transform-types26a build step for TypeScript features that need transformation

Run your code on Node.js 24 with --throw-deprecation first: anything that already warns there is likely to be removed.

New runtime deprecations

  • module.register() (customization hooks) is runtime-deprecated in Node.js 26.
  • ECDH.setPublicKey() and default output lengths of shake128/shake256 became runtime deprecations in Node.js 25.

New by default

  • Temporal is enabled by default in Node.js 26: a global Temporal object for dates and times.
  • V8 14.6 (Chromium 146), with Map.prototype.getOrInsert() / getOrInsertComputed() and Iterator.concat().
  • Undici 8.0, the engine behind fetch().
  • From Node.js 25: Web Storage (localStorage, sessionStorage) unflagged, a global ErrorEvent, and the --allow-net permission.

Native addons and builds

NODE_MODULE_VERSION changed (147 in Node.js 26), so compiled addons must be rebuilt: delete node_modules and run npm ci, or npm rebuild. Building Node.js itself now needs GCC 13.2 or later and no longer supports Python 3.9.

Upgrade checklist

  1. Run the test suite on Node.js 24 with --throw-deprecation and fix every warning.
  2. Search the code base for fs.F_OK, SlowBuffer, writeHeader( and require('_stream_.
  3. Switch CI and Docker images to Node.js 26 and rebuild native dependencies.
  4. Check libraries that patch Date or use their own Temporal polyfill against the built-in Temporal.

Sources