<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8" -->

---
title: Temporal: JavaScript Finally Fixes Dates | daily.dev
description: Temporal, the new JavaScript date/time API, shipped in Chrome 144 and reached TC39 Stage 4, making it a permanent part of the language rather than a library or...
canonical: https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Temporal: JavaScript Finally Fixes Dates | daily.dev
og:description: Temporal, the new JavaScript date/time API, shipped in Chrome 144 and reached TC39 Stage 4, making it a permanent part of the language rather than a library or...
og:url: https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8
og:image: https://api.daily.dev/og/posts/MDmvOkjs8.png
og:image:alt: Temporal: JavaScript Finally Fixes Dates
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Temporal: JavaScript Finally Fixes Dates

**[iO tech\_hub](https://daily.dev/sources/iotechhub)** · 4 min read · 51 upvotes · 3 comments

## Summary

Temporal, the new JavaScript date/time API, shipped in Chrome 144 and reached TC39 Stage 4, making it a permanent part of the language rather than a library or polyfill. It fixes long-standing Date problems: immutability (methods return new values instead of mutating), separate purpose-built types (Instant, ZonedDateTime, PlainDate/PlainTime/PlainDateTime, Duration, Now) instead of one overloaded object, and correct timezone-aware arithmetic including daylight saving transitions. Browser support is uneven: Chrome/Edge since 144, Firefox since 139, but Safari only has it in Technology Preview, which is why it isn't yet Baseline. Polyfills (temporal-polyfill, @js-temporal/polyfill) are recommended for broad compatibility today, with the expectation that Temporal will replace libraries like date-fns within a year or two.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://techhub.iodigital.com/articles/temporal-javascript-finally-fixes-dates>

## Questions this post answers

### Has the Temporal API reached TC39 Stage 4 in JavaScript?

Yes, Temporal reached TC39 Stage 4 in March, making it a permanent, official part of the JavaScript language rather than a proposal, library, or polyfill. It also shipped in Chrome 144. Firefox has supported it since version 139, while Safari only has it in Technology Preview, which is why Temporal is not yet a Baseline web feature.

_Track browser rollout and stage changes for new JS APIs like Temporal on daily.dev before adopting them in production._

### Why is the built-in JavaScript Date object considered broken or problematic?

Date is mutable, so calling a method like setDate on it can silently change a value still referenced elsewhere, causing bugs that survive code review and surface later in production. It also conflates a moment in time, a calendar date, and a wall-clock time into one object with an implicit timezone, and famously indexes months from zero, all of which Temporal's separate, purpose-built types (Instant, ZonedDateTime, PlainDate, Duration) address.

_Developers weighing a move off Date and date-fns can follow Temporal's maturity on daily.dev._

### What Temporal types are available for handling dates and times in JavaScript?

Temporal splits date/time handling into Instant (a fixed point in time, no timezone), ZonedDateTime (date and time with timezone and calendar), PlainDate/PlainTime/PlainDateTime (date or time without timezone info), Duration (a length of time for arithmetic), and Now (the entry point for getting the current time in any of these shapes). This replaces Date's single overloaded object.

_Bookmark ecosystem coverage of Temporal's type system on daily.dev while planning a migration from Date._

## Community discussion

Top comments from developers on daily.dev.

**@pdfopsdev** · 4 upvotes

> biggest gotcha nobody mentions: Temporal objects don't have a built in toJSON like Date does, so anything serializing over an API boundary needs an explicit .toString() call or you get a weird object dump. worth checking before you rip out date-fns from anything hitting a wire format.

**@goodwine** · 0 upvotes

> Finalmente!

**@agustinbarrientos** · 0 upvotes

> Library adapters should accept `Date` at the boundary and normalize it once until Safari ships native Temporal support

## Similar posts on daily.dev

- [The Temporal API: JavaScript dates, finally fixed](https://daily.dev/posts/the-temporal-api-javascript-dates-finally-fixed-kinwyu0tx) · Flavio Copes · 2 upvotes · 0 comments
- [Chrome 144 Ships Temporal API: Advancing JavaScript Date/Time Standardisation](https://daily.dev/posts/chrome-144-ships-temporal-api-advancing-javascript-date-time-standardisation-cnojmzff6) · InfoQ · 1 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#google-chrome](https://daily.dev/tags/google-chrome)

[View this post on daily.dev](https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Temporal: JavaScript Finally Fixes Dates","url":"https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8"},"datePublished":"2026-08-31T12:45:55.918Z","dateModified":"2026-08-31T12:46:28.053Z","description":"Temporal, the new JavaScript date/time API, shipped in Chrome 144 and reached TC39 Stage 4, making it a permanent part of the language rather than a library or...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7e8ce020df1577a06813d039e0ac8f74?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7e8ce020df1577a06813d039e0ac8f74?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"iO tech_hub","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"iO tech_hub","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ac540f589d8843d99692bd6368ee7680","url":"https://daily.dev/sources/iotechhub"},"commentCount":3,"discussionUrl":"https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":49},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"keywords":"javascript,google-chrome","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"iO tech_hub","item":"https://daily.dev/sources/iotechhub"},{"@type":"ListItem","position":3,"name":"Temporal: JavaScript Finally Fixes Dates"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8","comment":[{"@type":"Comment","text":"biggest gotcha nobody mentions: Temporal objects don’t have a built in toJSON like Date does, so anything serializing over an API boundary needs an explicit .toString() call or you get a weird object dump. worth checking before you rip out date-fns from anything hitting a wire format.","datePublished":"2026-09-01T18:04:27.128Z","url":"https://daily.dev/posts/MDmvOkjs8#c-n8EBuhLaL","author":{"@type":"Person","name":"PDFops","url":"https://daily.dev/pdfopsdev","image":"https://media.daily.dev/image/upload/s---8isRBKc--/f_auto/v1782922291/avatars/avatar_orjMeK8QKaaVZwGq7ScPz?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"Finalmente!","datePublished":"2026-09-01T20:58:33.960Z","url":"https://daily.dev/posts/MDmvOkjs8#c-Z43nTmx4F","author":{"@type":"Person","name":"Giuliano","url":"https://daily.dev/goodwine","image":"https://media.daily.dev/image/upload/s--a4_3G2w8--/f_auto/v1768794714/avatars/avatar_1zdQSUWX1pJufCW5uT6Uh?_a=BAMAMiiu0"}},{"@type":"Comment","text":"Library adapters should accept Date at the boundary and normalize it once until Safari ships native Temporal support","datePublished":"2026-09-01T23:52:24.305Z","url":"https://daily.dev/posts/MDmvOkjs8#c-hL4Wxe6z3","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/temporal-javascript-finally-fixes-dates-mdmvokjs8#faq","mainEntity":[{"@type":"Question","name":"Has the Temporal API reached TC39 Stage 4 in JavaScript?","acceptedAnswer":{"@type":"Answer","text":"Yes, Temporal reached TC39 Stage 4 in March, making it a permanent, official part of the JavaScript language rather than a proposal, library, or polyfill. It also shipped in Chrome 144. Firefox has supported it since version 139, while Safari only has it in Technology Preview, which is why Temporal is not yet a Baseline web feature. Track browser rollout and stage changes for new JS APIs like Temporal on daily.dev before adopting them in production."}},{"@type":"Question","name":"Why is the built-in JavaScript Date object considered broken or problematic?","acceptedAnswer":{"@type":"Answer","text":"Date is mutable, so calling a method like setDate on it can silently change a value still referenced elsewhere, causing bugs that survive code review and surface later in production. It also conflates a moment in time, a calendar date, and a wall-clock time into one object with an implicit timezone, and famously indexes months from zero, all of which Temporal's separate, purpose-built types (Instant, ZonedDateTime, PlainDate, Duration) address. Developers weighing a move off Date and date-fns can follow Temporal's maturity on daily.dev."}},{"@type":"Question","name":"What Temporal types are available for handling dates and times in JavaScript?","acceptedAnswer":{"@type":"Answer","text":"Temporal splits date/time handling into Instant (a fixed point in time, no timezone), ZonedDateTime (date and time with timezone and calendar), PlainDate/PlainTime/PlainDateTime (date or time without timezone info), Duration (a length of time for arithmetic), and Now (the entry point for getting the current time in any of these shapes). This replaces Date's single overloaded object. Bookmark ecosystem coverage of Temporal's type system on daily.dev while planning a migration from Date."}}]}
```

