Skip to content

deps: ICU tzdata needs update to 2026a for America/Vancouver (BC permanent DST) #62323

@mjradwin

Description

@mjradwin

Version

v25.8.1

Platform

Linux wp10 6.17.0-19-generic #19-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar  6 14:02:58 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

No response

What steps will reproduce the bug?

British Columbia adopted permanent DST effective November 1, 2026. Node.js currently has America/Vancouver falling back to PST (UTC-8) that day, which will be incorrect. You can verify the bug after November 1, 2026:

node -e "console.log(process.versions.tz)"  // shows current tzdata version
node -e "console.log(new Intl.DateTimeFormat('en-CA', {
  timeZone: 'America/Vancouver',
  timeZoneName: 'short',
  year: 'numeric', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
// Expected on patched Node:  2026-11-01, 02:00 PDT
// Actual on unpatched Node:  2026-11-01, 01:00 PST  ← wrong

Root cause: The bundled ICU tzdata predates IANA 2026a (released 2026-03-01), which includes the America/Vancouver rule change. Reference: eggert/tz@8b46071

Note also ICU 78.3 mentions updates to timezone data 2026a

Fix: Update deps/icu-small to include tzdata 2026a per the process documented in maintaining-icu.md.

Urgency: The detonation date is November 1, 2026, so there is time, but backports to LTS lines (v22.x, v24.x) will be needed.

How often does it reproduce? Is there a required condition?

Always reproducible, no required conditions

What is the expected behavior? Why is that the expected behavior?

$ node -e "console.log(process.versions.tz)"
2026a
$ node -e "console.log(new Intl.DateTimeFormat('en-CA', {
  timeZone: 'America/Vancouver',
  timeZoneName: 'short',
  year: 'numeric', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
2026-11-01, 02:00 a.m. MST
$

What do you see instead?

$ node -e "console.log(process.versions.tz)"
2025c
$ node -e "console.log(new Intl.DateTimeFormat('en-CA', {
  timeZone: 'America/Vancouver',
  timeZoneName: 'short',
  year: 'numeric', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
2026-11-01, 01:00 a.m. PST
$

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    icuIssues and PRs related to the ICU dependency.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions