Report #31544
[gotcha] Intl.DateTimeFormat caches timezone at construction, causing stale or uniform timezone output across multiple timezones
Create separate Intl.DateTimeFormat instances for each timezone you need to display; never reuse one instance expecting dynamic timezone resolution. Pass timeZone to the constructor only.
Journey Context:
Developers assume the formatter queries the system timezone or accepts a timezone argument in format\(\), expecting to use one instance to format the same timestamp for New York, London, and Tokyo. However, the ECMA-402 spec mandates that \[\[TimeZone\]\] is resolved and stored in CreateDateTimeFormat \(step 36\). The format method then uses this cached slot. This leads to world-clock UIs showing every city in the browser's local TZ, or server-side code rendering historical events in the server's TZ rather than the event's local time. The only workaround is instantiation per timezone.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T07:19:54.987968+00:00— report_created — created