# What changed in react-i18next

> 185 changes in react-i18next 16 to 17 from its official release notes, upgrade guides and advisories: 15 breaking, 4 deprecations, 1 security, 60 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/react-i18next/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## react-i18next 17

### Breaking changes

- Explicit values now take precedence over interpolation.defaultVariables in IcuTrans and Trans, matching t(). (17.0.21) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17021)
- The minimum i18next peer dependency is now >=26.0.1, affecting compatible versions used with react-i18next. (17.0.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1701)
- With the new context API, callers using translate.getWrappedInstance must call instance.getWrappedInstance().getWrappedInstance() instead. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Changing language no longer triggers Suspense by default; adding languageChanging to bindI18n restores the previous behavior. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The I18n render prop was renamed to NamespacesConsumer, which controls which namespaces should be consumed. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Translate HOC overrides must be set under the child react option in i18next init rather than at the top level. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Removed the react-context ponyfill; applications using React below 16.3.0 must polyfill react.createContext themselves. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The TypeScript type for the Trans component's prop is stricter. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- HTML tags not included in transKeepBasicHtmlNodesFor are no longer replaced in translation strings. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans no longer adds a parent div by default; set react.defaultTransParent to configure a parent element. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Correctly preserves HTML tag names when children contain interpolations or mixed content; update translation files if you rely on auto-generated keys containing indexed tags. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Removed the option to set translateFuncName in the translate HOC. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Initial values are applied only in useSSR and withSSR on cloned i18next instances, not on serverside instances that are not clones. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translate HOC was renamed to withNamespaces, which controls which namespaces should be loaded. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### Deprecations

- The Babel macro is deprecated in favour of using IcuTrans directly; it continues to work on Babel 7 and is not removed. (17.0.21) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17021)
- A development-only warning logged once appears before useTranslation suspends while translations load, naming a <Suspense> boundary or react.useSuspense: false as fixes. (17.0.10) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17010)
- The Resources type definition is deprecated in favor of CustomTypeOptions. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### New APIs and options

- Adds an entry point with types for using IcuTrans in React Server Components without creating a React context on load. (17.0.21) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17021)
- A TypeScript option was introduced to support React 18 types for the Trans component. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- bindI18n, bindI18nStore, and useSuspense defaults can be overridden through useTranslation options or HOC props. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Configure bindI18n as false or as a string of events to control which i18next events trigger updates. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- bindI18nStore, alongside bindI18n and useSuspense, can be overridden through useTranslation options or HOC props. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added bindI18nStore event options so applications can listen to store changes. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Configure bindStore as false or as a string of events to control which store events trigger updates. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Interpolate component accepts a className. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- CustomTypeOptions was introduced for TypeScript configuration, and the Resources type definition was deprecated. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- nsSeparator was added to CustomTypeOptions. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- withTranslation accepts a forwardedRef prop from outside, independently of the withRef option. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translate wrapper exposes getWrappedInstance(). (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added hashTransKey for custom key generation when Trans has no key and the source value is not wanted as the key. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added I18n as a render-props alternative to the translate HOC. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translate HOC accepts an i18next instance via props, allowing developers to provide the instance directly. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added I18nContext and its provider and consumer for React's new context API. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The i18n instance and defaults can be set with i18next.use(reactI18nextModule), making I18nextProvider obsolete. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added I18nextProvider for passing an i18n instance through context. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- This marker allows Trans to create the correct missing string for dynamically rendered lists. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- I18nextProvider accepts initialI18nStore to support simpler server-side rendering. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- I18nextProvider accepts initialLanguage to support simpler server-side rendering. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- keyPrefix support was added to useTranslation and has type-safe support, including deep prefixes. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added nsMode: 'fallback' to use namespaces passed to the translate HOC as fallbacks. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added options.react.exposeNamespace to expose the namespace on data-i18next-options for editor consumption. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Interpolate component can use raw HTML. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added a Babel macro exporting Trans, Plural, and Select for using ICU-format components in JSX. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added react.defaultTransParent to configure a parent element for Trans, including for backwards-compatible wrapping. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added a configurable parent element for the Trans component. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Set react.useSuspense to false on i18next.init to avoid using Suspense. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added reportNS to I18NextProvider to report used namespaces. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Universal apps and server-side rendering are supported. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans supports an option to unescape HTML. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- An option lets developers change the name of the t function. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Trans component accepts a context prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Trans component accepts ns to override the namespace supplied by a render prop or HOC. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added tOptions to Trans to support ICU. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- TranslationProps includes the useSuspense option. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Plural component in macros has a values field. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added Trans for translating nested components, including interpolation, as one translatable string. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added i18next.options.react.transEmptyNodeValue to set a default fallback value for empty nodes and allow the i18next fallback flow. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added translate.setDefaults to override default translate HOC options, including translateFuncName. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added the Translation render prop for use with hooks. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translate HOC now passes down tReady so applications can show a placeholder while translations load instead of returning null. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- A custom unescape function can be added. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added the usePureComponent option. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- useSSR adds namespaces to the i18next initialization options. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- useSuspense can be enabled or disabled at hook or component level. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The hook accepts an i18n instance, allowing callers to wrap it with a useContext-enabled hook. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- UseTranslationOptions includes the useSuspense configuration property. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The wait option delays initial rendering until translations are loaded. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added a context-consuming HOC that adds i18n and t to component props without the extra options of withNamespaces. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The withTranslation HOC supports the keyPrefix option. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The HOC exposes the wrapped component as a WrappedComponent property. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translate wrapper exposes a WrappedComponent property. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### Performance

- The ESM package metadata now declares sideEffects: false, allowing bundlers to remove unused exports and reduce bundle size. (17.0.21) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17021)
- No longer unsubscribes and resubscribes i18n listeners on every render, reducing churn for frequently re-rendering mounted components. (17.0.17) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17017)
- Redundant re-rendering in I18nextProvider is avoided. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### Behavior and default changes

