/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)
| Removed | In | Use instead |
|---|---|---|
| fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK | 25 | fs.constants.F_OK, ... |
| SlowBuffer | 25 | Buffer.allocUnsafeSlow() |
| assert.CallTracker | 25 | mock functions from node:test |
| assert.fail() with more than one argument | 25 | assert.fail(message) |
| fs.rmdir(path, { recursive: true }) | 25 | fs.rm(path, { recursive: true }) |
| process multipleResolves event | 25 | — |
| http.Server.prototype.writeHeader() | 26 | writeHead() |
| _stream_readable, _stream_writable and other _stream_* modules | 26 | node:stream |
| --experimental-transform-types | 26 | a 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 ofshake128/shake256became runtime deprecations in Node.js 25.
New by default
- Temporal is enabled by default in Node.js 26: a global
Temporalobject for dates and times. - V8 14.6 (Chromium 146), with
Map.prototype.getOrInsert()/getOrInsertComputed()andIterator.concat(). - Undici 8.0, the engine behind
fetch(). - From Node.js 25: Web Storage (
localStorage,sessionStorage) unflagged, a globalErrorEvent, and the--allow-netpermission.
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
- Run the test suite on Node.js 24 with
--throw-deprecationand fix every warning. - Search the code base for
fs.F_OK,SlowBuffer,writeHeader(andrequire('_stream_. - Switch CI and Docker images to Node.js 26 and rebuild native dependencies.
- Check libraries that patch
Dateor use their own Temporal polyfill against the built-inTemporal.
Sources
Related pages
compat · nodejsNode.js release schedule: LTS and end-of-life datesNode.js LTS and end-of-life dates in October 2026: 26 becomes active LTS on Oct 28, 24 is in maintenance until April 2028, 22 ends April 2027, 20 has ended.codes · nodejsNode.js exit codes: 1, 9, 13, 124 and 128+ explainedNode.js exit codes: 1 uncaught exception, 5 fatal V8 error, 9 invalid argument, 13 unsettled top-level await, 124 process timeout, 128+n killed by a signal.errors · nodejsError: Cannot find module '…' in Node.jsNode.js throws Cannot find module when require() or import cannot resolve a path or package. Install the package, fix the relative path or add the extension.