react-brain
Browse decisions
React & language foundations 3App architecture 9UI 12Platform & native 9Build, test, observe, secure 6AI in React apps 3stack composerdecision recordscensusstaleness bencharchitecturechangelogmethodologyroadmap

entriesui · verified 2026-06-25 · react + react-native

Internationalization (i18n)

draftedconfidence: mediumthis tier holds 50% on the public scorecard (3/19 graded · 0 overturned) →

re-verified 2× — 2026-07-13 · 2026-07-06 · changelog

recommendation

Next.js app → next-intl. Otherwise i18next (web + RN, huge ecosystem) or Lingui (compile-time, low boilerplate).

  • bundle-size-sensitive → next-intl / Lingui (AOT-compiled messages)
  • need maximum plugin ecosystem / RN + web parity → i18next

Options & tradeoffs

the field considered — and why each one isn’t the default here

optiontradeoffevidence
next-intl (4.x)Next.js-first; v4.8 compiles ICU messages AOT to shrink bundles4.3M/wk
FormatJS / react-intlICU message format; mature, framework-agnostic3.6M/wk · ships in 4/34
Lingui (6.x)compile-time message extraction; low-boilerplate; i18n directivesships in 3/34
i18next / react-i18nextvery popular, big plugin ecosystem; works web + RN11.1M/wk · ships in 8/34
fbteemodern continuation of Meta's deprecated fbt

evidence: npm weekly downloads (signals snapshot) · “ships in n/D” = adoption across the production-app census, honest denominators

npm weekly downloads (from the corpus's last signals run): next-intl 4.3M · react-i18next 11.1M · i18next 15.7M · react-intl 3.6M

Canonical reading

Editorial annotations on why each piece matters — the articles themselves are the originals; read them there.

Ahead-of-time compilation for next-intlJan Amann (next-intl author)

Why and how ICU messages are precompiled at build time into minified ASTs evaluated by a ~650-byte runtime, weighing function-based vs AST strategies against bundle size. Teaches the compile-time-vs-runtime and bundle-size tradeoffs from first principles.

ICU Message Syntax (core concepts)FormatJS (react-intl)

The canonical, example-driven explanation of the ICU message format — interpolation, plurals/selectordinal, select, number/date skeletons, rich text. ICU is a stable Unicode standard, so this foundational reference doesn't go stale.

Sources

Related in ui: styling · component-libs · animation · lists · a11y · charts · editors · svg · maps · calendars · polish