Vigia

Atualizar react-i18next de 17.x para 18.x

Comparação da API pública de react-i18next 17.1.13 e 18.0.0, calculada automaticamente a partir dos tipos TypeScript. Uma assinatura alterada é uma possível mudança incompatível, não uma certeza.

Resumo

Caminhos de importação removidos0
Exports removidos0
Assinaturas alteradas5
Membros de classes ou interfaces removidos0
Membros de classes ou interfaces alterados0
Novas descontinuações1
Mudanças de requisitos (engines, dependências peer)3
Novos exports1

Exports removidos

Nenhuma detectada.

Assinaturas alteradas

exportAntesDepois
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; }

Membros de classes ou interfaces removidos

Nenhuma detectada.

Membros de classes ou interfaces alterados

Nenhuma detectada.

Novas descontinuações

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

Mudanças de requisitos (engines, dependências peer)

AntesDepois
engines.node—>=22
peerDependencies.react>= 16.8.0>= 18.0.0
peerDependencies.i18next>= 26.2.0>= 27.0.0
Novos exports (1)
importexportkind
react-i18nextReactOptionsvariable

Changelog entre estas versões

Texto publicado pelos autores do pacote, exibido como está.

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`,

Dê estes dados ao seu agente de IA

Vigia é um servidor MCP gratuito: seu agente de programação verifica versões, mudanças incompatíveis e vulnerabilidades antes de escrever código. Sem cadastro, sem chave de API.

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

Adicionar ao CursorAdicionar ao VS Code★ Estrela no GitHub

Qualquer outro cliente MCP
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Skill para agentes (SKILL.md): diz ao agente quando usar o Vigia · GitHub Action para pull requests

Perguntas frequentes

Quais são as mudanças incompatíveis ao atualizar react-i18next de 17 para 18?

Entre react-i18next 17.1.13 e 18.0.0, o Vigia encontrou 0 exports removidos, 5 assinaturas alteradas e 0 membros de classes ou interfaces removidos ou alterados.

O que foi descontinuado em react-i18next 18?

1 exports ou membros foram marcados como descontinuados em react-i18next 18.0.0.

Para agentes

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