- IcuTrans and IcuTransWithoutContext now infer the literal i18nKey, so props that depend on the key are checked against that key rather than all namespace keys. (17.1.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1710)
- With i18next's parseInterpolation set to 'icu' or 'mf2', values on IcuTrans and IcuTransWithoutContext are typed from the message of i18nKey; other settings retain Record<string, any>. (17.1.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1710)
- When enabled, the default unescape now converts &nbsp; and &#160; to U+00A0, preserving no-break spacing in text. (17.0.18) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17018)
- The selector-form keyPrefix overload is now available when enableSelector is 'strict', so selector-based key prefixes no longer resolve to the legacy signature. (17.0.13) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17013)
- The Trans values prop now requires only interpolation variables for the specific i18nKey, rather than all variables in the namespace. (17.0.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1702)
- Namespace loading moves to did mount. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Non-React static properties are hoisted onto the wrapper. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Hooks bind reportNS to the i18n instance, making namespace reporting per request. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans supports named interpolation elements supplied as an object in the components prop, including self-closing tags. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans can interpolate self-closing tags supplied through the components prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans allows br, strong, and i tags in translations. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans parses before interpolating. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans uses count from the values object when supplied; otherwise it uses the prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The ICU Trans macro parses defaults as an alternative to children. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans allows p elements. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Interpolation values can be taken from content or from count and values props, and count is automatically replaced in the translation string. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Interpolated values no longer need extra pseudo tags in translation strings; existing strings with those tags continue to work. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans can be used without children and returns the translated string. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Translation now forwards the ready state. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Warnings for unmatched interpolation variables are conditional. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Translations are reloaded whenever the namespaces passed to useTranslation change. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- withTranslation uses forwardRef. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- withTranslation now forwards the ready state. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### Tooling

- TypeScript support for keyPrefix is type-safe, including deep key prefixes. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The context prop of Trans has TypeScript support. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

### Fixes and other changes

