coderef

TemporalLimited availability

The Temporal API allows you to work with dates, times, time zones, and durations. It is more powerful than the Date API.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
1–143Not supported
144+Supportedsince Jan 13, 2026
Current: 155
Edge
12–143Not supported
144+Supportedsince Jan 21, 2026
Current: 154
Firefox
1–138Not supported
139+Supportedsince May 27, 2025
Current: 157
Safari
✕Not supportedup to 27
Current: 27
MobileChrome Android
18–143Not supported
144+Supportedsince Jan 13, 2026
Current: 155
Firefox Android
4–138Not supported
139+Supportedsince May 27, 2025
Current: 157
Safari iOS
✕Not supportedup to 27
Current: 27

How to use

Not supported in Safari, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

JS
const today = Temporal.Now.plainDateISO();
const due = today.add({ days: 30 });
const meeting = Temporal.ZonedDateTime.from("2026-10-14T09:00[Asia/Kolkata]");
console.log(due.toString(), meeting.withTimeZone("Europe/London").toString());

Feature detection

JS · check before using
if (typeof Temporal !== "undefined") {
  // Temporal is available
}

Sub-features

Support for each part of the feature (243). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Date.toTemporalInstant144144139✕144139✕
Temporal144144139✕144139✕
Temporal.Duration144144139✕144139✕
Temporal.Duration.Duration144144139✕144139✕
Temporal.Duration.abs144144139✕144139✕
Temporal.Duration.add144144139✕144139✕
Temporal.Duration.blank144144139✕144139✕
Temporal.Duration.compare144144139✕144139✕
Temporal.Duration.days144144139✕144139✕
Temporal.Duration.from144144139✕144139✕
Temporal.Duration.hours144144139✕144139✕
Temporal.Duration.microseconds144144139✕144139✕
Temporal.Duration.milliseconds144144139✕144139✕
Temporal.Duration.minutes144144139✕144139✕
Temporal.Duration.months144144139✕144139✕
Temporal.Duration.nanoseconds144144139✕144139✕
Temporal.Duration.negated144144139✕144139✕
Temporal.Duration.round144144139✕144139✕
Temporal.Duration.seconds144144139✕144139✕
Temporal.Duration.sign144144139✕144139✕
Show 223 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Temporal.Duration.subtract144144139✕144139✕
Temporal.Duration.toJSON144144139✕144139✕
Temporal.Duration.toLocaleString144144139✕144139✕
Temporal.Duration.toString144144139✕144139✕
Temporal.Duration.total144144139✕144139✕
Temporal.Duration.valueOf144144139✕144139✕
Temporal.Duration.weeks144144139✕144139✕
Temporal.Duration.with144144139✕144139✕
Temporal.Duration.years144144139✕144139✕
Temporal.Instant144144139✕144139✕
Temporal.Instant.Instant144144139✕144139✕
Temporal.Instant.add144144139✕144139✕
Temporal.Instant.compare144144139✕144139✕
Temporal.Instant.epochMilliseconds144144139✕144139✕
Temporal.Instant.epochNanoseconds144144139✕144139✕
Temporal.Instant.equals144144139✕144139✕
Temporal.Instant.from144144139✕144139✕
Temporal.Instant.fromEpochMilliseconds144144139✕144139✕
Temporal.Instant.fromEpochNanoseconds144144139✕144139✕
Temporal.Instant.round144144139✕144139✕
Temporal.Instant.since144144139✕144139✕
Temporal.Instant.subtract144144139✕144139✕
Temporal.Instant.toJSON144144139✕144139✕
Temporal.Instant.toLocaleString144144139✕144139✕
Temporal.Instant.toString144144139✕144139✕
Temporal.Instant.toZonedDateTimeISO144144139✕144139✕
Temporal.Instant.until144144139✕144139✕
Temporal.Instant.valueOf144144139✕144139✕
Temporal.Now144144139✕144139✕
Temporal.Now.instant144144139✕144139✕
Temporal.Now.plainDateISO144144139✕144139✕
Temporal.Now.plainDateTimeISO144144139✕144139✕
Temporal.Now.plainTimeISO144144139✕144139✕
Temporal.Now.timeZoneId144144139✕144139✕
Temporal.Now.zonedDateTimeISO144144139✕144139✕
Temporal.PlainDate144144139✕144139✕
Temporal.PlainDate.PlainDate144144139✕144139✕
Temporal.PlainDate.add144144139✕144139✕
Temporal.PlainDate.calendarId144144139✕144139✕
Temporal.PlainDate.compare144144139✕144139✕
Temporal.PlainDate.day144144139✕144139✕
Temporal.PlainDate.dayOfWeek144144139✕144139✕
Temporal.PlainDate.dayOfYear144144139✕144139✕
Temporal.PlainDate.daysInMonth144144139✕144139✕
Temporal.PlainDate.daysInWeek144144139✕144139✕
Temporal.PlainDate.daysInYear144144139✕144139✕
Temporal.PlainDate.equals144144139✕144139✕
Temporal.PlainDate.era144144139✕144139✕
Temporal.PlainDate.eraYear144144139✕144139✕
Temporal.PlainDate.from144144139✕144139✕
Temporal.PlainDate.inLeapYear144144139✕144139✕
Temporal.PlainDate.month144144139✕144139✕
Temporal.PlainDate.monthCode144144139✕144139✕
Temporal.PlainDate.monthsInYear144144139✕144139✕
Temporal.PlainDate.since144144139✕144139✕
Temporal.PlainDate.subtract144144139✕144139✕
Temporal.PlainDate.toJSON144144139✕144139✕
Temporal.PlainDate.toLocaleString144144139✕144139✕
Temporal.PlainDate.toPlainDateTime144144139✕144139✕
Temporal.PlainDate.toPlainMonthDay144144139✕144139✕
Temporal.PlainDate.toPlainYearMonth144144139✕144139✕
Temporal.PlainDate.toString144144139✕144139✕
Temporal.PlainDate.toZonedDateTime144144139✕144139✕
Temporal.PlainDate.until144144139✕144139✕
Temporal.PlainDate.valueOf144144139✕144139✕
Temporal.PlainDate.weekOfYear144144139✕144139✕
Temporal.PlainDate.with144144139✕144139✕
Temporal.PlainDate.withCalendar144144✕✕144✕✕
Temporal.PlainDate.year144144139✕144139✕
Temporal.PlainDate.yearOfWeek144144139✕144139✕
Temporal.PlainDateTime144144139✕144139✕
Temporal.PlainDateTime.PlainDateTime144144139✕144139✕
Temporal.PlainDateTime.add144144139✕144139✕
Temporal.PlainDateTime.calendarId144144139✕144139✕
Temporal.PlainDateTime.compare144144139✕144139✕
Temporal.PlainDateTime.day144144139✕144139✕
Temporal.PlainDateTime.dayOfWeek144144139✕144139✕
Temporal.PlainDateTime.dayOfYear144144139✕144139✕
Temporal.PlainDateTime.daysInMonth144144139✕144139✕
Temporal.PlainDateTime.daysInWeek144144139✕144139✕
Temporal.PlainDateTime.daysInYear144144139✕144139✕
Temporal.PlainDateTime.equals144144139✕144139✕
Temporal.PlainDateTime.era144144139✕144139✕
Temporal.PlainDateTime.eraYear144144139✕144139✕
Temporal.PlainDateTime.from144144139✕144139✕
Temporal.PlainDateTime.hour144144139✕144139✕
Temporal.PlainDateTime.inLeapYear144144139✕144139✕
Temporal.PlainDateTime.microsecond144144139✕144139✕
Temporal.PlainDateTime.millisecond144144139✕144139✕
Temporal.PlainDateTime.minute144144139✕144139✕
Temporal.PlainDateTime.month144144139✕144139✕
Temporal.PlainDateTime.monthCode144144139✕144139✕
Temporal.PlainDateTime.monthsInYear144144139✕144139✕
Temporal.PlainDateTime.nanosecond144144139✕144139✕
Temporal.PlainDateTime.round144144139✕144139✕
Temporal.PlainDateTime.second144144139✕144139✕
Temporal.PlainDateTime.since144144139✕144139✕
Temporal.PlainDateTime.subtract144144139✕144139✕
Temporal.PlainDateTime.toJSON144144139✕144139✕
Temporal.PlainDateTime.toLocaleString144144139✕144139✕
Temporal.PlainDateTime.toPlainDate144144139✕144139✕
Temporal.PlainDateTime.toPlainTime144144139✕144139✕
Temporal.PlainDateTime.toString144144139✕144139✕
Temporal.PlainDateTime.toZonedDateTime144144139✕144139✕
Temporal.PlainDateTime.until144144139✕144139✕
Temporal.PlainDateTime.valueOf144144139✕144139✕
Temporal.PlainDateTime.weekOfYear144144139✕144139✕
Temporal.PlainDateTime.with144144139✕144139✕
Temporal.PlainDateTime.withCalendar144144✕✕144✕✕
Temporal.PlainDateTime.withPlainTime144144139✕144139✕
Temporal.PlainDateTime.year144144139✕144139✕
Temporal.PlainDateTime.yearOfWeek144144139✕144139✕
Temporal.PlainMonthDay144144139✕144139✕
Temporal.PlainMonthDay.PlainMonthDay144144139✕144139✕
Temporal.PlainMonthDay.calendarId144144139✕144139✕
Temporal.PlainMonthDay.day144144139✕144139✕
Temporal.PlainMonthDay.equals144144139✕144139✕
Temporal.PlainMonthDay.from144144139✕144139✕
Temporal.PlainMonthDay.monthCode144144139✕144139✕
Temporal.PlainMonthDay.toJSON144144139✕144139✕
Temporal.PlainMonthDay.toLocaleString144144139✕144139✕
Temporal.PlainMonthDay.toPlainDate144144139✕144139✕
Temporal.PlainMonthDay.toString144144139✕144139✕
Temporal.PlainMonthDay.valueOf144144139✕144139✕
Temporal.PlainMonthDay.with144144139✕144139✕
Temporal.PlainTime144144139✕144139✕
Temporal.PlainTime.PlainTime144144139✕144139✕
Temporal.PlainTime.add144144139✕144139✕
Temporal.PlainTime.compare144144139✕144139✕
Temporal.PlainTime.equals144144139✕144139✕
Temporal.PlainTime.from144144139✕144139✕
Temporal.PlainTime.hour144144139✕144139✕
Temporal.PlainTime.microsecond144144139✕144139✕
Temporal.PlainTime.millisecond144144139✕144139✕
Temporal.PlainTime.minute144144139✕144139✕
Temporal.PlainTime.nanosecond144144139✕144139✕
Temporal.PlainTime.round144144139✕144139✕
Temporal.PlainTime.second144144139✕144139✕
Temporal.PlainTime.since144144139✕144139✕
Temporal.PlainTime.subtract144144139✕144139✕
Temporal.PlainTime.toJSON144144139✕144139✕
Temporal.PlainTime.toLocaleString144144139✕144139✕
Temporal.PlainTime.toString144144139✕144139✕
Temporal.PlainTime.until144144139✕144139✕
Temporal.PlainTime.valueOf144144139✕144139✕
Temporal.PlainTime.with144144139✕144139✕
Temporal.PlainYearMonth144144139✕144139✕
Temporal.PlainYearMonth.PlainYearMonth144144139✕144139✕
Temporal.PlainYearMonth.add144144139✕144139✕
Temporal.PlainYearMonth.calendarId144144139✕144139✕
Temporal.PlainYearMonth.compare144144139✕144139✕
Temporal.PlainYearMonth.daysInMonth144144139✕144139✕
Temporal.PlainYearMonth.daysInYear144144139✕144139✕
Temporal.PlainYearMonth.equals144144139✕144139✕
Temporal.PlainYearMonth.era144144139✕144139✕
Temporal.PlainYearMonth.eraYear144144139✕144139✕
Temporal.PlainYearMonth.from144144139✕144139✕
Temporal.PlainYearMonth.inLeapYear144144139✕144139✕
Temporal.PlainYearMonth.month144144139✕144139✕
Temporal.PlainYearMonth.monthCode144144139✕144139✕
Temporal.PlainYearMonth.monthsInYear144144139✕144139✕
Temporal.PlainYearMonth.since144144139✕144139✕
Temporal.PlainYearMonth.subtract144144139✕144139✕
Temporal.PlainYearMonth.toJSON144144139✕144139✕
Temporal.PlainYearMonth.toLocaleString144144139✕144139✕
Temporal.PlainYearMonth.toPlainDate144144139✕144139✕
Temporal.PlainYearMonth.toString144144139✕144139✕
Temporal.PlainYearMonth.until144144139✕144139✕
Temporal.PlainYearMonth.valueOf144144139✕144139✕
Temporal.PlainYearMonth.with144144139✕144139✕
Temporal.PlainYearMonth.year144144139✕144139✕
Temporal.ZonedDateTime144144139✕144139✕
Temporal.ZonedDateTime.ZonedDateTime144144139✕144139✕
Temporal.ZonedDateTime.add144144139✕144139✕
Temporal.ZonedDateTime.calendarId144144139✕144139✕
Temporal.ZonedDateTime.compare144144139✕144139✕
Temporal.ZonedDateTime.day144144139✕144139✕
Temporal.ZonedDateTime.dayOfWeek144144139✕144139✕
Temporal.ZonedDateTime.dayOfYear144144139✕144139✕
Temporal.ZonedDateTime.daysInMonth144144139✕144139✕
Temporal.ZonedDateTime.daysInWeek144144139✕144139✕
Temporal.ZonedDateTime.daysInYear144144139✕144139✕
Temporal.ZonedDateTime.epochMilliseconds144144139✕144139✕
Temporal.ZonedDateTime.epochNanoseconds144144139✕144139✕
Temporal.ZonedDateTime.equals144144139✕144139✕
Temporal.ZonedDateTime.era144144139✕144139✕
Temporal.ZonedDateTime.eraYear144144139✕144139✕
Temporal.ZonedDateTime.from144144139✕144139✕
Temporal.ZonedDateTime.getTimeZoneTransition144144139✕144139✕
Temporal.ZonedDateTime.hour144144139✕144139✕
Temporal.ZonedDateTime.hoursInDay144144139✕144139✕
Temporal.ZonedDateTime.inLeapYear144144139✕144139✕
Temporal.ZonedDateTime.microsecond144144139✕144139✕
Temporal.ZonedDateTime.millisecond144144139✕144139✕
Temporal.ZonedDateTime.minute144144139✕144139✕
Temporal.ZonedDateTime.month144144139✕144139✕
Temporal.ZonedDateTime.monthCode144144139✕144139✕
Temporal.ZonedDateTime.monthsInYear144144139✕144139✕
Temporal.ZonedDateTime.nanosecond144144139✕144139✕
Temporal.ZonedDateTime.offset144144139✕144139✕
Temporal.ZonedDateTime.offsetNanoseconds144144139✕144139✕
Temporal.ZonedDateTime.round144144139✕144139✕
Temporal.ZonedDateTime.second144144139✕144139✕
Temporal.ZonedDateTime.since144144139✕144139✕
Temporal.ZonedDateTime.startOfDay144144139✕144139✕
Temporal.ZonedDateTime.subtract144144139✕144139✕
Temporal.ZonedDateTime.timeZoneId144144139✕144139✕
Temporal.ZonedDateTime.toInstant144144139✕144139✕
Temporal.ZonedDateTime.toJSON144144139✕144139✕
Temporal.ZonedDateTime.toLocaleString144144139✕144139✕
Temporal.ZonedDateTime.toPlainDate144144139✕144139✕
Temporal.ZonedDateTime.toPlainDateTime144144139✕144139✕
Temporal.ZonedDateTime.toPlainTime144144139✕144139✕
Temporal.ZonedDateTime.toString144144139✕144139✕
Temporal.ZonedDateTime.until144144139✕144139✕
Temporal.ZonedDateTime.valueOf144144139✕144139✕
Temporal.ZonedDateTime.weekOfYear144144139✕144139✕
Temporal.ZonedDateTime.with144144139✕144139✕
Temporal.ZonedDateTime.withCalendar144144✕✕144✕✕
Temporal.ZonedDateTime.withPlainTime144144139✕144139✕
Temporal.ZonedDateTime.withTimeZone144144139✕144139✕
Temporal.ZonedDateTime.year144144139✕144139✕
Temporal.ZonedDateTime.yearOfWeek144144139✕144139✕