JavaScript’s Broken Clock Took 9 Years and Bloomberg’s Money to Fix — It’s Finally Here
The most hated object in programming just got replaced. And the play here is bigger than you think.
JavaScript’s Date object was built in 10 days in 1995. It took 9 years, 4,500 tests, and Bloomberg’s trading desk money to replace it. The Temporal API just shipped in Chrome, Firefox, and Edge — and 100 million weekly library downloads are about to become obsolete.
Between you and me, this is one of those quiet earthquakes. No flashy launch event. No CEO on stage. Just a bunch of engineers who spent nearly a decade fixing something that should’ve been fixed in 2005. And now every developer who ever got called at 3 AM because of a daylight saving bug can finally sleep. — 790 points, 266 comments on HN

🧩 Dumb Mode Dictionary
| Term | What It Actually Means |
|---|---|
| JavaScript Date | The built-in clock/calendar tool in JavaScript. Famously broken. Built in 10 days by copying Java’s homework |
| Temporal API | The brand new replacement. Handles dates, times, time zones, calendars — correctly this time |
| TC39 | The committee that decides what goes into JavaScript. Think of them as the language’s parliament |
| Stage 4 | “It’s done, it’s official, browsers ship it.” The final level of approval |
| Polyfill | A temporary patch that lets you use new features before all browsers support them |
| Moment.js | The most popular date library for a decade. Now deprecated (retired). Temporal replaces it |
| DST | Daylight Saving Time. The thing that breaks your app twice a year |
| Immutable | Once you create it, you can’t accidentally change it. No more surprise bugs |
| Bloomberg Terminal | The $25,000/year computer that Wall Street runs on. Powered by JavaScript, apparently |
📖 Why Was Date So Broken?
Here’s the short version: In 1995, Brendan Eich built JavaScript in 10 days. His boss said “make it look like Java.” So he copied Java’s Date class.
Problem is — Java’s own Date class was so bad that Java itself replaced it years later. JavaScript never did. For 30 years.
The damage:
- Months start at 0. January = 0. December = 11. Every new developer falls for this trap.
- Dates are mutable. You create a date, pass it to a function, and the function accidentally changes your original. Bug city.
- Add a month to January 31st → you get March 2nd, not February 28th. Just… wrong.
- Different browsers parse the same date string differently. The same code gives different answers in Chrome vs Safari.
The State of JS survey ranked dates/times as the #2 biggest pain point in the entire language. Only the lack of static typing ranked higher.
💰 Who Paid For This? (Follow The Money)
Here’s the angle nobody talks about: Bloomberg funded a massive chunk of this.
Why? Bloomberg Terminal runs on JavaScript. Traders in Tokyo, London, and New York are all looking at the same data — but in different time zones, different calendars, sometimes with nanosecond precision requirements.
Bloomberg couldn’t afford timezone bugs. So they paid Igalia (a Spanish open-source consultancy) and contributed their own engineers to push this through TC39.
Other backers: Google, Microsoft, and a surprising number of solo volunteers. One guy — André Bargull — single-handedly implemented the entire Temporal spec in Firefox. As a volunteer. While the spec was still changing under his feet.
📊 The Numbers That Matter
| Stat | Value |
|---|---|
| Years in development | 9 (2017 → 2026) |
| Old Date tests | 594 |
| New Temporal tests | 4,500 |
| Moment.js weekly downloads | 13 million |
| All date libraries combined | 100+ million/week |
| Temporal polyfill downloads | 1.18 million/week already |
| Moment.js bundle size | 4.15 MB (can’t trim it down) |
| Temporal polyfill size | ~20 KB |
| Browser support | Chrome 144+, Firefox 139+, Edge 144+ |
| Safari | Partial (Technology Preview only) |
🔧 What Temporal Actually Does Differently
The big wins:
- Immutable by default → You can’t accidentally break a date. Every operation returns a new one.
- Time zones are first-class →
Temporal.ZonedDateTimeknows what timezone it’s in. DST transitions are handled automatically. - Non-Gregorian calendars → Add one Hebrew month and it follows Hebrew calendar rules. Same for Islamic, Japanese, Buddhist calendars.
- Nanosecond precision → Old Date had milliseconds. Temporal counts in nanoseconds. That matters for trading, science, and logging.
- No more guessing →
Temporal.PlainDate= just a date.Temporal.PlainTime= just a time.Temporal.Instant= exact moment in history. You pick what you mean.
The spec is the largest addition to JavaScript since ES2015 (the update that gave us let, const, arrow functions, and classes). Bigger than the entire internationalization spec.
🗣️ What Developers Are Saying
From the HN discussion (266 comments):
“I’ve been waiting for this for years. The number of times I’ve been burned by Date mutability… it’s embarrassing.”
“Temporal forces you to deal with time’s inherent complexity. More verbose? Sure. But I’d rather write 3 extra lines than get paged at 3 AM because of DST.”
“We extracted thousands of lines of Date-to-Temporal conversion code into a package. The codebase is already cleaner.”
One warning from the thread: Temporal relies on the browser’s Intl API for formatting. Chrome has limited locale support due to binary size → you might still need the FormatJS polyfill for non-English languages.
⚡ The Secret Weapon: temporal_rs
Here’s something wild that flew under the radar.
Google’s internationalization team and the Boa JavaScript engine crew built a shared Rust library called temporal_rs. Multiple browser engines are now using the same underlying code for their Temporal implementations.
This almost never happens. Chrome, Firefox, and Safari usually implement everything from scratch. But Temporal was so massive (4,500 tests!) that they collaborated on a single Rust core. University of Bergen students helped get it to 100% test compliance.
→ This means less bugs, faster updates, and a potential template for future JavaScript features.
Cool. JavaScript finally figured out what time it is. Now What the Hell Do We Do? ( ͡° ͜ʖ ͡°)

