Vigia

Upgrade von react-i18next 17.x auf 18.x

Vergleich der öffentlichen API von react-i18next 17.1.13 und 18.0.0, automatisch aus den TypeScript-Typen berechnet. Eine geänderte Signatur ist ein möglicher Breaking Change, keine Gewissheit.

Zusammenfassung

Entfernte Importpfade0
Entfernte Exporte0
Geänderte Signaturen5
Entfernte Member von Klassen oder Interfaces0
Geänderte Member von Klassen oder Interfaces0
Neu als veraltet markiert1
Geänderte Anforderungen (engines, Peer-Abhängigkeiten)3
Neue Exporte1

Entfernte Exporte

Keine gefunden.

Geänderte Signaturen

exportVorherNachher
react-i18next · useSSR(initialI18nStore: Resource, initialLanguage: string): void(initialI18nStore: Resource, initialLanguage: string, props?: { i18n?: any; } | undefined): void
react-i18next · ErrorCode"NO_I18NEXT_INSTANCE" | "NO_LANGUAGES" | "DEPRECATED_OPTION" | "TRANS_NULL_VALUE" | "TRANS_INVALID_OBJ" | "TRANS_INVALID_VAR" | "TRANS_INVALID_COMPONENTS" | "USE_T_BEFORE_READY" | "SUSPENDED_WHILE_LOADING""NO_I18NEXT_INSTANCE" | "NO_LANGUAGES" | "DEPRECATED_OPTION" | "TRANS_NULL_VALUE" | "TRANS_INVALID_OBJ" | "TRANS_INVALID_VAR" | "TRANS_INVALID_COMPONENTS" | "USE_T_BEFORE_READY" | "SUSPENDED_WHILE_LOADING" | "I18N_NOT_INITIALIZED" | "ICU_TRANS_RENDER_ERROR" | "GLOBAL_INSTANCE_ON_SERVER"
react-i18next · I18nContextReact.Context<{ i18n: i18n; }>React.Context<{ i18n: i18n; defaultNS?: string | string[] | undefined; } | undefined>
react-i18next · useTranslation<const Ns extends FlatNamespace | $Tuple<FlatNamespace> | undefined = undefined, const KPrefix extends KeyPrefix<FallbackNs<Ns>> = undefined>(ns?: Ns | undefined, options?: UseTranslationOptions<KPrefix> | undefined): UseTranslationResponse<FallbackNs<Ns>, KPrefix>UseTranslationSelector | UseTranslationLegacy
react-i18next · UseTranslationOptions{ i18n?: any; useSuspense?: boolean | undefined; keyPrefix?: KPrefix | undefined; bindI18n?: string | false | undefined; nsMode?: "fallback" | "default" | undefined; lng?: string | undefined; }{ i18n?: any; useSuspense?: boolean | undefined; keyPrefix?: KPrefix | undefined; bindI18n?: string | false | undefined; bindI18nStore?: string | false | undefined; nsMode?: "fallback" | "default" | undefined; lng?: string | undefined; }

Entfernte Member von Klassen oder Interfaces

Keine gefunden.

Geänderte Member von Klassen oder Interfaces

Keine gefunden.

Neu als veraltet markiert

export@deprecated
react-i18next · TransSelectorProps.shouldUnescapeignored: Trans always decodes HTML entities

Geänderte Anforderungen (engines, Peer-Abhängigkeiten)

VorherNachher
engines.node—>=22
peerDependencies.react>= 16.8.0>= 18.0.0
peerDependencies.i18next>= 26.2.0>= 27.0.0
Neue Exporte (1)
importexportkind
react-i18nextReactOptionsvariable

Changelog zwischen diesen Versionen

Text der Paketautoren, unverändert angezeigt.

18.0.0
Released together with i18next 27. The migration guide lists every change with what to do: https://react.i18next.com/latest/migrating-v17-to-v18

### Breaking changes

- requires i18next 27 (peer `>= 27.0.0`) and React 18 or later (peer `>= 18.0.0`). React 16 and 17 apps stay on react-i18next 17: on i18next 27, use react-i18next 17.1.13 or later (it brings the types of the `react` init options), or 18. `useSyncExternalStore` comes from React itself, so `use-sync-external-store` is no longer a dependency.
- `Trans` output no longer depends on `interpolation.escapeValue`: it always decodes HTML entities after parsing, as `IcuTrans` does, in text and in attribute values, both with `react.unescape` (attribute values used the built-in decoder before). With i18next's default `escapeValue: true`, a value `Tom & Jerry` rendered as `Tom &amp; Jerry` and a date `17/12/2025` as `17&#x2F;12&#x2F;2025`; both now render as written, and so do entities in the translation itself (`&amp;`, `&lt;`, `&nbsp;`, ...). Values still render as text, never as markup (since 17.1.10). The `shouldUnescape` prop and `react.transDefaultProps.shouldUnescape` are ignored and warn (`DEPRECATED_OPTION`, in development and with `debug: true`); remove them. Snapshot tests that contain entities inside `Trans` output need an update ([#1903](https://github.com/i18next/react-i18next/issues/1903), [#1893](https://github.com/i18next/react-i18next/issues/1893)).
- `Trans` and `IcuTrans` re-render on language change by themselves: they subscribe to the `react.bindI18n` (default `languageChanged`) and `react.bindI18nStore` events, like `useTranslation`. Before, they only updated when a parent re-rendered ([#1710](https://github.com/i18next/react-i18next/issues/1710)). They still neither load translations nor suspend; with a `t` prop, that `t` still decides the language. `TransWithoutContext` and `IcuTransWithoutContext` stay hook-free.
- the `react` options of an instance stay on that instance. `initReactI18next` copied them into module-wide defaults, so a second instance without `react` options inherited, for example, the first one's `useSuspense: false`. Set them on every instance, or call `setDefaults()` once.
- the `i18n` returned by `useTranslation` (and passed by `withTranslation` and `Translation`) forwards reads and writes to the instance. It was a copy taken when the language changed, so after `await i18n.changeLanguage('de')` the copy still said `en`, and properties set on it never reached the instance. It is still a new object whenever the language changes, for dependency arrays and the React Compiler. Because the old object now reads the current language too, a check like `prevProps.i18n.language !== this.props.i18n.language` (or the language of a `usePrevious(i18n)`) no longer sees a change: compare the objects (`prevProps.i18n !== this.props.i18n`) or keep the previous language yourself.
- `useSSR` and `withSSR` call i18next's `hydrate()` instead of writing `resourceStore.data`,

Gib deinem KI-Agenten diese Fakten

Vigia ist ein kostenloser MCP-Server: Dein Coding-Agent prüft Versionen, Breaking Changes und Sicherheitslücken, bevor er Code schreibt. Ohne Anmeldung, ohne API-Schlüssel.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Zu Cursor hinzufügenZu VS Code hinzufügen★ Stern auf GitHub

Jeder andere MCP-Client
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Agent-Skill (SKILL.md): sagt dem Agenten, wann er Vigia nutzen soll · GitHub Action für Pull Requests

Häufige Fragen

Welche Breaking Changes gibt es beim Upgrade von react-i18next 17 auf 18?

Zwischen react-i18next 17.1.13 und 18.0.0 hat Vigia 0 entfernte Exporte, 5 geänderte Signaturen und 0 entfernte oder geänderte Member von Klassen oder Interfaces gefunden.

Was wurde in react-i18next 18 als veraltet markiert?

1 Exporte oder Member sind in react-i18next 18.0.0 neu als veraltet markiert.

Für Agenten

GET https://vigia.coredls.cloud/v1/packages/npm/react-i18next/upgrade?from=17.1.13&to=18.0.0