npm / vue-tsc
vue-tsc
What changed in vue-tsc 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
8 breaking1 security3 deprecations3 new APIs and options2 performance3 behavior and defaults34 tooling50 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initvue-tsc 3104 changes
Breaking changes 8
Stops component-meta from checking JavaScript Vue files as TypeScript.
Overrides the inherited plugin list instead of being deduplicated during resolution.
class and style are no longer treated as boolean properties.
Slot props are camelized regardless of the htmlAttributes option.
Plugin configs are now placed under ctx.config.
Prioritizes non-warning completion entries over warning entries.
Narrows component and directive types, affecting the types available when using them.
Removes the ComponentType helper.
Security 1
Improved handling of untrusted Vue files.
Deprecations 3
The allCodeFeatures API is deprecated as code features are centralized.
Deprecates the forceUseTs option.
Deprecates the noDeclarations option.
New APIs and options 3
Makes the VS Code welcome page configurable.
Language plugins can now be configured.
Adds tags to slot metadata.
Performance 2
Reduces focus mode overhead in the VS Code extension.
A subset of template node transforms was rewritten for performance.
Behavior and default changes 3
Already-set props are excluded from inherited attrs only when this option is enabled.
Document symbols use the default HTML data provider.
Object keys are inferred as strings when they do not extend string.
Tooling 34
Infers the first parameter type of a default factory for defineModel.
Supports calling template bindings without
.value.Generates full fragment props for type checking.
Different extension sets across project references are supported.
Checks unused generic type parameters.
Upgrade to TypeScript 7 and support @typescript/typescript6.
Support vapor directives in language-core.
Setup bindings are included as potential component names.
Hints for destructured props respect variable hoisting.
Duplicate event listeners are detected across name formats.
Preserves literal types for inline v-for sources, allowing their literal types to remain available to type checking.
Gets component prop details from symbols.
Skips unchecked JS identifiers.
Includes extraFileExtensions in the tsserver configure request payload.
Props completion follows TypeScript behavior, filters fallback global completions, and returns props only for component nodes.
Adds checks for required fallthrough attributes.
Navigation now works for kebab-case declarations in GlobalComponents.
SCSS @import navigation now supports TypeScript module resolution.
Uses a regex for TypeScript extension patching to support VS Code 1.110+.
Type annotation is now supported via generics.
Quick info is forwarded only for original results without tags.
Completion edits for boolean props strip
="".Avoids duplicate directive modifiers in completion.
Pre-maps the HTML to Pug offset attribute.
Quick info and suggestion diagnostics are forwarded only for setup bindings.
Corrects code features on v-bind shorthands of special attributes.
Shorthand props are shown only when no prefix has been typed.
Handles type imports in component auto-import.
Handles import type nodes in the definition proxy.
Adds tags to exposed metadata.
Renaming global components now includes end tag locations.
Supports markdown JSDoc for rich hover message descriptions.
Adds rich hover messages in the language service.
Adds support for the
<!-- @strictTemplates -->magic comment.
Fixes and other changes 50
Avoids calling registerHooks on buggy Node versions.
Setup macros are generated without static imports.
Reports duplicate CSS module names, including names that are not identifiers.
Checks directive bindings with short arity by padding directive hook signatures.
Prevents typedef JSDoc from leaking into emitted declaration files.
Continues reference span fix-up when files have no styles.
Corrects template mapping boundaries and eliminates unmapped diagnostics.
Prevents watch mode from crashing on incremental builds.
Preserves union props when using withDefaults.
Invalidates module resolution caches when files are deleted.
Invalidates casing detection after template changes.
Trailing whitespace after generic parameter commas is ignored, preventing it from affecting type analysis.
SFC blocks are no longer extracted across inline Markdown code.
The item type is resolved over generic sources, improving type inference for v-for items.
Preserves trailing and current directive modifiers when completing inside a directive and when filtering duplicates.
Single-expression event handlers are wrapped to avoid automatic semicolon insertion after return.
Const globals are filtered from template completions.
Event handler expressions are treated as compound more accurately, preserving return types.
Inference is made type-safe across the .d.ts boundary.
CSS v-bind parsing now matches upstream behavior.
Duplicate listener checks now include event modifiers and raw event parts.
Prevents grammar scopes from leaking in capitalized tags.
Preserves TypeScript auto imports behavior in Vue files.
Aligns identifier skipping for v-bind shorthand with interpolation.
Avoids reporting an extraneous children error for conditional slots.
Resolves the TypeScript plugin path from the resolved server path.
Completion edits strip
=""only for plain boolean props, and the default data provider is reset after using the Vue data provider.Re-supports html.customData for supplying custom HTML data.
Avoids infinite diagnostics on Vue files when project diagnostics is enabled.
Root-node collection now penetrates v-if branch fragments, improving single-root detection.
File rename edits are triggered when moving folders with Vue files.
Inline markdown syntax is no longer processed in semantic-aware segments.
Generates the $slots type correctly in templates when using defineSlots.
Avoids false positives when detecting destructured props on binding property names.
Infers only the readonly component of arrays in v-for.
Backtick attributes containing both quote types are handled.
The template is re-parsed when interpolation syntax breaks.
Using defineModel in lang="js" no longer breaks the AST.
Indentation for <style> and <script> tags is corrected.
Rename behavior is corrected for same-name shorthands in templates.
Strings are no longer used with yield*.
Provides accurate mapping for Pug shorthands.
Schema resolution is skipped correctly when option is false.
Array types are now inferred in v-for.
Finding references to CSS classes now includes the leading dot.
Filters irrelevant properties from exposed metadata.
Fixes a missing module error that occurs after a file rename.
Correctly resolves
<script src="">references.Aligns the v-for key type with Object.keys.
Reverts an overcorrection in v-for type inference, changing the types inferred for v-for expressions.