Back to Blog
Developer Tools May 19, 2026 5 min read

Node.js 26 Is Now Current: Temporal API Ships by Default, V8 14.6, and the Date Object Is Obsolete

Node.js 26 landed May 5 as the new Current release line, enabling the Temporal API by default and ending the long reign of JavaScript's broken Date object. V8 jumps to 14.6, Undici to 8.0, and LTS follows in October 2026.

Node.js 26 Is Now Current: Temporal API Ships by Default, V8 14.6, and the Date Object Is Obsolete

Node.js 26.0.0 shipped on May 5, 2026, and the Temporal API is finally enabled by default. After years of the --harmony-temporal flag, Intl polyfills, and a rotating cast of date-fns, luxon, and dayjs wrappers papering over Date’s fundamental flaws, JavaScript now has a first-class date and time API built into the runtime.

Date isn’t removed yet — but it is functionally deprecated. New code should not be using it. Temporal provides Temporal.PlainDate, Temporal.ZonedDateTime, Temporal.Duration, Temporal.Now, and Temporal.Instant for epoch-anchored moments. Every operation returns a new value. Nothing mutates. Timezone comparisons don’t require UTC round-trips.

What Temporal Actually Fixes

The old API made these bugs trivially easy to introduce:

// Silently wrong when the target month has fewer days
new Date(2026, 0, 31 + 30)  // "March 2" — not "February 28"

// Mutation: modifying d affects every reference to it
const d = new Date();
d.setMonth(d.getMonth() + 1);

// Timezone arithmetic requires a manual UTC dance
const utc = Date.UTC(year, month, day);

Temporal’s equivalent:

Temporal.PlainDate.from('2026-01-31').add({ months: 1 })
// Returns 2026-02-28 — handles overflow correctly by default
// Can be configured to throw on ambiguous results

const now = Temporal.Now.zonedDateTimeISO('America/New_York');
const tomorrow = now.add({ days: 1 });
// Timezone-aware, DST-correct, no UTC dance

The throw-on-ambiguity behavior is the right default. Date silently returns wrong values; Temporal forces you to handle edge cases explicitly.

What Else Ships in Node.js 26

  • V8 14.6 — improved object destructuring performance, better JIT compile hints, reduced startup overhead for module-heavy applications
  • Undici 8.0 — Node’s built-in HTTP client with better AbortSignal propagation, cleaner fetch cancellation, improved streaming performance
  • Formal deprecations: node:punycode, node:domain, and several older crypto methods are flagged for removal in a future major. Check your codebase for these before upgrading.
  • require() of ES modules — the experimental flag is gone; synchronous require() for ES modules ships stable, which removes the last major friction point in the CJS/ESM interop story

The Undici 8.0 upgrade is particularly meaningful for applications doing high-volume HTTP fetching. The improved AbortSignal handling fixes a class of request-leak bugs that appeared under load when requests were cancelled mid-flight.

LTS Timeline

Node.js 26 enters Long Term Support in October 2026 and receives maintenance until April 2028. If you’re on Node.js 22 LTS, you have until April 2027 for security patches — no urgent action needed. If you’re still on Node.js 18, it reached end-of-life in April 2025 and you’re already running unsupported software.

The Temporal API alone is reason enough to start migrating date handling in new code today, without waiting for the October LTS cut. The API is stable, the spec is finalized, and the behavior is correct. Three years of dayjs in your dependencies is not a point of pride.

nodejs javascript temporal-api developer-tools v8