Show r/typescript: Chronera - zero-dep TS date engine with RFC 9557, Temporal ZonedDateTime, multi-cultural calendars
Hey everyone! ๐ Working with dates in JavaScript has always been notoriously tricky. While TC39 Temporal is exciting, full engine availability is still on the horizon. Meanwhile, handling multi-cultural calendars (Buddhist, Hijri, Solar) and cross-border settlement holidays often requires heavy polyfills or fragile custom math.
Over the past few weeks, our team built Chronera - an immutable, type-safe date, calendar, and timezone toolkit written strictly in TypeScript with Zero Runtime Dependencies.
Key Highlights
- RFC 9557 (IXDTF) Compliant: Full parser and serializer for the new IETF standard bracketed timezone and calendar annotations (e.g.
2026-10-03T01:13:43+07:00[Asia/Bangkok][u-ca=buddhist]). - Temporal Alignment:
ZonedDateTimeimplementation with DST disambiguation (compatible,earlier,later,reject) and dual-mode calendar/clock arithmetic. - Multi-Cultural Calendars: First-class support for Buddhist, Hijri (tabular & astronomical), Japanese Era (Reiwa/Heisei), Persian, ROC, and Indian National calendars.
- Cross-Border Holiday Engine: Supports simultaneous multi-region settlements (e.g.
isBusinessDay(date, ["US", "SG"])) and custom corporate off-day/compensation overrides. - Fast-path Zero Allocation: Benchmarked at 13.5M ops/sec for ISO parsing and 22M ops/sec for instant instantiation (1.5x-1.6x faster than native
Date). - Ecosystem Ready: First-class Zod schema helper (
@intech-software/chronera/zod) for form validation and DTOs. - Modular Exports: Subpath splitting (
./calendar,./format,./parse,./holidays,./scheduling,./zod). The parse entry point is only 3.5 kB (Brotli).
Quick Example
import { chronera } from "@intech-software/chronera";
import { zChronera } from "@intech-software/chronera/zod";
// Fluent date manipulation
const d = chronera("2026-10-03T01:13:43+07:00[Asia/Bangkok][u-ca=buddhist]")
.addBusinessDays(3, ["TH", "SG"]);
console.log(d.toIXDTF());
// Zod form validation
const formSchema = z.object({
scheduledAt: zChronera({ future: true, businessDay: "TH" }),
});
We would love to hear your thoughts, architectural feedback, and feature suggestions!
Comments
No comments yet. Start the discussion.