i18n Decision Console · 2026
react-i18next is still the boring, universal safe default by an order-of-magnitude download lead [9] — but the momentum, the tiny bundles and the free type-safety live in the compile-time cohort: Paraglide, Lingui, and next-intl's ahead-of-time path. Pick by where you ship: Next.js App Router → next-intl, Vite SPA → Paraglide / react-i18next.
Biggest ecosystem and every TMS — but ships the whole catalog to the client and types nothing by default.[1]
RSC-native default, ICU + typed keys out of the box — but Next-only and effectively single-maintainer.[10]
Automatic extraction, compile-time types, RSC since v5 — catalog accuracy depends on how tree-shakeably you write.[7]
Wins bundle + type-safety decisively; missing key = compile error — but youngest of the set and no React Native adapter.[8]
Most complete ICU MessageFormat on native Intl — the pick when strict ICU is non-negotiable; verbose API, largest mainstream bundle.[4]
Pioneered typed i18n, but downloads sit an order of magnitude below the pack. Prefer Paraglide for the same promise on a healthier project.[12]
| Axis | react-i18next | react-intl | Lingui | next-intl | Paraglide | typesafe-i18n |
|---|---|---|---|---|---|---|
| Message format | Custom {{x}} · ICU via plugin | Full ICU | ICU macros | ICU inline | ICU-style | Custom typed |
| Type safety (keys) | Opt-in TS augment | Moderate | Compile-time | Autocomplete + checks | Missing key = error | Best-in-class codegen |
| Tree-shakes strings | ✗ full catalog | ✗ | ✓ extraction-dep | Partial (AOT) | ✓ per-message | ✓ |
| RSC / App Router | Needs setup | Manual | ✓ v5+ | ✓ native | ✓ adapters | Limited |
| Beyond React | ✓ RN · Node · vanilla | React-focused | ✓ multi-FW | Next.js only | ✓ Vite · Astro · Vue | ✓ multi-FW |
| Auto extraction | Manual + tools | CLI | ✓ CLI | Manual | Compiler | Codegen watcher |
react-i18next is still the safe default; next-intl owns the App Router; Paraglide and Lingui are the compile-time challengers.
SurveyICU-first vs interpolation-first vs MF2-inspired — how each authors plurals, gender and Intl-formatted numbers/dates.
SurveyCompile-first libraries and next-intl give type safety for free; i18next and react-intl bolt it on.
Surveynext-intl or Lingui for the App Router; Paraglide or react-i18next for a Vite SPA — compile-time vs runtime-dictionary.
SurveyThe library pins your extraction model and file format; the TMS you pair it with decides your actual workflow.
The bet: this run did not quantify migration cost — and a mid-project i18n switch is one of the most painful frontend refactors, which is exactly what makes the compile-time choice a bet. The question upstream of every card above: is the target a Vite SPA or a Next.js App Router app?
Stars in ⭐ format, weekly downloads and bundle figures restated from the head-to-head child (fetched 2026-07-15); bundle numbers are min+gz ranges, not guarantees.