6.3.14 (2026-09-10)
What's Changed
- fix(@formatjs/intl-datetimeformat): apply Date method defaults by @longlho in #6893
- chore: release main by @longlho in #6894
- fix(@formatjs/unplugin): parse module ids with queries by @longlho in #6896
- chore: release main by @longlho in #6898
- fix: repair corrupted
patches/typescript@7.0.2.patchby @andersk in #6929 - fix(babel-plugin-formatjs): stop enabling JSX syntax implicitly by @andersk in #6930
- test(@formatjs/intl-datetimeformat): cover ar-EG locale data by @longlho in #6933
- feat: upgrade CLDR to 48.2.0 by @longlho in #6934
- fix(@formatjs/intl): include context in missing id errors by @longlho in #6935
- fix(deps): make native release deps host-independent by @longlho in #6936
- fix(icu-messageformat-parser): preserve plural context in tags by @eoinest in #6908
- chore: release main by @longlho in #6932
- fix(formatjs_cli): extract id-only messages by @longlho in #6962
- chore: release main by @longlho in #6955
- docs: add internationalization best practices by @longlho in #6972
- docs: add i18n best practices skill by @longlho in #6973
- feat(formatjs_icu_messageformat): add Rust message formatter by @longlho in #6974
- feat(formatjs_intl): add Rust intl runtime by @longlho in #6975
- chore: release main by @longlho in #6977
- Documented how to use ember-intl by @ijlee2 in #6946
- fix: support Rust 1.92 in new intl crates by @longlho in #6978
- chore: release main by @longlho in #6979
- fix: queue crate release workflows by @longlho in #6980
- docs: document Rust support by @longlho in #6981
- feat(formatjs_intl): add message fallbacks by @longlho in #6982
- feat(formatjs_intl): support precompiled catalogs by @longlho in #6985
- chore: release main by @longlho in #6984
- build: remove root npmrc by @longlho in #6988
- fix: skip unpublished Rust crates by @longlho in #6992
- fix: handle Cargo publish and merge options by @longlho in #6993
- fix(formatjs_cli): fail on input resolution errors by @longlho in #7005
- feat(formatjs_intl): add extractable format_message macro by @longlho in #7018
- chore: release main by @formatjsproject in #6997
- feat(formatjs_intl): accept inline named values by @longlho in #7031
- chore(deps): exclude Renovate from release notes by @longlho in #7030
- feat(eslint-plugin-formatjs): detect glued placeholders by @longlho in #7036
- docs: cover units and calendar names in i18n skill by @longlho in #7042
- chore: release main by @formatjsproject in #7037
- fix(@formatjs/cli-lib): use native extraction by @longlho in #7046
- fix: recover partial npm releases by @longlho in #7053
- chore: release main by @formatjsproject in #7047
- docs: sync i18n best practices skill and guide by @longlho in #7062
- feat: add localization review and translation skills by @longlho in #7065
- docs: add top-level skills section by @longlho in #7066
- refactor: replace Vike with static Vite docs by @longlho in #7068
- docs: add agent skills overview by @longlho in #7069
- docs: document native date range formatting by @longlho in #7070
- test: add local Codex skill evals by @longlho in #7071
- feat(eslint-plugin-formatjs): allow conditional ICU element blocklists by @longlho in #7073
- chore: release main by @formatjsproject in #7064
- test: use neutral brands in skill evals by @longlho in #7090
- feat(formatjs_cli): extract messages from Python by @longlho in #7097
- fix: tighten formatted value placeholder guidance by @longlho in #7099
- fix: retain binary-only Cargo release candidates by @longlho in #7102
- chore: release main by @formatjsproject in #7079
- fix: enable Git long paths for Windows release by @longlho in #7105
- build: cross-compile release artifacts on Linux by @longlho in #7106
- build: add Python native wheel scaffolding by @longlho in #7108
- build: migrate to bazel_lib by @longlho in #7109
- feat: add Python bindings for Rust intl packages by @longlho in #7111
- fix: configure Python Release Please strategy by @longlho in #7114
- fix: bootstrap Python package versions by @longlho in #7117
- build(deps): regenerate Bazel lockfile in Renovate updates by @longlho in #7119
- chore: release main by @formatjsproject in #7107
- build(deps): align Renovate Bazel lock command by @longlho in #7122
- build: cross-compile Python release wheels by @longlho in #7121
- fix: rename Python intl distribution by @longlho in #7123
- fix: validate released Python versions by @longlho in #7125
- feat(formatjs_cli): extract Python format_message calls by @longlho in #7129
- feat(formatjs_intl): align Python runtime fallback by @longlho in #7130
- chore: release main by @formatjsproject in #7133
- build(deps): update Bazel lockfiles for Renovate PRs by @longlho in #7135
- build(deps): publish dispatched Renovate check results by @longlho in #7136
- build(deps): publish Renovate required statuses by @longlho in #7137
- fix(eslint-plugin-formatjs): align message recognition across tools by @longlho in #7151
- fix(babel-plugin-formatjs): support transparent expression wrappers by @longlho in #7156
- chore: release main by @formatjsproject in #7138
- fix(formatjs_cli): extract messages from tagged template literals by @vpontis in #7182
- docs: track ECMA-402 draft polyfill audit by @longlho in #7185
- docs: link ECMA-402 audit fixes and validation by @longlho in #7200
- codex/ecma402 coercion by @longlho in #7186
- fix(@formatjs/intl-supportedvaluesof): coerce keys before lookup by @longlho in #7187
- fix(@formatjs/intl-listformat): follow the string iterator protocol by @longlho in #7189
- fix(deps): negotiate well-formed numbering system options by @longlho in #7190
- fix(@formatjs/intl-collator): validate collation and comparison inputs by @longlho in #7191
- fix(@formatjs/intl-datetimeformat): reject offsets containing seconds by @longlho in #7192
- fix(@formatjs/intl-displaynames): validate and canonicalize display codes by @longlho in #7193
- fix(@formatjs/intl-durationformat): validate duration records exactly by @longlho in #7194
- fix(@formatjs/intl-locale): canonicalize weekday and numeric options by @longlho in #7195
- fix(@formatjs/intl-locale): align week info with ECMA-402 by @longlho in #7196
- fix(@formatjs/intl-pluralrules): align draft options and ranges by @longlho in #7197
- fix(@formatjs/intl-segmenter): preserve iterator progress and locale by @longlho in #7198
- fix(@formatjs/intl-getcanonicallocales): follow locale-list coercion by @longlho in #7199
- fix(@formatjs/intl-numberformat): accept callable option objects by @longlho in #7201
- fix(@formatjs/intl-segmenter): reject coerced BigInt indices by @longlho in #7202
- test(@formatjs/intl-numberformat): enforce Test262 result accounting by @longlho in #7209
- test(@formatjs/intl-numberformat): cover complete current Test262 suites by @longlho in #7210
- fix(@formatjs/intl-numberformat): omit NaN sign with exceptZero by @longlho in #7212
- test: use generated Test262 harness rules by @longlho in #7216
- fix(@formatjs/intl-numberformat): reject undefined range endpoints by @longlho in #7226
- fix(@formatjs/intl-numberformat): preserve Symbol coercion errors by @longlho in #7227
- codex/test262 numberformat option validation by @longlho in #7228
- fix(@formatjs/intl-listformat): preserve language data when loading root locale by @longlho in #7229
- fix(@formatjs/intl-locale): enforce internal receiver branding by @longlho in #7231
- fix(@formatjs/intl-collator): match built-in function descriptors by @longlho in #7232
- fix(@formatjs/intl-numberformat): make built-in methods non-constructible by @longlho in #7233
- fix(@formatjs/intl-numberformat): account for significant precision in rounding magnitude by @longlho in #7234
- fix(@formatjs/intl-numberformat): validate internal receiver branding by @longlho in #7235
- fix(@formatjs/intl-datetimeformat): truncate fractional timestamps toward zero by @longlho in #7236
- fix(@formatjs/intl-datetimeformat): match built-in method metadata by @longlho in #7238
- test(deps): run Test262 with stable Temporal support by @longlho in #7240
- fix(@formatjs/intl-durationformat): match built-in metadata and option order by @longlho in #7241
- fix(@formatjs/intl-durationformat): display the duration sign once by @longlho in #7242
- fix(@formatjs/intl-durationformat): preserve exact numeric duration formatting by @longlho in #7243
- fix(@formatjs/intl-durationformat): propagate numeric unit styles by @longlho in #7244
- fix(@formatjs/intl-durationformat): retain zero minutes between numeric fields by @longlho in #7245
- fix(@formatjs/intl-localematcher): preserve supported requested locale tags by @longlho in #7247
- fix(@formatjs/intl-supportedvaluesof): make the built-in non-constructible by @longlho in #7248
- fix(@formatjs/intl-numberformat): preserve resolved option property order by @longlho in #7249
- fix(@formatjs/intl-relativetimeformat): isolate internal formatter options by @longlho in #7250
- fix(@formatjs/intl-localematcher): isolate locale resolution records by @longlho in #7251
- fix(@formatjs/intl-locale): use standard locale tag coercion by @longlho in #7252
- fix(@formatjs/intl-locale): support the variants constructor option by @longlho in #7253
- fix(@formatjs/intl-locale): canonicalize before applying locale overrides by @longlho in #7254
- fix(@formatjs/intl-locale): minimize maximized locale components by @longlho in #7255
- feat(@formatjs/editor): add headless React 19 editor with StyleX UI by @longlho in #7223
- fix(@formatjs/intl-locale): honor region preference priority by @longlho in #7257
- fix(@formatjs/intl-locale): expose canonical option values by @longlho in #7258
- fix(@formatjs/intl-locale): follow likely-subtag lookup order by @longlho in #7259
- fix(@formatjs/intl-durationformat): resolve supported numbering systems by @longlho in #7260
- fix(@formatjs/intl-durationformat): accept Temporal duration inputs by @longlho in #7261
- fix(@formatjs/intl-displaynames): accept extended language subtags by @longlho in #7262
- fix(@formatjs/intl-supportedvaluesof): include fixed-offset time zones by @longlho in #7263
- fix(@formatjs/intl-collator): preserve locale punctuation defaults by @longlho in #7264
- fix(@formatjs/intl-collator): exclude root from locale negotiation by @longlho in #7265
- fix(@formatjs/intl-localematcher): respect Unicode extension boundaries by @longlho in #7266
- fix(@formatjs/intl-collator): resolve canonical collation types by @longlho in #7267
- fix(@formatjs/intl-collator): select search collation tailoring by @longlho in #7268
- feat(@formatjs/editor): add headless translation workflow by @pgonsolin in #7157
- fix(@formatjs/intl-supportedvaluesof): probe locale-specific collations by @longlho in #7269
- fix(@formatjs/intl-datetimeformat): handle exact date range boundaries by @longlho in #7270
- fix(@formatjs/intl-datetimeformat): validate receiver internal slots by @longlho in #7271
- fix(@formatjs/intl-datetimeformat): align option property metadata by @longlho in #7272
- fix(@formatjs/intl-datetimeformat): format year zero in the BC era by @longlho in #7273
- fix(@formatjs/intl-datetimeformat): normalize timezone inputs by @longlho in #7274
- fix(@formatjs/intl-datetimeformat): isolate option records by @longlho in #7275
- fix(@formatjs/intl-datetimeformat): support all hour-cycle options by @longlho in #7276
- fix(@formatjs/intl-datetimeformat): select independent hour12 preferences by @longlho in #7277
- fix(@formatjs/intl-getcanonicallocales): canonicalize locale extensions by @longlho in #7278
- fix(@formatjs/intl-getcanonicallocales): resolve subdivision aliases by @longlho in #7279
- fix(@formatjs/intl-getcanonicallocales): apply compound language aliases by @longlho in #7280
- fix(@formatjs/intl-getcanonicallocales): append list elements directly by @longlho in #7281
- codex/editor es2016 compatibility by @longlho in #7286
- test(deps): cover combined polyfill installation by @longlho in #7282
- test(deps): load required Test262 locale fixtures by @longlho in #7284
- fix(@formatjs/intl-getcanonicallocales): preserve RegExp statics by @longlho in #7287
- fix(@formatjs/intl-displaynames): use canonical calendar data keys by @longlho in #7288
- fix(@formatjs/intl-numberformat): isolate internal plural options by @longlho in #7290
- fix(@formatjs/intl-numberformat): honor locale grouping minimums by @longlho in #7291
- fix(@formatjs/intl-datetimeformat): reuse parsed pattern fields by @longlho in #7292
- fix(@formatjs/intl-datetimeformat): match hourless time requests by @longlho in #7293
- fix(@formatjs/intl-datetimeformat): support ISO calendar negotiation by @longlho in #7294
- fix(@formatjs/intl-pluralrules): generate compact exponent data by @longlho in #7295
- fix(formatjs_cli): preserve IDs for empty descriptions by @longlho in #7296
- fix(@formatjs/intl-datetimeformat): compare ranges at displayed precision by @longlho in #7297
- fix(@formatjs/intl-datetimeformat): format flexible day periods by @longlho in #7298
- fix(deps): preserve polyfill locale data during registration by @longlho in #7299
- fix(@formatjs/intl-segmenter): register CLDR locale coverage by @longlho in #7300
- fix(@formatjs/intl-numberformat): preserve range separators and affixes by @longlho in #7301
- fix(@formatjs/intl-numberformat): place approximate signs in locale patterns by @longlho in #7302
- fix(@formatjs/intl-numberformat): share signs with range unit suffixes by @longlho in #7303
- fix(@formatjs/intl-numberformat): repair benchmark entrypoints by @longlho in #7304
- fix(@formatjs/intl-numberformat): preserve supplementary digits when grouping by @longlho in #7305
- fix(@formatjs/intl-numberformat): generate complete CLDR digit mappings by @longlho in #7306
- feat(@formatjs/editor): publish headless editor package by @longlho in #7285
- fix(deps): consolidate polyfill conformance and performance fixes by @longlho in #7320
- fix(@formatjs/editor): bootstrap the headless editor release by @longlho in #7321
New Contributors
- @eoinest made their first contribution in #6908
- @ijlee2 made their first contribution in #6946
- @formatjsproject made their first contribution in #6997
- @pgonsolin made their first contribution in #7157
Full Changelog: https://github.com/formatjs/formatjs/compare/@formatjs/intl-pluralrules@6.3.13...@formatjs/intl-pluralrules@6.3.14
Dependencies
- The following workspace dependencies were updated
- dependencies
- @formatjs/intl-localematcher bumped to 0.8.14
- dependencies