deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

deps: float ICU-23262 patch for icu78 - #64678

Merged
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates
Aug 12, 2026
Merged

deps: float ICU-23262 patch for icu78#64678
Renegade334 merged 1 commit into
nodejs:mainfrom
Renegade334:icu78-iso8601-dates

Conversation

@Renegade334

@Renegade334Renegade334 commented Jul 22, 2026

Copy link
Copy Markdown
Member

Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262

This fixes a bug in ICU 78 whereby absent era data causes libicu to bail out of loading subsequent locale data, including month names. The associated bug is attached to the ICU 79 milestone, so this should be fixed in the next release.

The iso8601 calendar does not contain era names in CLDR 48, but due to an initialization quirk, other fields end up missing in DateTimeFormat output. This is now a much more noticeable issue since certain Temporal objects can only be DateTimeFormat-ed with the iso8601 calendar, and we have had multiple complaints regarding this.

Firefox and Chromium are floating ephemeral patches to the datafile to add the missing era data (https://crrev.com/c/7843156) to bypass this bug. We cannot patch the locale data in our build setup as we use the precompiled ICU data from the sources package, but we can patch out the initialization bug so that the other iso8601 calendar data is intact.

$ JS='new Intl.DateTimeFormat("en-u-ca-iso8601", { dateStyle: "long" }).format()'
$ node -pe "$JS"2026 22
$ out/Release/node -pe "$JS"2026 July 22

Patch:

diff -u deps/icu-small/source/i18n/dtfmtsym.cpp tools/icu/patches/78/source/i18n/dtfmtsym.cpp--- deps/icu-small/source/i18n/dtfmtsym.cpp+++ tools/icu/patches/78/source/i18n/dtfmtsym.cpp@@ -2420,7 +2420,7 @@
initEras(&fEraNames, fEraNamesCount, calendarSink, buildResourcePath(path, gErasTag, gNamesWideTag, status),
ctebPtr, gNamesWideTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fEraNames, fEraNamesCount, fEras, fErasCount);
}
// current ICU4J falls back to abbreviated if narrow eras are missing, so we will too
@@ -2428,7 +2428,7 @@
initEras(&fNarrowEras, fNarrowErasCount, calendarSink, buildResourcePath(path, gErasTag, gNamesNarrowTag, status),
ctebPtr, gNamesNarrowTag, maxEra, status);
if (status == U_MISSING_RESOURCE_ERROR) { // Workaround because eras/wide was omitted from CLDR 1.3
- status = oldStatus;+ status = U_ZERO_ERROR;
assignArray(fNarrowEras, fNarrowErasCount, fEras, fErasCount);
}

Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
@nodejs-github-botnodejs-github-bot added i18n-api Issues and PRs related to Node.js internationalization support. icu Issues and PRs related to the ICU dependency. needs-ci PRs that need a full CI run. tools Issues and PRs related to the tools directory. labels Jul 22, 2026
@Renegade334Renegade334 added lts-watch-v24.x PRs that may need to be released in v24.x review wanted PRs that need review. labels Jul 22, 2026

@ovflowdovflowd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a temporary patch for this sounds good.

@Renegade334Renegade334 added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 11, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334Renegade334 added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 12, 2026
@nodejs-github-botnodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Aug 12, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64678
✔ Done loading data for nodejs/node/pull/64678
----------------------------------- PR info ------------------------------------
Title deps: float ICU-23262 patch for icu78 (#64678)
Author René <contact.9a5d6388@renegade334.me.uk> (@Renegade334)
Branch Renegade334:icu78-iso8601-dates -> nodejs:main
Labels tools, i18n-api, needs-ci, review wanted, commit-queue, icu, lts-watch-v24.x
Commits 1
- deps: float ICU-23262 patch for icu78
Committers 1
- Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64678
Fixes: https://github.com/nodejs/node/issues/63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
--------------------------------------------------------------------------------
ℹ This PR was created on Wed, 22 Jul 2026 16:21:05 GMT
✔ Approvals: 2
✔ - Claudio Wunder (@ovflowd): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910237836
✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64678#pullrequestreview-4910813233
✘ GitHub CI is still running
ℹ Last Full PR CI on 2026-08-12T18:27:40Z: https://ci.nodejs.org/job/node-test-pull-request/75801/
- Querying data for job/node-test-pull-request/75801/
✔ Build data downloaded
✔ Last Jenkins CI successful
--------------------------------------------------------------------------------
✔ Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/31640517938

@Renegade334
Renegade334 merged commit 167768f into nodejs:mainAug 12, 2026
86 of 87 checks passed
@Renegade334

Copy link
Copy Markdown
MemberAuthor

Landed in 167768f

@Renegade334
Renegade334 deleted the icu78-iso8601-dates branch August 12, 2026 21:13
aduh95 pushed a commit that referenced this pull request Aug 13, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 25, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
aduh95 pushed a commit that referenced this pull request Aug 27, 2026
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #64678Fixes: #63041
Refs: https://unicode-org.atlassian.net/browse/ICU-23262
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-failedPRs whose Commit Queue landing failed and need manual intervention before retrying.i18n-apiIssues and PRs related to Node.js internationalization support.icuIssues and PRs related to the ICU dependency.lts-watch-v24.xPRs that may need to be released in v24.xneeds-ciPRs that need a full CI run.review wantedPRs that need review.toolsIssues and PRs related to the tools directory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing month in Intl.DateTimeFormat output when using calendar: 'iso8601' in Node v24.13.0 and later

4 participants

@Renegade334@nodejs-github-bot@jasnell@ovflowd