# What changed in vue-i18n

> 44 changes in vue-i18n 11 from its official release notes, upgrade guides and advisories: 3 breaking, 3 security, 2 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/vue-i18n/

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

## vue-i18n 11

### Breaking changes

- Locales named after Object.prototype properties are now ignored to address a security issue. (11.4.14) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.14)
- Node.js 20 is no longer supported. (11.4.3) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.3)
- Message compiler errors are displayed more strictly. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)

### Security

- escapeParameter now escapes both list and named values to address a security issue. (11.4.14) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.14)
- sanitizeTranslatedHtml neutralizes the srcdoc attribute to address a security issue. (11.4.14) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.14)
- Hardens javascript URL sanitization to improve security. (11.4.4) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.4)

### New APIs and options

- Adds support for isolated scope. (11.4.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.0)
- Support for escape sequences was added. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)

### Performance

- Avoids translation timeline measurement when devtools are not enabled. (11.3.2) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.2)

### Behavior and default changes

- Array message references are no longer retained. (11.4.9) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.9)
- Adds compatibility with Vue3 vapor mode for v11. (11.2.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.2.0)

### Fixes and other changes

- Warnings for missing formats name the datetime or number format that was not found. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Flat keys under a message AST are retained, including keys that end with cacheKey or pass through a prop key or cacheKey. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Component i18n options are copied instead of being mutated with internal values. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Unknown linked modifiers are ignored. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- A message that cannot be compiled is returned as is in both development and production. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Object.prototype properties are not read as named values. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Node.js ESM can load the Node.js builds so SSR works in production. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- Locale, key, plural rule, and key-value message lookups read only own properties, avoiding inherited properties. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- count and n are no longer written into the named values of a plural call. (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- te() looks up messages in the same way as t(). (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- tm() looks up messages in the same way as t(). (11.4.15) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.15)
- The core context is synced when inheritLocale is enabled. (11.4.12) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.12)
- Locale chains are cached by fallback identity. (11.4.12) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.12)
- Avoids throwing on AST keys in the devtools groupId. (11.4.10) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.10)
- The locale chain cache is invalidated when the fallback changes, so locale resolution uses the updated fallback. (11.4.9) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.9)
- Fallback handling uses map keys and skips the default. (11.4.9) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.9)
- Tree-shaking is preserved when using Vapor. (11.4.9) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.9)
- The part option is respected when the format key is omitted in number and datetime formatting. (11.4.5) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.5)
- The formatter now passes component children as slots. (11.4.1) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.2), [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.4.1)
- Prevents register* functions from being tree-shaken in intlify/core. (11.3.2) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.2)
- Linked messages now resolve keys containing dots. (11.3.1) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.1)
- $n overloads use DefineNumberFormat instead of DefineDateTimeFormat. (11.3.1) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.1)
- Suppressing automatic locale fallback with ! no longer breaks n/$n and d/$d formatting. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- The incorrect $d type was fixed. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Key paths are now resolved correctly. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Modifiers no longer skip missing translation keys. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Using n() with undefined no longer throws errors. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Using $n() with undefined no longer throws errors. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Fixed te returning false when the key contains a do. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- The v-t directive now rerenders when the locale switches. (11.3.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.3.0)
- Avoids a bundler warning related to getCurrentInstance compatibility. (11.2.3) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.2.3)
- Avoids bundler static analysis for namespace imports. (11.2.2) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.2.2)
- Adds support for Vue3 vapor mode in the options API. (11.2.0) — [release notes](https://github.com/intlify/vue-i18n/releases/tag/v11.2.0)