- With useSuspense enabled, the hook checks the store after starting a namespace load and suspends only if the namespace is still missing, avoiding fallback flashes with synchronous backends. (17.0.20) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17020)
- With an inline selector keyPrefix, the cached t now keeps its identity while the resolved prefix stays the same, avoiding repeated effects and memo recalculations. (17.0.19) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17019)
- The cached t is no longer reused when the namespace or i18n instance changes on a mounted component. (17.0.19) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17019)
- Selector i18nKey values targeting a secondary namespace now resolve like t() when Trans receives a t with its own namespace and no explicit ns prop. (17.0.16) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17016)
- Empty paired component tags preserve a single valid React-element child supplied through a named component map, component array, or indexed JSX children, matching behavior for multiple children and self-closing tags. (17.0.15) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17015)
- The i18n object returned by useTranslation now refreshes when resolvedLanguage or languages changes, so components no longer receive a stale snapshot. (17.0.14) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17014)
- When i18nKey is not provided, IcuTrans now uses defaultTranslation as the key, preventing key-less ICU macro nodes from rendering an empty string. (17.0.12) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17012)
- The parser used by Trans fixes handling of literal < in text, multiline/CRLF attribute values, comments containing >, doctypes, and quote-aware brackets. (17.0.11) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17011)
- The development-mode check is guarded so runtimes without a process global stay silent instead of throwing. (17.0.10) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17010)
- The missing-i18next-instance warnings for useTranslation and Trans now explain props/context alternatives and duplicate react-i18next copies; the Trans warning points to initReactI18next. (17.0.10) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#17010)
- The ns prop now accepts a single namespace from an array-typed Ns, allowing the described Trans usage to typecheck under TypeScript 7; the change also applies to TransSelectorProps and IcuTransWithoutContextProps. (17.0.9) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1709)
- The optional TypeScript peer dependency range now allows TypeScript 7, preventing an ERESOLVE peer conflict during npm install. (17.0.9) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1709)
- The Trans component now typechecks selector-function i18nKey values under enableSelector: 'strict'. (17.0.8) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1708)
- With multiple namespaces, selector calls using a secondary-namespace prefix now resolve correctly under the default nsMode; plain key lookups remain isolated to the primary namespace. (17.0.7) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1707)
- Indexed <N> placeholders nested inside a keep-tag are scoped to that tag’s original React children, correcting rendering while preserving the nodesToString format consumed by i18next-cli’s extractor. (17.0.6) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1706)
- Fixes child rendering when a kept HTML node wraps a non-keep React element. (17.0.5) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1705)
- Avoids the React warning that i18nIsDynamicList is not recognized on a DOM element. (17.0.4) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1704)
- Avoids passing an invalid prop to React.Fragment inside <Trans />. (17.0.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1703)
- Fixed cimode so it loads and becomes ready. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Passing i18n as a prop no longer triggers the required context type warning. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The provider supports passing defaultNS via a prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- I18nextProvider supports the defaultNS prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- useTranslation can replace the i18n instance in the provider. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Loaded namespaces are triggered only when the component is mounted. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Updating the ns prop on the I18n component now loads missing namespaces. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Support for nsMode values default and fallback was restored. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- You can pass ready when i18next is not initialized yet if initialStore is set. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Added and removed i18next resource events are handled. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans children types explicitly support objects. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The components prop accepts const components. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans takes the namespace from the supplied t function. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans supports basic HTML nodes when checking arrays. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans supports nested components rendered from list.map, and i18nIsDynamicList produces a correct missing string. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans handles misleading overloaded empty elements in components. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans ignores null children. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans supports uppercase elements. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Trans component correctly returns defaultValue. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The Trans component's TypeScript interface accepts React Native props. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The parent prop accepts ComponentType, and Trans accepts HTML props. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans accepts HTML props, and the parent prop type was fixed. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Trans correctly passes interpolation options supplied through the tOptions prop. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- TypeScript definitions now make children optional in TransProps. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Basic HTML node support works with self-closing Trans components. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The React 15.2 update eliminates the Unknown Prop Warning. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Language changes trigger Suspense by listening to languageChanging; remove it from bindI18n to avoid suspending during a language change. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The translation function t is reset when the namespace changes. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The ready flag is false when the i18n instance has not been initialized. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The ready parameter is included in the Translation component's TypeScript definition. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- The hook's return value can be destructured with object spread syntax. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)
- Only pass forwardedRef to children if options.withRef is false. (17.0.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1700)

