unstale

npm / react-intl

react-intl

What changed in react-intl 8 to 12, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

8 breaking1 security5 new APIs and options3 performance5 behavior and defaults6 tooling30 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

react-intl 126 changes

Breaking changes 1

  • Simplifies typed helper calls and generated contracts; this is a breaking change.

    12.0.0release notes

New APIs and options 2

  • Adds opt-in support for branded message text.

    12.1.0release notes

  • Exports a shared text message formatter type for use by developers.

    12.0.0release notes

Fixes and other changes 3

  • The eslint-plugin-formatjs now generates lint-compatible empty message contracts.

    12.1.1release notes

  • Default message helpers now use empty ICU contracts, fixing their type behavior for messages without ICU arguments.

    12.0.2release notes

  • Fixes migration of existing message catalogs so they migrate cleanly.

    12.0.1release notes

react-intl 111 changes

Fixes and other changes 1

  • $t now aligns with the formatMessage overloads, improving its type behavior.

    11.0.1release notes

react-intl 1040 changes

Breaking changes 2

  • TypeScript peer dependencies were removed, changing the package's peer dependency requirements.

    10.1.1release notes

  • Major version bump; migration instructions are available in the upgrade guide.

    10.0.0release notes

Security 1

  • Verbatim text is restricted to domain sources.

    10.2.1release notes

New APIs and options 2

  • Adds duration components and bindings to react-intl.

    10.2.0release notes

  • A headless editor package is published, with a headless translation workflow.

    10.1.27release notes

Performance 3

  • Skipped message diagnostics run faster in formatjs_cli.

    10.1.12release notes

  • Catalog parsing is parallelized, improving CLI processing performance.

    10.1.10release notes

  • File processing is parallelized, improving CLI processing performance.

    10.1.10release notes

Behavior and default changes 4

  • formatjs_intl accepts inline named values.

    10.1.22release notes

  • CLDR was upgraded to 48.2.0, updating the locale data used for internationalization.

    10.1.19release notes

  • Applies defaults to Date methods in @formatjs/intl-datetimeformat.

    10.1.18release notes

  • The timezone database was updated to 2026c, which may affect timezone data used by date-time formatting.

    10.1.16release notes

Tooling 6

  • The CLI can extract Python format_message calls.

    10.1.26release notes

  • formatjs_cli can now extract messages from Python.

    10.1.24release notes

  • The FormatJS ESLint plugin allows conditional ICU element blocklists.

    10.1.23release notes

  • eslint-plugin-formatjs detects glued placeholders.

    10.1.22release notes

  • An Rsbuild adapter was added to @formatjs/unplugin.

    10.1.15release notes

  • formatjs_cli now supports id interpolation hash algorithms.

    10.1.12release notes

Fixes and other changes 22

  • Message extraction now handles tagged template literals.

    10.1.27release notes

  • Message IDs are preserved for empty descriptions.

    10.1.27release notes

  • The plugin supports transparent expression wrappers.

    10.1.26release notes

  • Message recognition is aligned across tools.

    10.1.26release notes

  • The Python runtime fallback is aligned.

    10.1.26release notes

  • The CLI library uses native extraction.

    10.1.23release notes

  • The FormatJS CLI now extracts messages that contain only an id.

    10.1.20release notes

  • Missing id errors now include context, helping identify which message caused the error.

    10.1.19release notes

  • The ICU message parser now preserves plural context in tags.

    10.1.19release notes

  • Structural variables are deduplicated in the ICU message format parser.

    10.1.17release notes

  • Weekday counts 4, 5, and 6 in e/c skeletons now map to long, narrow, and short, respectively.

    10.1.16release notes

  • The hour12 option is now honored when timeStyle is used.

    10.1.15release notes

  • Adjacent syntax characters are coalesced when escaping in the ICU message parser.

    10.1.15release notes

  • FormatJS CLI extraction now parses JSX in JavaScript inputs.

    10.1.15release notes

  • The numberingSystem option is now honored by @formatjs/intl-relativetimeformat.

    10.1.15release notes

  • Supports React 18 and React 18+ consumers, including the React 18 peer range.

    10.1.14release notes

  • Unicode whitespace is normalized when generating ids.

    10.1.13release notes

  • formatjs_cli supports loader-utils id templates.

    10.1.13release notes

  • Fixes decoding of the JSX bull entity.

    10.1.10release notes

  • The native extract binding is exposed by @formatjs/cli-lib.

    10.1.10release notes

  • Transform hook filters are exposed by @formatjs/unplugin.

    10.1.10release notes

  • Sets the displayName for FormattedListParts.

    10.1.8release notes

react-intl 811 changes

Breaking changes 5

  • formatTime and FormattedTimeParts use global time Formats for format config overrides instead of date Formats.

    8.0.0release notes

  • react-intl is converted to ESM, affecting how projects load and bundle the package.

    8.0.0release notes

  • Support for React 18 and below is dropped; projects using react-intl must use a later React version.

    8.0.0release notes

  • Rich text is wrapped with Fragment instead of clone, changing how rich-text output is produced.

    8.0.0release notes

  • @types/react is moved to a peer dependency, affecting dependency installation and package compatibility.

    8.0.0release notes

New APIs and options 1

Behavior and default changes 1

  • Improves Unicode 17.0 Format/Extend transparency in the segmenter.

    8.1.0release notes

Fixes and other changes 4

  • react-intl is modernized for React 19.

    8.2.0release notes

  • Fixes Vitest DOM tests failing in a Bazel sandbox.

    8.2.0release notes

  • Fixes the JSON ESM import in @formatjs/utils.

    8.0.6release notes

  • FormattedDate and FormattedTime receive strict typing for format overrides.

    8.0.0release notes