### 2.6.1

- fix: the `memoize` cache now compares the message, so a message that changed after its first use (`addResource`, `reloadResources`, a backend `reloadInterval`, HMR, next-i18next `reloadOnPrerender`) is compiled again instead of returning the old text. Before, this needed `bindI18nStore: 'added'` or `bindI18n: 'loaded'`, which still work.
- fix: values passed in a `replace` object (`t('key', { replace: { name } })`) are used, like i18next does for its own interpolation ([#69](https://github.com/i18next/i18next-icu/issues/69))
- fix: `addUserDefinedFormats()` clears the `memoize` cache, so messages compiled before use the new formats
- README: which `Intl` APIs intl-messageformat needs and how to polyfill them on React Native with Hermes and in runtimes without `Intl` ([#47](https://github.com/i18next/i18next-icu/issues/47), [#66](https://github.com/i18next/i18next-icu/issues/66))
- CI: run the tests against intl-messageformat 10.3.3, 10, 11, 12 and latest
- dev: `npm run lint` works again (`@babel/eslint-parser`), minimatch 3.1.5 (dev dependency only), removed the stale Coveralls config and badge

### 2.6.0

- warn in debug mode: with i18next `debug: true`, log a warning through the i18next logger (once per key) when a message can not be parsed or formatted (the default `parseErrorHandler` swallowed this silently, now with a hint for i18next `{{name}}` syntax), when `t` is called with `count` or `context` and suffix keys like `key_one` or `key_male` exist (i18next-icu does not look them up), when a message contains `$t(` nesting, when a key resolves to an object or array (`returnObjects`), and once per instance when `interpolation.escapeValue` is on, which the plugin does not apply (not logged with `escapeVariables: true`). Each warning links to [Using ICU or MF2](https://www.i18next.com/how-to/using-icu-or-mf2). Without `debug` nothing changes.

### 2.5.0

- the UMD/AMD/IIFE bundles (`dist/umd`, `dist/amd`, `dist/iife`, `i18nextICU.js`, `i18nextICU.min.js`) now include intl-messageformat 12, which ships ES2022 (class static blocks, `?.`, `??`). They need Chrome 94, Firefox 93 or Safari 16.4 or newer, and they get smaller (`i18nextICU.min.js` 13.8 kB -> 11.8 kB gzipped). The CommonJS and ES module builds are unchanged.
- dev toolchain: jest 30, TypeScript 6, `@rollup/plugin-terser`. Thanks [@outof-place](https://github.com/outof-place) ([#96](https://github.com/i18next/i18next-icu/pull/96))

### 2.4.5

- support intl-messageformat 12: widen the peer range to `>=10.3.3 <13.0.0`. Thanks [@outof-place](https://github.com/outof-place) ([#94](https://github.com/i18next/i18next-icu/pull/94))

### 2.4.4

- security: guard the shared `getLastOfPath` / `setPath` / `pushPath` walker against prototype pollution. The `memoize` cache key is `${lng}.${ns}.${key}` and only the trailing `key` is dot-escaped, so an unescaped `ns` segment named `__proto__` / `constructor` / `prototype` walked straight into `Object.prototype` (with the default `memoize: true`, `parse(..., 'en', '__proto__', 'greeting')` cached the formatter on `Object.prototype.greeting`). The walker now refuses unsafe segments and drops the write; legitimate dotted/nested keys and normal memoization are unaffected. Same walker / same fix as `i18next-fs-backend@2.6.6` ([GHSA-2933-q333-qg83](https://github.com/i18next/i18next-fs-backend/security/advisories/GHSA-2933-q333-qg83)) and `i18next-http-middleware@3.9.7` ([GHSA-f49m-vf83-692w](https://github.com/i18next/i18next-http-middleware/security/advisories/GHSA-f49m-vf83-692w)). Thanks [@greymoth-jp](https://github.com/greymoth-jp) ([#87](https://github.com/i18next/i18next-icu/pull/87))
- security (defence-in-depth): `defaults()` / `extend()` now iterate own keys via `Object.keys()` and skip `__proto__` / `constructor` / `prototype`, so a polluted or crafted options source can't seed `Object.prototype` during option merging

### 2.4.3

- ESM by default, trying to address [78](https://github.com/i18next/i18next-icu/issues/78)

### 2.4.2

- try to address: Can't resolve latest version of intl-messageformat [77](https://github.com/i18next/i18next-icu/issues/77)

### 2.4.1

- types for `escapeVariables` option [74](https://github.com/i18next/i18next-icu/issues/74)

### 2.4.0

- Fix HTML special characters truncation in variable values [73](https://github.com/i18next/i18next-icu/pull/73) by introducing `escapeVariables` option

### 2.3.0

- Adding function to parse language for ICU [63](https://github.com/i18next/i18next-icu/pull/63)

### 2.2.0

- update intl-messageformat dependency to address [62](https://github.com/i18next/i18next-icu/issues/62)

### 2.1.0

- update intl-messageformat dependency to address [57](https://github.com/i18next/i18next-icu/issues/57)

### 2.0.3

- Added ES build to general build task [37](https://github.com/i18next/i18next-icu/pull/37)

### 2.0.2

- i18next-icu incompatible with react-i18next [34](https://github.com/i18next/i18next-icu/pull/34)

### 2.0.0

- update all dependencies, and update rollup build [31](https://github.com/i18next/i18next-icu/pull/31) solves intl-messageformat is egregiously out of date [30](https://github.com/i18next/i18next-icu/issues/30)

### 1.4.2

- Fix/make error handling work [27](https://github.com/i18next/i18next-icu/pull/27)

### 1.4.1

- index.d.ts: add `parseErrorHandler` and tune types [25](https://github.com/i18next/i18next-icu/pull/25)

### 1.4.0

- Add error handling for failed parsing. Allow custom error handler [24](https://github.com/i18next/i18next-icu/pull/24)

### 1.3.1

- typescript: IDE autocomplete: annoying short locale data names [23](https://github.com/i18next/i18next-icu/pull/23)

### 1.3.0

- feat: Bind i18n and resource store events to clear the memoized cache [18](https://github.com/i18next/i18next-icu/pull/18)

### 1.2.1

- typescript: fix Broken typescript example [15](https://github.com/i18next/i18next-icu/pull/15)

### 1.2.0

- typescript: add typings [13](https://github.com/i18next/i18next-icu/pull/13)

### 1.1.2

- fixes passing in localeData as array [9](https://github.com/i18next/i18next-icu/issues/9)

### 1.0.1

- fixes memoize path for keySeparator false global replace [8](https://github.com/i18next/i18next-icu/pull/8)

### 1.0.0

- fixes memoize path for keySeparator false [7](https://github.com/i18next/i18next-icu/pull/7)

### 0.6.0

- rename formatters to formats and addFormatters to addUserDefinedFormats

### 0.5.0

- allow custom formatters like described [here](https://github.com/yahoo/intl-messageformat#user-defined-formats) - [5](https://github.com/i18next/i18next-icu/issues/5)

### 0.4.0

- with i18next >=v11.3.3 only memoize if successful lookup

### 0.3.0

- allow to pass in localeData in init options

### 0.2.0

- remove dependencies on lodash.get/.set
- add locale-data to import via `i18next.ICU.addLocaleData(fr);`

### 0.1.0

- initial version
