Skip to content

Releases: vuejs/language-tools

v3.3.9

Choose a tag to compare

@KazariEX KazariEX released this 31 Jul 07:20
51617b9

language-core

  • feat: check unused generic type parameters (#6137) - Thanks to @KazariEX!

language-service

  • fix: preserve trailing modifiers when completing in the middle of a directive (#6133) - Thanks to @lazerg!
  • fix: only replace current directive modifier on completion - Thanks to @KazariEX!
  • fix: preserve current modifier when filtering completion duplicates - Thanks to @KazariEX!

component-meta

workspace

  • feat: migrate build and tests to typescript-native-bridge (#6129)

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.8

Choose a tag to compare

@KazariEX KazariEX released this 22 Jul 15:54
876b027

language-core

workspace

  • chore: upgrade to TypeScript 7 and support @typescript/typescript6 (#6123) - Thanks to @WaldemarEnns!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.7

Choose a tag to compare

@KazariEX KazariEX released this 08 Jul 03:44
f6cc297

language-core

  • fix: wrap single expression event handlers to avoid ASI after return (#6115) - Thanks to @KazariEX!

typescript-plugin

  • fix: filter const globals from template completions

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.6

Choose a tag to compare

@KazariEX KazariEX released this 30 Jun 14:47
4893ec6

language-core

  • fix: make generic component internal context inference type-safe across .d.ts boundary (#6104) - Thanks to @Holiden!
  • fix: do not treat non-trivial property accesses as compound - Thanks to @KazariEX!
  • fix: treat semicolon-terminated expressions as compound - Thanks to @KazariEX!
  • fix: preserve return types for compound event handlers - Thanks to @KazariEX!
  • fix: use WeakMap to cache inline TS ASTs - Thanks to @KazariEX!
  • fix: match upstream CSS v-bind parsing behavior - Thanks to @KazariEX!
  • fix: include setup bindings as potential component names (#6111) - Thanks to @KazariEX!
  • perf: reduce boundary code feature allocations - Thanks to @KazariEX!
  • refactor: centralize code features and deprecate allCodeFeatures - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.5

Choose a tag to compare

@KazariEX KazariEX released this 13 Jun 06:22
2fe255c

language-core

  • fix: include event modifiers in duplicate listener checks (#6097) - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.4

Choose a tag to compare

@KazariEX KazariEX released this 08 Jun 03:51
043a77b

language-core

  • fix: only exclude already-set props from inherited attrs when checkRequiredFallthroughAttributes is enabled (#6088) - Thanks to @KazariEX!
  • fix: camelize slot props regardless of htmlAttributes option (#6089) - Thanks to @KazariEX!
  • fix: detect duplicate event listeners across name formats (#6094) - Thanks to @whysopaul!

language-service

  • fix: respect var hoisting for destructured props hints (#6092) - Thanks to @KazariEX!

typescript-plugin

  • fix: do not treat class and style as a boolean property (#6081) - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.3

Choose a tag to compare

@KazariEX KazariEX released this 30 May 10:01
5c41b5f

vscode

  • fix: prevent grammar scopes leakage in capitalized tags (#6073) - Thanks to @KazariEX!
  • fix: preserve TS auto imports behavior in Vue files (#6072) - Thanks to @KazariEX!

workspace

  • fix: read PR title from env in auto-version workflow to prevent injection (#6074) - Thanks to @arpitjain099!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.2

Choose a tag to compare

@KazariEX KazariEX released this 25 May 14:35
7a00047

language-core

  • feat: preserve literal types for inline v-for sources (#6067) - Thanks to @kkesidis!
  • fix: align v-bind shorthand identifier skipping with interpolation - Thanks to @KazariEX!

vscode

  • feat: transform tsserver content (#6062) - Thanks to @KazariEX!
  • fix: do not mark trailing slash in capitalized self-closing tags as invalid (#6065) - Thanks to @suisanka!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.1

Choose a tag to compare

@KazariEX KazariEX released this 19 May 14:47
9109bf3

language-core

  • fix: avoid extraneous children error for conditional slots (#6056) - Thanks to @KazariEX!

language-service

  • refactor: replace scanner-based missing props hints detection with AST traversal - Thanks to @KazariEX!

typescript-plugin

  • fix: get component prop details from symbols - Thanks to @KazariEX!
  • fix: skip unchecked JS identifiers in component props (#6055) - Thanks to @KazariEX!

vscode

  • fix: resolve typescript plugin path from resolved server path (#6058) - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.0

Choose a tag to compare

@KazariEX KazariEX released this 18 May 11:40
1088dce

Features

Refined Autocomplete for Component Props

Previously, we inferred props used for autocomplete from the component itself's type, which did not work well with components whose props need to be inferred dynamically, such as generics or discriminated unions.

Now, we have improved this feature to better align with TS behavior. See the following example:

<script lang="ts" setup>
  defineProps<
    | { type: "foo"; foo: string }
    | { type: "bar"; bar: string }
  >();
</script>

<template>
  <Self type="foo" :| />
  <!--              ^ [foo, ...] -->
  <Self type="bar" :| />
  <!--              ^ [bar, ...] -->
</template>

When triggering completions at the two positions above, we will now get the props that are actually available in each corresponding case.

(PR: #5709)

Check Required Fallthrough Attributes

Consider the following structure:

<!-- basic.vue -->
<script lang="ts" setup>
  defineProps<{
    foo: string;
    bar: string;
  }>();
</script>
<!-- comp.vue -->
<script lang="ts" setup>
  import Basic from "./basic.vue";
</script>

<template>
  <Basic />
</template>

When the fallthroughAttributes option is enabled on Comp, Comp inherits all props from Basic, allowing us to get prop completions for Basic when using Comp.

By default, however, the props inherited from Basic are all optional. This means we cannot enforce passing those required props when using Comp. At the same time, even if the required props from Basic are passed to Comp, Basic will still report missing prop errors.

After enabling the new checkRequiredFallthroughAttributes option on Comp, Comp will inherit Basic's props exactly as they are, and the missing prop errors on Basic inside Comp will disappear. This is because doing so is equivalent to promising that these required props should be passed when using Comp. Additionally, if some of the props required by Basic have already been passed directly to Basic, those props will be excluded from the inherited props.

(PR: #6049)

Bug Fixes

  • In subprojects using project references, importing Vue files from another project will no longer trigger TS6307 errors (PR: #6048)
  • When the js/ts.tsserver.experimental.enableProjectDiagnostics option is enabled, Vue files in large projects will no longer trigger diagnostics in an infinite loop (PR: #6051)

Changelog

Please refer to CHANGELOG.md for details.

❤️ Thanks to Our Sponsors

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development