Luxon
What is Luxon
Luxon is an immutable, chainable date/time library for JavaScript. MIT licensed, currently at v3.7.x with ~26.7M weekly npm downloads. Built by Isaac Cambron, a Moment.js maintainer, Luxon lives under the moment GitHub org and is designed to address Moment's known weaknesses.
Why we recommend it
- Immutable API — all operations return new instances, eliminating an entire class of mutation bugs.
- Built-in IANA time zone support — uses the browser
IntlAPI, no plugin or data bundle needed (unlikemoment-timezone). - Built-in i18n — leverages
Intlfor locale-aware formatting without bundling locale data. - First-class Duration & Interval types — complex date math without plugins.
- Reasonable bundle size — 21.4 kB min+gzip (vs Moment's 75.4 kB), ships zero locale data.
- API maps well to Temporal — future migration path is cleaner than from other libraries.
- Spiritual successor to Moment — built by the same people, addressing Moment's known weaknesses.
When to use
- Projects needing time zone handling
- Duration/Interval arithmetic
- Replacing Moment.js in existing codebases
- Any project needing a full-featured date library
When NOT to use
- Simple date formatting where only a few utility functions are needed — date-fns may be lighter after tree-shaking.
- Projects exclusively targeting browsers with full Temporal support (though this is not recommended as a production default yet).
Alternatives
- date-fns — modular, tree-shakable, works with native
Date. Better when only a few date utility functions are needed (~5 kB tree-shaken). No Duration type, limited time zone support. - Day.js — Moment-compatible API in ~3 kB. Lighter but less capable (time zones and i18n require plugins).
Temporal API
The Temporal API is an upcoming native JavaScript date/time standard. As of May 2026, it is supported in Chrome 144+, Edge 144+, and Firefox 139+ (~69% global coverage) but not in Safari, Node.js, or Bun. It is not recommended as a production default yet.
Luxon's API is conceptually aligned with Temporal — DateTime, Duration, and Interval map closely to Temporal's types — making future migration straightforward when Temporal reaches full cross-platform support.