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.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
AbortSignalpropagation, cleaner fetch cancellation, improved streaming performance - Formal deprecations:
node:punycode,node:domain, and several oldercryptomethods are flagged for removal in a future major. Check your codebase for these before upgrading. require()of ES modules — the experimental flag is gone; synchronousrequire()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.