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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions