Day.js

A 2KB immutable JavaScript date-time library with a Moment.js-compatible API

Library
npm
v1.11.23
48,658 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
76 /100 Good
Development Activity 56
Maintenance 72
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
87 /100 Excellent
Architecture 88
Code Quality 82
Innovation 88
Learning Curve 90

Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers. It was built as a drop-in-style replacement for Moment.js: it mirrors Moment’s chainable, immutable API almost method-for-method, so teams migrating away from Moment’s larger bundle size can often swap the import and keep most of their code working unchanged.

The entire core ships at roughly 2KB minified and gzipped, achieved by keeping the base class deliberately small and pushing everything non-essential — timezone support, relative time, custom parsing, ISO week calculations, and more — into an opt-in plugin system. Locale data for 140+ languages is similarly loaded on demand rather than bundled by default, so applications only pay for the date functionality and languages they actually use.

What You Get

  • A ~2KB core (dayjs.min.js) covering parsing, formatting, comparison, and arithmetic — small enough to have negligible impact on bundle size
  • A near-drop-in replacement for Moment.js’s API surface, easing migration from Moment-based codebases
  • 37 official plugins (timezone, relativeTime, customParseFormat, duration, isoWeek, advancedFormat, and more) that are opt-in via dayjs.extend() so unused functionality never ships to the client
  • Built-in internationalization with 140+ locale files, loadable individually
  • Full TypeScript type definitions maintained alongside the library
  • An immutable API — every date-producing method returns a new Dayjs instance instead of mutating the original

Common Use Cases

  • Formatting and displaying dates/times in a specific locale and format string in a web UI
  • Computing relative time strings (“3 hours ago”, “in 2 days”) via the relativeTime plugin
  • Converting and comparing dates across timezones with the timezone plugin (built on Intl)
  • Parsing user-supplied or API date strings with custom formats via customParseFormat
  • Date arithmetic in scheduling, booking, or analytics features (add/subtract days, weeks, months) without mutating shared date state
  • Replacing an existing Moment.js dependency to cut bundle size with minimal code changes

Under The Hood

Architecture Day.js centers on a single Dayjs class (src/index.js) that stores a native Date internally as $d, alongside cached primitives ($y, $M, $D, $H, $m, $s, $ms, $W) computed once in init() for fast repeated access. All value-changing methods (set, add, startOf, endOf) route through clone()/$set() and return a fresh instance, giving the library its immutability guarantee without a persistent-data-structure library underneath — it simply re-wraps a new native Date each time. The plugin system is the architectural centerpiece: dayjs.extend(plugin) calls each plugin once with (option, Dayjs, dayjs), letting plugins monkey-patch the prototype or the factory function directly. This is what keeps the core at 2KB — anything not universally needed (timezone math, ISO week numbers, relative time, custom parsing) lives in src/plugin/* and is opt-in.

Tech Stack The library has zero runtime dependencies — it only wraps the native Date, Intl, and RegExp APIs. The build pipeline uses Babel for transpilation and Rollup for bundling (see build/), with size-limit enforcing the 2.99KB budget in CI on every change to dayjs.min.js. TypeScript type definitions in types/ are hand-maintained rather than generated. Locale files under src/locale/ (143 of them) are independent modules following a common shape (month/weekday names, ordinal function, formats), so a consumer only pays for the locales they explicitly import.

Code Quality The project enforces 100% line coverage via Jest (coverageThreshold: { global: { lines: 100 } } in package.json), and the test suite runs across multiple timezones (TZ=Pacific/Auckland, TZ=Europe/London, TZ=America/Whitehorse) to catch timezone-dependent bugs before release — a detail that matters heavily for a date library. ESLint is configured with eslint-config-airbnb-base and runs as a pre-commit hook. The trade-off for the aggressive size budget is readability: internal state uses single/double-character property names ($y, $M, $D, $W) and terse helper methods (Utils.p, Utils.w, Utils.s) that prioritize minified output size over self-documenting code — acceptable for a stable, plugin-extensible core but a steeper read for first-time contributors than a more verbosely-named codebase.

API Design The public API is deliberately close to Moment.js’s (dayjs().format('YYYY-MM-DD'), .add(1, 'day'), .isBefore(other)), which minimizes the learning curve for the large existing population of Moment users and keeps method names predictable for newcomers. Getting started requires a single import and no configuration. The plugin activation pattern (dayjs.extend(plugin)) is consistent across all 37 plugins, and TypeScript definitions are automatically compatible with plugin-added methods when the corresponding .d.ts augmentation is imported. The one point of friction is discoverability: since most functionality lives behind opt-in plugins, users unfamiliar with the library often need to consult the docs to find out a needed feature (e.g. timezone conversion) isn’t in the core and requires an explicit dayjs.extend() call first.

Used by 96 apps in this directory

Rust
44%
MIT

Anarlog

AI Assistants · Note Taking · Productivity

9,565

Anarlog is an open-source, local-first AI meeting notetaker that records, transcribes, and summarizes meetings entirely on your device — no cloud lock-in, no mandatory account, and every note saved as a plain markdown file you own forever.

View details
86
Repo Health
77
Technical
65
Dependency
Built with
Rust 44%
TypeScript 41%
Updated 6 days ago
Go
61%
Apache 2.0

Apache Answer

Community

15,700

Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility

View details
89
Repo Health
78
Technical
68
Dependency
Built with
Go 61%
TypeScript 36%
Updated 1 weeks ago
TypeScript
68%
Apache 2.0

Appsmith

Automation · Developer Tools · No Code Platforms

41,113

Open-source low-code platform to build admin panels, dashboards, and internal tools connected to any database or API.

View details
94
Repo Health
79
Technical
63
Dependency
Built with
TypeScript 68%
Java 22%
Updated 1 weeks ago
TypeScript
92%
GPL 3.0

Blinko

Knowledge Management · Note Taking

11,107

A self-hosted, AI-powered card note-taking tool that lets you capture fleeting thoughts instantly and retrieve them with natural language search.

View details
69
Repo Health
69
Technical
63
Dependency
Built with
TypeScript 92%
Updated 2 months ago
TypeScript
40%
AGPL 3.0

BrowserOS

AI Assistants · Browser

14,082

The open-source agentic Chromium browser with native AI agents, MCP server, and visual workflow automation — your data never leaves your machine.

View details
87
Repo Health
82
Technical
67
Dependency
Built with
TypeScript 40%
Rust 34%
Python 16%
Updated 6 days ago
TypeScript
72%
Other

Budibase

Low Code Platforms · No Code Platforms

28,345

Build AI agents, automations, and internal apps on a single open-source platform with full self-hosting control.

View details
92
Repo Health
81
Technical
63
Dependency
Built with
TypeScript 72%
Svelte 24%
Updated 1 weeks ago
Rust
76%
MIT

Bun

Developer Tools

96,366

An all-in-one JavaScript and TypeScript toolkit — one Rust-and-JavaScriptCore binary that replaces Node.js, npm, a bundler, and a test runner with faster equivalents.

View details
92
Repo Health
91
Technical
64
Dependency
Built with
Rust 76%
C++ 14%
Updated 6 days ago
Go
49%
MIT

Bytebase

Devops

14,625

An open-source database CI/CD and DevSecOps platform — schema migration review, GitOps-driven changes, data masking, and access control across MySQL, PostgreSQL, Oracle, Snowflake, MongoDB, and more.

View details
92
Repo Health
73
Technical
68
Dependency
Built with
Go 49%
TypeScript 43%
Updated 1 weeks ago
TypeScript
96%
Other

Cal.diy

Scheduling

49,266

The 100% MIT-licensed, community-driven scheduling platform — self-host your own booking infrastructure with no enterprise strings attached.

View details
88
Repo Health
86
Technical
64
Dependency
Built with
TypeScript 96%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers