# i18next v26.4.2 - Product: i18next (https://whatsnew.fyi/product/i18next) - Vendor: i18next - Date: 2026-09-03 - Version: v26.4.2 - Original notes: https://github.com/i18next/i18next/releases/tag/v26.4.2 - Permalink: https://whatsnew.fyi/product/i18next/releases/v26.4.2 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Special replacement sequences like $&, $`, $', and $$ inside nested values now stay literal instead of being interpreted as replacement patterns - fix: `$&`, `` $` ``, `$'` and `$$` inside a nested value (`$t(key)`) now stay literal. `nest()` handed the resolved value straight to `String.replace` as the replacement argument, so those sequences were read as replacement patterns: `$&` re-inserted the `$t(...)` match, `` $` `` / `$'` inserted the text before / after it, and `$$` collapsed to `$`. Through `t()` the `$&` case was worse than a wrong string: the nested lookup resets the shared nesting regexp, so the re-inserted `$t(...)` was matched again on every pass and `t()` never returned — also under the default `escapeValue: true` when the value arrives via a variable forwarded through nesting options (`$t(key, { "name": "{{name}}" })` with a name containing `$&`). The value is now `$`-escaped at the `String.replace` call, the same guard `interpolate()` already has, and a non-string value returned by a formatter in the nesting chain (`$t(key, myFormat)`) is stringified before that. Nested values are still not HTML-escaped (#854). Thanks @mahirhir ([#2447](https://github.com/i18next/i18next/pull/2447)).