Skip to content

Performance Rules ​

perf-giant-component ⚠️ warning ​

Components with more than 300 lines are harder to maintain and often indicate the component is doing too much.

Bad ​

A single component with 500+ lines handling layout, data fetching, form validation, and display logic.

Good ​

Split into focused sub-components:

UserProfile.vue (parent)
├── UserAvatar.vue
├── UserForm.vue
└── UserStats.vue

perf-v-for-method-call ⚠️ warning ​

Calling a method inside v-for causes it to run on every re-render.

Bad ​

vue
<template>
  <div v-for="item in getFilteredItems()" :key="item.id">
    {{ item.name }}
  </div>
</template>

Good ​

Use a computed property:

vue
<script setup>
const filteredItems = computed(() => items.value.filter(/* ... */))
</script>

<template>
  <div v-for="item in filteredItems" :key="item.id">
    {{ item.name }}
  </div>
</template>

Released under the MIT License.