Behavior change in Intl.DateTimeFormat output between Node versions due to ICU updates.
The issue involves inconsistent date formatting output for the de-CH locale between Node 24.13.0 and 24.13.1, specifically for partial date formats (year + month). The change is due to updates in ICU locale data, which Node.js cannot synchronize with web browsers. This affects frameworks relying on consistent date formatting for SSR/client hydration.
24.13.1
Darwin N22134 25.3.0 Darwin Kernel Version 25.3.0: Wed Jan 28 20:48:41 PST 2026; root:xnu-12377.81.4~5/RELEASE_ARM64_T6041 arm64
No response
Intl.DateTimeFormat produces inconsistent formatting for partial date options (year + month) between Node 24.13.0 and 24.13.1. • Node 24.13.0 outputs '12.2021' (dot separator) as expected for de-CH. • Node 24.13.1 outputs '12/2021' (slash separator) for the same code. • Adding day: '2-digit' produces consistent '07.12.2021' in both versions.
This behavior change breaks SSR/client hydration in frameworks like Next.js when formatting dates for de-CH locale.
Reproduction:
// Test partial month/year formatting
console.log(
new Intl.DateTimeFormat('de-CH', { year: 'numeric', month: '2-digit' }).format(new Date("2021-12-07"))
);
// Test full date formatting
console.log(
new Intl.DateTimeFormat('de-CH', { year: 'numeric', month: '2-digit', day: '2-digit' }).format(new Date("2021-12-07"))
);
Always
Both Node versions should produce '12.2021' for { year, month } in de-CH locale. Separator should follow locale conventions consistently, even for partial formats.
Node 24.13.1 outputs '12/2021'
No response
Claim this issue to let others know you're working on it. You'll earn 20 points when you complete it!