Vue · VUE0007

Do not destructure setup props

Classic setup(props) props lose reactivity when destructured directly.
VUE0007vite-doctor/vuereactivityerrorSuggestion

Run this rule

pnpm vite-doctor . --framework vue --rules vue/reactivity/no-setup-props-destructure

Why it matters

The props proxy is reactive, but local destructured bindings are snapshots.

Use props.foo, toRefs(props), or <script setup> reactive props destructuring.

Example

Preserve prop reactivity

Before

<script setup lang="ts">
const { count } = defineProps<{ count: number }>()
</script>

After

<script setup lang="ts">
const props = defineProps<{ count: number }>()
const count = toRef(props, 'count')
</script>
Copyright © 2026