← Default view

i18n Decision Console · 2026

Six React i18n libraries, one runtime question

The runtime decides — not taste.

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.

01

The decision tree

start at the runtime, not the feature list
What runtime are you shipping to? the split is compile-time (tree-shakeable) vs runtime-dictionary
Server-first Next.js App Router / RSC
next-intl RSC-native, resolves on the server with no use client boundary; 457 B server-only.[2]
Lingui Alternative App-Router pick — RSC support since v5, automatic extraction.[3]
Client-first Vite SPA / framework-agnostic
Paraglide Bundle + types lead — the aggressive bet: 47 kB vs 205 kB, flat as the catalog grows.[8]
react-i18next React Native, several frameworks, or a large existing team — proven and universal.[11]
react-intl Translators live in ICU / you need the richest formatting.[4]
02

The scoreboard

stars · weekly npm · bundle · runtime model — Jul 2026
#1 · DEFAULT

react-i18next

⭐ 10k
Safe default
Weekly npm
10.5M
Bundle min+gz
15–22 kB
Runtime model
Runtime resolver
Reach
RN · Node · vanilla

Biggest ecosystem and every TMS — but ships the whole catalog to the client and types nothing by default.[1]

#2 · APP ROUTER

next-intl

⭐ 4.3k
Next.js pick
Weekly npm
4.0M
Bundle
457 B server
Runtime model
Runtime + AOT · RSC
Reach
Next.js only

RSC-native default, ICU + typed keys out of the box — but Next-only and effectively single-maintainer.[10]

#3 · COMPILE-TIME

Lingui

⭐ 5.8k
Safe compile-time pick
Weekly npm
1.05M
Bundle
~10 kB · 2–3 rt
Runtime model
Compile macros · RSC
Reach
Multi-framework

Automatic extraction, compile-time types, RSC since v5 — catalog accuracy depends on how tree-shakeably you write.[7]

#4 · THE BET

Paraglide-JS

⭐ 567
Aggressive bet
Weekly npm
395k
Bundle
~1 kB / locale
Runtime model
Compile · typed fns
Reach
Vite · Astro · Vue…

Wins bundle + type-safety decisively; missing key = compile error — but youngest of the set and no React Native adapter.[8]

#5 · ICU PURIST

react-intl

⭐ 15k
ICU purist
Weekly npm
3.4M
Bundle
13–20 kB
Runtime model
Runtime · full ICU
Reach
React-focused

Most complete ICU MessageFormat on native Intl — the pick when strict ICU is non-negotiable; verbose API, largest mainstream bundle.[4]

#6 · SKIP

typesafe-i18n

⭐ 2.5k
Stalled
Weekly npm
48k
Bundle
~1 kB + gen
Runtime model
Codegen dictionary
Cadence
slowing

Pioneered typed i18n, but downloads sit an order of magnitude below the pack. Prefer Paraglide for the same promise on a healthier project.[12]

03

Head-to-head on the axes that decide it

green = wins the axis · red = weak spot
Axisreact-i18nextreact-intlLinguinext-intlParaglidetypesafe-i18n
Message format Custom {{x}} · ICU via pluginFull ICUICU macrosICU inlineICU-styleCustom typed
Type safety (keys) Opt-in TS augmentModerateCompile-timeAutocomplete + checksMissing key = errorBest-in-class codegen
Tree-shakes strings ✗ full catalog✓ extraction-depPartial (AOT)✓ per-message
RSC / App Router Needs setupManual✓ v5+✓ native✓ adaptersLimited
Beyond React ✓ RN · Node · vanillaReact-focused✓ multi-FWNext.js only✓ Vite · Astro · Vue✓ multi-FW
Auto extraction Manual + toolsCLI✓ CLIManualCompilerCodegen watcher
04

Dig into an angle

Expedition

The Core Library Head-to-Head

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

Survey

Message format, pluralization & ICU

ICU-first vs interpolation-first vs MF2-inspired — how each authors plurals, gender and Intl-formatted numbers/dates.

Survey

Type safety, extraction & tooling

Compile-first libraries and next-intl give type safety for free; i18next and react-intl bolt it on.

Survey

Framework & runtime fit

next-intl or Lingui for the App Router; Paraglide or react-i18next for a Vite SPA — compile-time vs runtime-dictionary.

Survey

The translation pipeline

The library pins your extraction model and file format; the TMS you pair it with decides your actual workflow.

05

Sources

1i18next — TypeScriptTypes bolted on via hand-maintained d.ts augmentation.
2next-intl — App RouterResolves on the server, no use client boundary.
3Lingui — React Server ComponentsServer-side resolution since v5+.
4FormatJS — react-intlFull ICU MessageFormat on native Intl.
5react-i18next — ICU formatCustom interpolation; ICU only via plugin.
6i18next — TMSLeans on Locize / Crowdin / Phrase.
7Crowdin — LinguiLingui commits you to gettext PO through Crowdin.
8Paraglide vs react-i18next47 kB vs 205 kB at 5 locales × 100 messages. ⭐ 567
9npm — react-i18next downloadsOrder-of-magnitude download lead.
10next-intl (amannn)Wins App Router; Next-only, single-maintainer. ⭐ 4.3k
11Best i18n libraries 2026 — honest comparisonRN / multi-FW / big team → react-i18next.
12npm — typesafe-i18nStalled; prefer Paraglide.
13Definitive guide to i18n libraries 2026Mid-project i18n switch is among the most painful refactors.

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.