Atlas expedition

React i18n in 2026: The Core Library Head-to-Head

react-i18next is still the safe default; next-intl owns the Next.js App Router; Paraglide and Lingui are the compile-time challengers worth betting on.

42 sources ~8 min read #9 react · i18n · l10n · javascript · frontend · next-js · bundle-size · comparison

Decision. For most React apps in 2026, react-i18next is still the safe default — biggest ecosystem, ~10.5M weekly downloads, works everywhere including React Native.[11][1]

Pick next-intl if you are on the Next.js App Router — it is the RSC-native standard.[28][25] Pick Paraglide (the interesting challenger) for a new web app where a tiny tree-shaken bundle and compile-time type-safe keys matter most.[23] Pick Lingui for compile-time DX with automatic extraction and RSC support.[26] Pick react-intl / FormatJS when strict ICU MessageFormat is non-negotiable.[2] Skip typesafe-i18n — great idea, but adoption and cadence have stalled.[37]

The six at a glance

Star counts and versions fetched 2026-07-15; weekly downloads are the npm registry's last-7-day point. Bundle figures are minified + gzipped and vary by source and setup — treat them as ranges, not guarantees.[19][20]

Library ⭐ Stars Weekly npm Bundle (min+gz) Runtime model Latest / cadence
react-i18next + i18next 10.0k + 8.6k[3][4] ~10.5M / 14.8M[11][12] ~15–22 kB[19][20] Runtime resolver; hooks + components; JSON loaded at runtime 17.0.9; daily commits[18]
react-intl (FormatJS) 15k[5] ~3.4M[13] ~13–20 kB (more w/ polyfills)[2][20] Runtime; native Intl + full ICU; hooks + components 10.1.16; active monorepo[40]
Lingui 5.8k[6] ~1.05M[15] ~10 kB total, ~2–3 kB runtime[41][19] Compile-time macros → compiled catalog; hooks + components; RSC 6.5.0 (v6 Apr 2026)[38]
next-intl 4.3k[7] ~4.0M[14] ~14 kB client / 457 B server-only[29][19] Runtime + AOT; RSC-first; useTranslations hook 4.13.2; frequent[35]
Paraglide-JS (inlang) 567[8] / inlang 2.0k[9] ~395k[16] ~1 kB / locale, tree-shaken[23] Compile-time → typed functions; no hooks; tree-shakable imports 2.22.0 (v2 line)[36]
typesafe-i18n 2.5k[10] ~48k[17] ~1 kB + generated code[19] Codegen; fully-typed dictionary; functions/hooks 5.27.1 (Feb 2026, slowing)[37]

Head-to-head on the axes that decide it

Axis react-i18next react-intl Lingui next-intl Paraglide typesafe-i18n
Message format Custom {{x}}, key-suffix plurals; ICU via plugin[21] Full ICU, native Intl[22] ICU-style macros[33] ICU inline[28] ICU-style / messages Custom typed
Type safety (keys) Opt-in TS augmentation[24] Moderate Compile-time Autocomplete + compile checks[28] Typed functions, missing key = compile error[23] Best-in-class codegen
Tree-shakes unused strings ✗ full catalog to client[24] ✓ (extraction-dependent)[34] Partial (AOT) ✓ per-message[23]
RSC / App Router Needs setup[25] Manual ✓ v5+[26] ✓ native, no use client[28] ✓ (adapters) Limited
Auto extraction Manual + tools[25] CLI ✓ CLI Manual Compiler Codegen watcher
Beyond React (RN, other FW) ✓ RN, Node, vanilla[19] React-focused ✓ multi-FW Next.js only ✓ Vite, TanStack, Svelte, Astro, Vue, Solid[23] ✓ multi-FW
TMS integrations Locize, Crowdin, Phrase[25] Good PO/Crowdin Good inlang ecosystem[9] Fewer

Per-library verdict

react-i18next ⭐ 10k (Jul 2026)

The incumbent · safe default
  • Largest ecosystem and download base by a wide margin; plugin for almost everything and every TMS.[32][31]
  • Works identically in React, React Native, Node and vanilla — the only real answer when you need one library across surfaces.[19]
  • ⚠ Ships the whole JSON catalog to the client, custom (non-ICU) format by default, and no key type-safety without opt-in augmentation.[24][21]

react-intl / FormatJS ⭐ 15k (Jul 2026)

Most-starred · ICU purist
  • The most complete ICU MessageFormat implementation — plurals, select, gender, rich text — on top of native Intl.[2][22]
  • Verbose API (intl.formatMessage / <FormattedMessage>) and the largest bundle of the mainstream set, more still if you polyfill old browsers.[21][20]

Lingui ⭐ 5.8k (Jul 2026)

Compile-time · best DX/size balance
  • Macros extract inline messages at build time; compiler strips them for near-zero runtime overhead (~2 kB) and automatic tree-shaking.[22][41]
  • Full RSC / App Router support since v5; v6 shipped Apr 2026.[26][27][38]
  • ⚠ Catalog accuracy depends on how tree-shakeably you write code; extra Babel/SWC config.[34]

next-intl ⭐ 4.3k (Jul 2026)

Next.js App Router standard
  • First-class App Router / Server Components / static rendering with one useTranslations API and ICU messages; 457 B in server-only paths.[28][29]
  • Compile-time key autocompletion and typo checks out of the box.[28]
  • ⚠ Next.js only, and effectively a single-maintainer project (amannn) — high quality, small bus factor.[7][42]

Paraglide-JS ⭐ 567 (Jul 2026)

The interesting challenger
  • Compiles each message into a standalone typed function; your bundler tree-shakes unused ones. Benchmark: 47 kB vs i18next's 205 kB at 5 locales × 100 messages, and it stays flat as the catalog grows.[23]
  • Import m.someKey() anywhere — no hook, no provider; a missing/renamed key is a compile error.[24]
  • Framework-agnostic (Vite, TanStack Start, React Router, Astro, SvelteKit, Vue, Solid); translated pathnames built in.[23]
  • ⚠ Youngest/smallest of the set, adds a codegen step and extra project.inlang/ + paraglide/ folders; no official React Native adapter.[24][1]

typesafe-i18n ⭐ 2.5k (Jul 2026)

⚠ Losing momentum
  • Pioneered parameter-level type safety via codegen with a ~1 kB runtime; multi-framework.[19]
  • ⚠ ~48k weekly downloads (an order of magnitude below the pack), repo moved orgs, last release Feb 2026 — Paraglide has largely eaten its niche.[17][37]

How to choose

  • On the Next.js App Router?next-intl. Purpose-built, RSC-native, minutes to set up.[25][39]
  • Need React Native / multiple frameworks / heavy TMS workflow, or a large existing team?react-i18next. Boring, proven, universal.[1][30]
  • New web app, bundle size + type safety are top priority, comfortable with a build step?Paraglide (aggressive bet) or Lingui (safer compile-time pick with automatic extraction and a bigger community).[23][26]
  • Translators live in ICU, or you need the richest formatting?react-intl / FormatJS.[2]
  • Considering typesafe-i18n? → prefer Paraglide instead; same type-safety promise, healthier project.[37]

Bottom line: the runtime-resolver era (react-i18next, react-intl) still dominates by inertia and reach, but the compile-time cohort (Paraglide, Lingui, next-intl's AOT) is where 2026's momentum and the bundle/type-safety wins are. Choosing is a long-term bet — mid-project migration is one of the most painful refactors in frontend.[29]

Citations · 42 sources

Click the Citations tab to load…