## react-i18next 16

### Breaking changes

- The peer dependency requirement is now >= 25.10.9 to provide type exports used by TransSelector. (16.6.6) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1666)

### Security

- When a selector function cannot be resolved without an i18n instance, it returns an empty string instead of leaking the raw function reference. (16.5.8) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1658)

### Deprecations

- A warning is emitted when t is called before ready with useSuspense: false. (16.6.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1660)

### New APIs and options

- useTranslation accepts selector functions as keyPrefix with full type-safe key narrowing when enableSelector is enabled. (16.6.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1662)
- The i18nKey prop of <Trans> now accepts a SelectorKey. (16.6.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1661)
- Exports nodesToString with runtime and TypeScript typings to support i18next-cli. (16.5.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1651)
- Adds a configuration option to set default props for the Trans component, such as tOptions, shouldUnescape, and values. (16.5.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1650)
- The IcuTrans component is now exported. (16.1.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1611)
- Introduces the IcuTrans component. (16.1.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1610)

### Behavior and default changes

- The values prop now infers interpolation variables from the translation string when custom types are configured. (16.6.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1660)
- The count prop is optional and can be inferred from children. (16.4.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1640)

### Tooling

- TypeScript 6 is allowed as a peer dependency. (16.6.4) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1664)

### Fixes and other changes

- The selector keyPrefix overload no longer matches when keyPrefix is absent, fixing defaultNS: false with an explicit ns option. (16.6.5) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1665)
- Merged TransSelector overloads into a single signature so typeof Trans remains extendable. (16.6.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1663)
- Fixed `<Trans>` with `enableSelector: true` not supporting multiple selectors for fallbacks. (16.5.7) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1657)
- When init() hasn't been called before useSSR, it now logs a warning instead of throwing. (16.5.6) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1656)
- useSSR, getInitialProps and Translation no longer crash when no i18next instance is available; they log a clear warning instead. (16.5.5) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1655)
- Fixed overriding React component props not working. (16.5.4) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1654)
- Fixes handling of named tags with underscores in Trans. (16.5.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1653)
- Fixes type errors when you've declared a resources type. (16.5.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1652)
- Interpolated values in component props are unescaped before being passed to React, preventing double-escaped rendered output. (16.4.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1641)
- Fixes a runaway effect in useTranslation. (16.3.5) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1635)
- Avoids the "ref is not a prop" warning when a user ref is placed on an element inside <Trans>. (16.3.4) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1634)
- Improves useTranslation to fix "Maximum update depth exceeded" while still supporting the new react-compiler. (16.3.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1633)
- Avoids the “Uncaught TypeError: Cannot redefine property: __original” error. (16.3.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1632)
- Reverts a fix for inconsistent behavior: Trans sets defaultValue when the t call does not set the field. (16.3.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1631)
- Adds an i18n wrapper for compatibility with React Compiler and React.memo. (16.3.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1630)
- Fixes an issue where hyphened components break. (16.2.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1623)
- Fixes the Trans component breaking when its content includes a less-than sign. (16.2.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1622)
- Fixed a regression so bindI18nStore works correctly. (16.2.1) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1621)
- Attempts to address conditional calls to inner hooks that violate React's rules of hooks. (16.2.0) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1620)
- Fixes handling of spread props for inner components in Trans (icu). (16.1.6) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1616)
- Trans uses defaultValue from tOptions as a fallback when the t call does not set the field, making its behavior consistent with t. (16.1.5) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1615)
- Fixes detection of pre-transformation interpolation use, including number and date formatting. (16.1.4) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1614)
- Invalid identifiers are quoted in the props object. (16.1.3) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1613)
- Adds missing .js extensions to Icu imports. (16.1.2) — [release notes](https://github.com/i18next/react-i18next/blob/6300ae2e5860c00e34c8157ec4203c99204fefeb/CHANGELOG.md#1612)