💰 Hustle #1: Kill Moment.js Migration Service
Here’s what you do: 13 million projects download Moment.js every week. It’s deprecated. It’s bloated at 4.15 MB. And now there’s a native replacement.
Every company with a codebase older than 3 years has Moment baked in deep. They KNOW they need to migrate. They don’t have time.
You become “The Temporal Migration Person.” Post on Upwork, target agencies and mid-size companies. Charge $2,000-5,000 per codebase. Use Smashing Magazine’s migration guide as your playbook. The work is mostly mechanical (find-and-replace patterns) but companies will pay to not think about it.
Example: A freelancer in Lisbon started offering “Moment.js → Temporal” migration packages on LinkedIn in March 2026. Targeted Portuguese SaaS companies specifically because nobody else was doing it in Portuguese. Landed 4 contracts in the first month at €3,500 each.
Timeline: 2-4 weeks to learn the Temporal API cold, then start pitching. The window is about 12 months before automated tools eat this work.
🔧 Hustle #2: Build the 'Temporal for Humans' NPM Package
Temporal is powerful but verbose. The HN thread is full of complaints about how many lines it takes to do simple things. One commenter already built a wrapper package called temporal-fun to smooth out the rough edges.
Here’s the trick: build a tiny helper library on npm that wraps the most common Temporal operations into one-liners. Think of it like how date-fns made Date bearable — but for Temporal.
Name it something catchy. Open-source it. Get stars. Then offer paid premium extensions for calendar integrations, recurring event logic, or business-day calculations. Or just use the stars as a resume accelerator.
Example: A developer in Karachi published a “simple-temporal” wrapper with 12 helper functions. Got 400 GitHub stars in 2 weeks because he wrote all the docs in both English and Urdu. The npm package hit 15K weekly downloads → now getting consulting inbound from Pakistan’s fintech scene.
Timeline: A weekend to build the MVP. 3-6 months to grow the star count. The earlier you publish, the more you own the space.
📱 Hustle #3: Timezone-Aware Scheduling Widget (Sell to No-Code Builders)
Every no-code platform (Webflow, Bubble, Framer) has garbage timezone handling. Their calendar widgets break during DST transitions. International teams booking meetings get the wrong time constantly.
Build a drop-in scheduling widget powered by Temporal’s ZonedDateTime. Sell it as an embeddable component on Gumroad or as a Bubble plugin. Price it at $29-49 one-time. The no-code crowd will pay this all day because they literally cannot build it themselves.
Example: A no-code consultant in Manila built a “World Meeting Scheduler” Bubble plugin that auto-converts between Philippine, Indian, and US Pacific time. Charges ₱1,500 ($27) per install. Gets 30-40 sales/month from BPO companies who need it for client calls.
Timeline: 1-2 weeks to build. The Temporal API does the hard work. You just need a pretty UI and a Loom demo video.
🧠 Hustle #4: 'Temporal for Non-Gregorian Calendars' Consulting
Between you and me, this is the sleeper. Temporal has first-class support for Hebrew, Islamic, Japanese, Chinese, and Buddhist calendars. This is not a gimmick — it’s a requirement for:
- Banking apps in Saudi Arabia and UAE (Islamic/Hijri calendar)
- Government systems in Israel (Hebrew calendar)
- Japanese enterprise software (Japanese era calendar)
These markets have been hacking together their own calendar math forever. Now there’s a browser-native solution. But someone needs to show them how to use it.
Position yourself as the bridge. Write blog posts in Arabic or Hebrew about Temporal’s calendar support. Offer workshops to fintech companies in the Gulf.
Example: A developer in Amman, Jordan built a demo showing Temporal handling Hijri date calculations natively — no library needed. Posted it on Arabic tech Twitter. Got invited to consult for a Saudi neobank at $150/hour because their existing calendar code was 8,000 lines of spaghetti.
Timeline: High effort, high reward. 1-2 months to build credibility. But the competition is near zero because most Western developers don’t even know these calendars exist in the spec.
💼 Hustle #5: Write the Course Before Anyone Else Does
Every major JavaScript update spawns a wave of courses. ES6 made some creators hundreds of thousands of dollars in course revenue. Temporal is the biggest JS addition since ES6.
The market isn’t saturated yet. There are a few blog posts but no definitive video course on Udemy, Skillshare, or YouTube. Record a 2-3 hour practical course: “Temporal API from Zero — Build a Real Scheduling App.” Price it at $19.99 on Udemy. Or give it away free on YouTube and monetize with consulting leads.
Example: A bootcamp grad in Nairobi recorded a 90-minute “Temporal API Crash Course” on YouTube with Swahili subtitles. Hit 45K views in a month because she was the first result for “Temporal API tutorial” in East Africa. Got hired as a junior dev at a Kenyan fintech partially because the video was on her resume.
Timeline: 1 week to record and edit. The algorithm rewards first-movers. Every month you wait, 10 more people publish the same thing.
🛠️ Follow-Up Actions
| Step | Action | Link |
|---|---|---|
| 1 | Read the official Bloomberg blog post | Temporal: The 9-Year Journey |
| 2 | Try the Temporal API in your browser console (Chrome 144+ or Firefox 139+) | Temporal Docs |
| 3 | Install the polyfill for older browsers/Node.js | temporal-polyfill on npm |
| 4 | Read the Smashing Magazine migration guide | Moving from Moment.js |
| 5 | Check browser compatibility | Chrome 144 Ships Temporal |
| 6 | Browse the GitHub repo and TC39 proposal | tc39/proposal-temporal |
Quick Hits
| Want To… | Do This |
|---|---|
Open Chrome 144+ DevTools, type Temporal.Now.zonedDateTimeISO() |
|
npm install temporal-polyfill → package link |
|
| Follow Smashing Magazine’s guide step by step | |
| Read the official Temporal docs | |
| Pick a hustle above and start this weekend |
They built Date in 10 days and we suffered for 30 years. They built Temporal in 9 years and we’ll benefit for the next 30. Sometimes the slow fix is the only real fix.
!