PluginBench
Rule

vue

via PatrickJS/awesome-cursorrules

Vue.js best practices for modern applications using Composition API, Pinia, and TypeScript.

What is vue?

Comprehensive guide for building Vue.js applications with modern patterns including Composition API, state management with Pinia, TypeScript integration, and performance optimization. Use this rule when developing Vue components to ensure consistent architecture, proper type safety, and adherence to Vue ecosystem best practices.

  • Structure components using Composition API with TypeScript and proper prop/emit declarations
  • Manage application state with Pinia stores and composables for reusable logic
  • Optimize performance through lazy loading, computed properties, and proper v-show/v-if usage
  • Implement Vue Router with navigation guards, route meta fields, and lazy-loaded routes
  • Build type-safe forms with v-model, validation, and error handling
  • Configure development and build tooling with Vite, code splitting, and environment variables

Applies to

File patterns this rule matches.

**/*.vue
**/*.ts
components/**/*
Rule definition (reference)

Source of truth, from the repository.

Vue.js Best Practices

Component Structure

  • Use Composition API over Options API
  • Keep components small and focused
  • Use proper TypeScript integration
  • Implement proper props validation
  • Use proper emit declarations
  • Keep template logic minimal

Composition API

  • Use proper ref and reactive
  • Implement proper lifecycle hooks
  • Use composables for reusable logic
  • Keep setup function clean
  • Use proper computed properties
  • Implement proper watchers

State Management

  • Use Pinia for state management
  • Keep stores modular
  • Use proper state composition
  • Implement proper actions
  • Use proper getters
  • Handle async state properly

Performance

  • Use proper component lazy loading
  • Implement proper caching
  • Use proper computed properties
  • Avoid unnecessary watchers
  • Use proper v-show vs v-if
  • Implement proper key management

Routing

  • Use Vue Router properly
  • Implement proper navigation guards
  • Use proper route meta fields
  • Handle route params properly
  • Implement proper lazy loading
  • Use proper navigation methods

Forms

  • Use v-model properly
  • Implement proper validation
  • Handle form submission properly
  • Show proper loading states
  • Use proper error handling
  • Implement proper form reset

TypeScript Integration

  • Use proper component type definitions
  • Implement proper prop types
  • Use proper emit declarations
  • Handle proper type inference
  • Use proper composable types
  • Implement proper store types

Testing

  • Write proper unit tests
  • Implement proper component tests
  • Use Vue Test Utils properly
  • Test composables properly
  • Implement proper mocking
  • Test async operations

Best Practices

  • Follow Vue style guide
  • Use proper naming conventions
  • Keep components organized
  • Implement proper error handling
  • Use proper event handling
  • Document complex logic

Build and Tooling

  • Use Vite for development
  • Configure proper build setup
  • Use proper environment variables
  • Implement proper code splitting
  • Use proper asset handling
  • Configure proper optimization

Related rules

Expert Vue 3 & Nuxt 3 development guidance with TypeScript, TailwindCSS, and composition API best practices.

**/*
41k
via PatrickJS/awesome-cursorrules

Vue 3 Composition API with TypeScript, Nuxt 3 conventions, and build optimization.

**/*
41k
via PatrickJS/awesome-cursorrules

Complete Vue 3 & Nuxt 3 setup with TypeScript, Pinia, and modern best practices.

**/*
41k
via PatrickJS/awesome-cursorrules

Vue 3 + TypeScript state management with Pinia: stores, Composition API, SSR, persistence, and testing.

**/*.ts +1
41k
via PatrickJS/awesome-cursorrules

Vue 3 Composition API best practices and project structure guidance.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert guidance for Svelte 5 and SvelteKit development with performance optimization focus.

**/*
41k
via PatrickJS/awesome-cursorrules