npm / vue-i18n
vue-i18n
What changed in vue-i18n 11, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
3 breaking3 security2 new APIs and options1 performance2 behavior and defaults33 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initvue-i18n 1144 changes
Breaking changes 3
Locales named after Object.prototype properties are now ignored to address a security issue.
Node.js 20 is no longer supported.
Message compiler errors are displayed more strictly.
Security 3
escapeParameter now escapes both list and named values to address a security issue.
sanitizeTranslatedHtml neutralizes the srcdoc attribute to address a security issue.
Hardens javascript URL sanitization to improve security.
New APIs and options 2
Adds support for isolated scope.
Support for escape sequences was added.
Performance 1
Avoids translation timeline measurement when devtools are not enabled.
Behavior and default changes 2
Array message references are no longer retained.
Adds compatibility with Vue3 vapor mode for v11.
Fixes and other changes 33
Warnings for missing formats name the datetime or number format that was not found.
Flat keys under a message AST are retained, including keys that end with cacheKey or pass through a prop key or cacheKey.
Component i18n options are copied instead of being mutated with internal values.
Unknown linked modifiers are ignored.
A message that cannot be compiled is returned as is in both development and production.
Object.prototype properties are not read as named values.
Node.js ESM can load the Node.js builds so SSR works in production.
Locale, key, plural rule, and key-value message lookups read only own properties, avoiding inherited properties.
count and n are no longer written into the named values of a plural call.
te() looks up messages in the same way as t().
tm() looks up messages in the same way as t().
The core context is synced when inheritLocale is enabled.
Locale chains are cached by fallback identity.
Avoids throwing on AST keys in the devtools groupId.
The locale chain cache is invalidated when the fallback changes, so locale resolution uses the updated fallback.
Fallback handling uses map keys and skips the default.
Tree-shaking is preserved when using Vapor.
The part option is respected when the format key is omitted in number and datetime formatting.
The formatter now passes component children as slots.
Prevents register* functions from being tree-shaken in intlify/core.
Linked messages now resolve keys containing dots.
$n overloads use DefineNumberFormat instead of DefineDateTimeFormat.
Suppressing automatic locale fallback with ! no longer breaks n/$n and d/$d formatting.
The incorrect $d type was fixed.
Key paths are now resolved correctly.
Modifiers no longer skip missing translation keys.
Using n() with undefined no longer throws errors.
Using $n() with undefined no longer throws errors.
Fixed te returning false when the key contains a do.
The v-t directive now rerenders when the locale switches.
Avoids a bundler warning related to getCurrentInstance compatibility.
Avoids bundler static analysis for namespace imports.
Adds support for Vue3 vapor mode in the options API.