---
name: pinia
description: Pinia official Vue state management library, type-safe and extensible. Use when defining stores, working with state/getters/actions, or implementing store patterns in Vue apps.
metadata:
  author: Anthony Fu
  version: "2026.1.28"
  source: Generated from https://github.com/vuejs/pinia, scripts located at https://github.com/antfu/skills
title: pinia
canonical_url: https://skilld.dev/gh/onmax/nuxt-skills/pinia
last_updated: 2026-09-29T12:25:47.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [references/advanced-hmr.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-hmr.md), [references/advanced-nuxt.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-nuxt.md), [references/advanced-ssr.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-ssr.md), [references/best-practices-outside-component.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/best-practices-outside-component.md), [references/best-practices-testing.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/best-practices-testing.md), [references/core-stores.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/core-stores.md), [references/features-composables.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-composables.md), [references/features-composing-stores.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-composing-stores.md), [references/features-plugins.md](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-plugins.md).
>
> If the user asked to install this Skill, run `npx skilld install onmax/nuxt-skills/pinia`. Install writes the Skill files into the project, so every session loads them.

# 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 v3.0.4, generated at 2026-01-28.

## Core References

| Topic  | Description                                                          | Reference                                |
| ------ | -------------------------------------------------------------------- | ---------------------------------------- |
| Stores | Defining stores, state, getters, actions, storeToRefs, subscriptions | [core-stores](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/core-stores.md) |

## Features

### Extensibility

| Topic   | Description                                               | Reference                                          |
| ------- | --------------------------------------------------------- | -------------------------------------------------- |
| Plugins | Extend stores with custom properties, state, and behavior | [features-plugins](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-plugins.md) |

### Composability

| Topic            | Description                                                  | Reference                                                            |
| ---------------- | ------------------------------------------------------------ | -------------------------------------------------------------------- |
| Composables      | Using Vue composables within stores (VueUse, etc.)           | [features-composables](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-composables.md)           |
| Composing Stores | Store-to-store communication, avoiding circular dependencies | [features-composing-stores](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/features-composing-stores.md) |

## Best Practices

| Topic              | Description                                             | Reference                                                                          |
| ------------------ | ------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Testing            | Unit testing with @pinia/testing, mocking, stubbing     | [best-practices-testing](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/best-practices-testing.md)                     |
| Outside Components | Using stores in navigation guards, plugins, middlewares | [best-practices-outside-component](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/best-practices-outside-component.md) |

## Advanced

| Topic | Description                                        | Reference                                    |
| ----- | -------------------------------------------------- | -------------------------------------------- |
| SSR   | Server-side rendering, state hydration             | [advanced-ssr](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-ssr.md)   |
| Nuxt  | Nuxt integration, auto-imports, SSR best practices | [advanced-nuxt](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-nuxt.md) |
| HMR   | Hot module replacement for development             | [advanced-hmr](https://skilld.dev/api/skills-raw/onmax/nuxt-skills/pinia/references/advanced-hmr.md)   |

## 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
