Deft
Ask AI

Search

Search skills, authors and topics

antfu / skills

pinia

Pinia state management best practices for type-safe Vue stores, getters, and actions.

Install

npx skills add https://github.com/antfu/skills --skill pinia
metadata
author: Anthony Fu version: "2026.9.25" source: Generated from https://github.com/vuejs/pinia, scripts located at https://github.com/antfu/skills

Pinia

Pinia is the official state management library for Vue, designed to be intuitive and type-safe. It supports both Options API and Composition API styles, with first-class TypeScript support and devtools integration.

The skill is based on Pinia v4.0.3, generated at 2026-09-25.

Core References

TopicDescriptionReference
StoresDefining stores, state, getters, actions, storeToRefs, subscriptionscore-stores [blocked]

Features

Extensibility

TopicDescriptionReference
PluginsExtend stores with custom properties, state, and behaviorfeatures-plugins [blocked]

Composability

TopicDescriptionReference
ComposablesUsing Vue composables within stores (VueUse, etc.)features-composables [blocked]
Composing StoresStore-to-store communication, avoiding circular dependenciesfeatures-composing-stores [blocked]

Best Practices

TopicDescriptionReference
TestingUnit testing with @pinia/testing, mocking, stubbingbest-practices-testing [blocked]
Outside ComponentsUsing stores in navigation guards, plugins, middlewaresbest-practices-outside-component [blocked]

Advanced

TopicDescriptionReference
SSRServer-side rendering, state hydrationadvanced-ssr [blocked]
NuxtNuxt integration, auto-imports, SSR best practicesadvanced-nuxt [blocked]
HMRHot module replacement for developmentadvanced-hmr [blocked]

Key Recommendations

  • Prefer Setup Stores for complex logic, composables, and watchers
  • Use storeToRefs() when destructuring state/getters to preserve reactivity
  • Actions can be destructured directly - they're bound to the store
  • Call stores inside functions not at module scope, especially for SSR
  • Add HMR support to each store for better development experience
  • Use @pinia/testing for component tests with mocked stores