Skip to content

What to Know Before Upgrading to Node.js 26

Posted on:May 27, 2026

Node.js 26 shipped on 2026/05/05 and is currently the Current release; it’s scheduled to move to LTS around October 2026.

Temporal API on by default

This is probably the most talked-about change in Node.js 26. Using Temporal used to require a flag like --harmony; now it’s available globally with no flag.

Temporal is meant to replace Date. A few of the long-standing complaints about Date:

Temporal fixes all of these: immutable objects, explicit time zones, one-indexed months. If you’re building scheduling, billing, or cross-timezone logic, it’s worth moving over.

One caveat: Temporal is still at TC39 stage 3, so the API may still shift. For something going to production, it’s worth holding off a little.

V8 upgraded to 14.6

V8 jumps all the way to 14.6 (pulled from Chromium 146), bringing two new APIs I’m personally looking forward to:

getOrInsert especially: previously you’d either wrap your own helper or lean on ??=, and now it’s built in.

Undici upgraded to 8

Node.js’s built-in fetch is backed by Undici, now bumped to 8.0.2 — mostly closer alignment with the WHATWG Fetch spec, plus changes to streaming and connection pooling.

For everyday fetch calls the API is unchanged, so there’s nothing to do.

A few removals

Things to watch for before upgrading:

Also, module.register() is now a runtime deprecation — it still works but logs a warning, so it’s worth replacing when you get a chance.

Build requirements went up too: GCC 13.2+, Python 3.9 no longer supported, Windows SDK 11. Worth noting if you build Node yourself.

Upgrade steps

Going from Node 22 / 24 to 26, here’s what I’d do:

  1. Switch locally and run the tests, looking for any _stream_* or writeHeader() calls.
  2. Watch the console for new deprecation warnings, especially module.register().
  3. If there’s any date/time logic, take the chance to evaluate migrating to Temporal.
  4. Bump the CI build image to GCC 13.2+.

For actual production I’d wait until it becomes LTS in October; for now it’s fine to try in a dev environment.

One side note: per the official announcement, Node.js 26 is the last release on the old cycle. From v27 on it changes to “one major every April, LTS in October, with no more skipped odd-numbered versions.” I’ll write that up once I actually run into it.

Closing

This is mainly a record of the Node.js 26 changes I found relevant, so I don’t have to re-read the release notes next time I upgrade.

For day-to-day development the most noticeable are Temporal and Map.getOrInsert; the rest is mostly internal optimization and legacy cleanup. I’ll add a migration write-up once a project actually moves over.