Translate React apps without touching components
No react-i18next setup, no translation keys, no component rewrites. Add the script tag to your HTML shell and Lingvit uses a MutationObserver to translate all content — including post-hydration updates and lazy-loaded routes.
What gets translated
- Initial server-rendered or static HTML
- Content after React hydration
- useEffect and state-driven updates
- React Router client-side navigation
- Lazy-loaded components and code-split routes
- Portals and modal content
- Error boundary fallback text
- Metadata via react-helmet or similar
Setup guide
Add the script to your HTML shell
In public/index.html (CRA), index.html (Vite), or your equivalent HTML entry point, paste the Lingvit script tag before </body>:
<!-- Add before </body> in your HTML shell --> <script src="https://cdn.lingvit.com/widget/v1/widget.bundle.js" async></script>The widget observes DOM changes automatically
Lingvit's MutationObserver watches for any DOM updates after hydration. No hook calls, no wrappers, no context providers needed.
Connect in the Lingvit dashboard
Create a project at app.lingvit.com, add your app URL, and select your target languages. The widget uses the project key from your script URL.