Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Dzięki integracji serwera Intlayer MCP z ulubionym asystentem AI możesz uzyskać dostęp do całej dokumentacji bezpośrednio z ChatGPT, DeepSeek, Cursor, VSCode itp.
Zobacz dokumentację serwera MCPTa dokumentacja jest nieaktualna, wersja bazowa została zaktualizowana w .
Przejdź do angielskiej wersji dokumentuTreść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
react-Intl VS react-i18next VS intlayer | React Internationalization (i18n)
This guide compares three established i18n options for React: react-intl (FormatJS), react-i18next (i18next), and Intlayer. We focus on plain React applications (e.g., Vite, CRA, SPA). If you’re using Next.js, see our dedicated Next.js comparison.
We evaluate:
- Architecture & content organization
- TypeScript & safety
- Missing translation handling
- Rich content & formatting capabilities
- Performance & loading behavior
- Developer experience (DX), tooling & maintenance
- SEO/routing (framework-dependent)
tl;dr: All three can localize a React app. If you want component-scoped content, strict TypeScript types, build-time missing-key checks, tree-shaken dictionaries, and built-in editorial tooling (Visual Editor/CMS + optional AI translation), Intlayer is the most complete choice for modular React codebases.
High-level positioning
- react-intl - ICU-first, standards-aligned formatting (dates/numbers/plurals) with a mature API. Catalogs are typically centralized; key safety and build-time validation are largely on you.
- react-i18next - Extremely popular and flexible; namespaces, detectors, and many plugins (ICU, backends). Powerful, but configuration can sprawl as projects scale.
- Intlayer - Component-centric content model for React, strict TS typing, build-time checks, tree-shaking, plus Visual Editor/CMS and AI-assisted translations. Works with React Router, Vite, CRA, etc.
Feature matrix (React focus)
| Feature | react-intlayer (Intlayer) | react-i18next (i18next) | react-intl (FormatJS) |
|---|---|---|---|
| Translations Near Components | ✅ Yes, content collocated with each component | ❌ No | ❌ No |
| TypeScript Integration | ✅ Advanced, auto-generated strict types | ⚠️ Basic; extra config for safety | ✅ Good, but less strict |
| Missing Translation Detection | ✅ TypeScript error hightlight and build-time error/warning | ⚠️ Mostly fallback strings at runtime | ⚠️ Fallback strings |
| Rich Content (JSX/Markdown/components) | ✅ Direct support | ⚠️ Limited / interpolation only | ⚠️ ICU syntax, not real JSX |
| AI-powered Translation | ✅ Yes, supports multiple AI providers. Usable using your own API keys. Considers the context of your application and content scope | ❌ No | ❌ No |
| Visual Editor | ✅ Yes, local Visual Editor + optional CMS; can externalize codebase content; embeddable | ❌ No / available via external localization platforms | ❌ No / available via external localization platforms |
| Localized Routing | ✅ Yes, supports localized paths out of the box (works with Next.js & Vite) | ⚠️ No built-in, requires plugins (e.g. next-i18next) or custom router config | ❌ No, only message formatting, routing must be manual |
| Dynamic Route Generation | ✅ Yes | ⚠️ Plugin/ecosystem or manual setup | ❌ Not provided |
| Pluralization | ✅ Enumeration-based patterns | ✅ Configurable (plugins like i18next-icu) | ✅ (ICU) |
| Formatting (dates, numbers, currencies) | ✅ Optimized formatters (Intl under the hood) | ⚠️ Via plugins or custom Intl usage | ✅ ICU formatters |
| Content Format | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js |
| ICU support | ⚠️ WIP | ⚠️ Via plugin (i18next-icu) | ✅ Yes |
| SEO Helpers (hreflang, sitemap) | ✅ Built-in tools: helpers for sitemap, robots.txt, metadata | ⚠️ Community plugins/manual | ❌ Not core |
| Ecosystem / Community | ⚠️ Smaller but growing fast and reactive | ✅ Largest and mature | ✅ Large |
| Server-side Rendering & Server Components | ✅ Yes, streamlined for SSR / React Server Components | ⚠️ Supported at page level but need to pass t-functions on component tree for children server components | ❌ Not supported, need to pass t-functions on component tree for children server components |
| Tree-shaking (load only used content) | ✅ Yes, per-component at build time via Babel/SWC plugins | ⚠️ Usually loads all (can be improved with namespaces/code-splitting) | ⚠️ Usually loads all |
| Lazy loading | ✅ Yes, per-locale / per-dictionary | ✅ Yes (e.g., backends/namespaces on demand) | ✅ Yes (split locale bundles) |
| Purge unused content | ✅ Yes, per-dictionary at build time | ❌ No, only via manual namespace segmentation | ❌ No, all declared messages are bundled |
| Management of Large Projects | ✅ Encourages modular, suited for design-system | ⚠️ Needs good file discipline | ⚠️ Central catalogs can get large |
Deep-dive comparison
1) Architecture & scalability
- react-intl / react-i18next: Most setups maintain centralized locale folders per language, sometimes split by namespaces (i18next). Works well early on but becomes a shared surface area as apps grow.
- Intlayer: Promotes per-component (or per-feature) dictionaries co-located with the UI they serve. This keeps ownership clear, eases duplication/migration of components, and reduces cross-team key churn. Unused content is easier to identify and remove.
Why it matters: Modular content mirrors modular UI. Large React codebases stay cleaner when translations live with the components they belong to.
2) TypeScript & safety
- react-intl: Solid typings, but no automatic key typing; you enforce safety patterns yourself.
- react-i18next: Strong typings for hooks; strict key typing typically requires extra configuration or generators.
- Intlayer: Auto-generates strict types from your content. IDE autocomplete and compile-time errors catch typos and missing keys before runtime.
Why it matters: Shifting failures left (to build/CI) reduces production issues and speeds developer feedback loops.
3) Missing translation handling
- react-intl / react-i18next: Default to runtime fallbacks (key echo or default locale). You can add linting/plugins, but it’s not guaranteed at build.
- Intlayer: Build-time detection with warnings or errors when required locales/keys are missing.
Why it matters: CI failing on missing strings prevents “mystery English” leaking into non-English UIs.
4) Rich content & formatting
- react-intl: Excellent ICU support for plurals, selects, dates/numbers, and message composition. JSX can be used, but the mental model stays message-centric.
- react-i18next: Flexible interpolation and <Trans> for embedding elements/components; ICU available via plugin.
- Intlayer: Content files can include rich nodes (JSX/Markdown/components) and metadata. Formatting uses Intl under the hood; plural patterns are ergonomic.
Why it matters: Complex UI texts (links, bold pieces, inline components) are easier when the library embraces React nodes cleanly.
5) Performance & loading behavior
- react-intl / react-i18next: You typically manage catalog splitting and lazy loading manually (namespaces/dynamic imports). Effective but requires discipline.
- Intlayer: Tree-shakes unused dictionaries and supports per-dictionary/per-locale lazy loading out-of-the-box.
Why it matters: Smaller bundles and fewer unused strings improve startup and navigation performance.
6) DX, tooling & maintenance
- react-intl / react-i18next: Broad community ecosystem; for editorial workflows you usually adopt external localization platforms.
- Intlayer: Ships a free Visual Editor and optional CMS (keep content in Git or externalize it). Also offers a VSCode extension for content authoring and AI-assisted translation using your own provider keys.
Why it matters: Built-in tooling shortens the loop between developers and content authors - less glue code, fewer vendor dependencies.
When to choose which?
- Choose react-intl if you want ICU-first message formatting with a straightforward, standards-aligned API and your team is comfortable maintaining catalogs and safety checks manually.
- Choose react-i18next if you need the breadth of i18next’s ecosystem (detectors, backends, ICU plugin, integrations) and accept more configuration to gain flexibility.
- Choose Intlayer if you value component-scoped content, strict TypeScript, build-time guarantees, tree-shaking, and batteries-included editorial tooling - especially for large, modular React apps, design-systems, etc.
Interoperability with react-intl and react-i18next
intlayer can also help to manage your react-intl and react-i18next namespaces.
Using intlayer, you can declare your content in the format of your favorite i18n library, and intlayer will generate your namespaces in the location of your choice (example: /messages/{{locale}}/{{namespace}}.json).
Refer to dictionaryOutput and i18nextResourcesDir options for more details.
GitHub STARs
GitHub stars are a strong indicator of a project's popularity, community trust, and long-term relevance. While not a direct measure of technical quality, they reflect how many developers find the project useful, follow its progress, and are likely to adopt it. For estimating the value of a project, stars help compare traction across alternatives and provide insights into ecosystem growth.
Conclusion
All three libraries localize React effectively. The differentiator is how much infrastructure you must build to reach a safe, scalable setup:
- With Intlayer, modular content, strict TS typing, build-time safety, tree-shaken bundles, and editorial tooling are defaults - not chores.
- If your team prizes maintainability and speed in multi-locale, component-driven React apps, Intlayer offers the most complete developer and content workflow today.
Refer to 'Why Intlayer?' doc for more details.