vue3-best-practices

114installs2stars

Install to Claude Code

npx -y skills add https://github.com/eva813/vue3-skills --skill vue3-best-practices

Description

vue3 best practices

SKILL.md

---
name: vue3-best-practices
description: Vue 3 performance optimization and best practices guidelines for modern frontend applications. This skill should be used when writing, reviewing, or refactoring Vue 3 code to ensure optimal performance patterns, proper Composition API usage, and modern development practices. Triggers on tasks involving Vue 3 components, Composition API, reactivity, state management, or performance optimization.
license: MIT
metadata:
  author: Eva
  version: "1.0.0"
---

# Vue 3 Best Practices

Comprehensive performance optimization and development guide for Vue 3 applications. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.

## When to Apply

Reference these guidelines when:
- Writing new Vue 3 components or composables
- Implementing reactive data and computed properties
- Reviewing code for performance issues
- Refactoring from Vue 2 to Vue 3
- Optimizing bundle size or load times
- Working with state management (Pinia/Vuex)
- Implementing async operations in components

## Rule Categories by Priority

| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Reactivity Performance | CRITICAL | `reactivity-` |
| 2 | Component Optimization | CRITICAL | `component-` |
| 3 | Bundle Size & Loading | HIGH | `bundle-` |
| 4 | Composition API | MEDIUM-HIGH | `composition-` |
| 5 | Template Performance | MEDIUM | `template-` |
| 6 | State Management | MEDIUM | `state-` |
| 7 | Lifecycle Optimization | LOW-MEDIUM | `lifecycle-` |
| 8 | Advanced Patterns | LOW | `advanced-` |

## Quick Reference

### 1. Reactivity Performance (CRITICAL)

- `reactivity-ref-vs-reactive` - Use ref for primitives, reactive for objects
- `reactivity-shallow-ref` - Use shallowRef for large immutable objects
- `reactivity-computed-caching` - Leverage computed property caching
- `reactivity-watch-vs-watcheffect` - Choose appropriate watcher
- `reactivity-unref-performance` - Minimize unref calls in hot paths
- `reactivity-readonly-immutable` - Use readonly for immutable data

### 2. Component Optimization (CRITICAL)

- `component-async-components` - Use defineAsyncComponent for heavy components
- `component-functional` - Use functional components for simple presentational logic
- `component-keep-alive` - Cache expensive components with keep-alive
- `component-lazy-hydration` - Implement lazy hydration for non-critical components
- `component-prop-validation` - Use efficient prop validation
- `component-emit-performance` - Optimize event emissions

### 3. Bundle Size & Loading (HIGH)

- `bundle-tree-shaking` - Structure imports for optimal tree-shaking
- `bundle-dynamic-imports` - Use dynamic imports for code splitting
- `bundle-plugin-imports` - Use unplugin-auto-import for better DX
- `bundle-lodash-imports` - Import lodash functions individually
- `bundle-moment-alternatives` - Use day.js instead of moment.js
- `bundle-icons-optimization` - Optimize icon imports and usage

### 4. Composition API (MEDIUM-HIGH)

- `composition-script-setup` - Prefer <script setup> for better performance
- `composition-composables-reuse` - Extract reusable logic into composables
- `composition-provide-inject` - Use provide/inject for dependency injection
- `composition-expose-selectively` - Expose only necessary properties
- `composition-reactive-transform` - Use reactive transform where appropriate
- `composition-auto-import` - Configure auto-imports for better DX

### 5. Template Performance (MEDIUM)

- `template-v-once` - Use v-once for static content
- `template-v-memo` - Use v-memo for expensive list rendering
- `template-key-optimization` - Optimize v-for keys for performance
- `template-conditional-rendering` - Choose v-if vs v-show appropriately
- `template-slot-performance` - Optimize slot usage and scoped slots
- `template-directive-optimization` - Create efficient custom directives

### 6. State Management (MEDIUM)

- `state-pinia-optimization` - Optimize Pinia store structure
- `state-store-composition` - Use store composition patterns
- `state-persistence` - Implement efficient state persistence
- `state-normalization` - Normalize complex state structures
- `state-subscription` - Optimize state subscriptions
- `state-devtools` - Configure devtools for debugging

### 7. Lifecycle Optimization (LOW-MEDIUM)

- `lifecycle-cleanup` - Properly cleanup resources in onUnmounted
- `lifecycle-async-setup` - Handle async operations in setup
- `lifecycle-watchers-cleanup` - Clean up watchers and effects
- `lifecycle-dom-access` - Access DOM safely in lifecycle hooks
- `lifecycle-ssr-considerations` - Handle SSR lifecycle differences

### 8. Advanced Patterns (LOW)

- `advanced-teleport-usage` - Use Teleport for portal patterns
- `advanced-suspense-async` - Implement Suspense with async components
- `advanced-custom-renderer` - Create custom renderers when needed
- `advanced-compiler-macros` - Use compiler macros effectively
- `advanced-plugin-development` - Develop efficient Vue plugins

## Framework Integration

### Vite Integration
- Utilize Vite's fast HMR and build optimizations
- Configure proper chunk splitting strategies
- Use Vite plugins for Vue-specific optimizations

### TypeScript Integration
- Leverage Vue 3's improved TypeScript support
- Use proper type definitions for better DX
- Configure TypeScript for optimal build performance

### Testing Integration
- Use Vue Test Utils with Composition API
- Implement efficient component testing strategies
- Optimize test performance and reliability

## How to Use

Read individual rule files for detailed explanations and code examples:

```
rules/reactivity-ref-vs-reactive.md
rules/component-async-components.md
rules/composition-script-setup.md
```

Each rule file contains:
- Brief explanation of why it matters
- Incorrect Vue 3 code example with explanation
- Correct Vue 3 code example with explanation
- Performance impact and measurements
- Additional context and Vue 3-specific considerations

## Migration from Vue 2

Special considerations for migrating from Vue 2:
- Composition API vs Options API patterns
- Reactivity system changes and optimizations
- Component definition and registration updates
- Event handling and lifecycle changes

## Performance Monitoring

Tools and techniques for monitoring Vue 3 performance:
- Vue DevTools integration
- Performance profiling with browser tools
- Bundle analysis and optimization
- Runtime performance monitoring