Files
stack/packages/mosaic/framework/skills/pinia/references/advanced-hmr.md
T
fargo 1a822493ba format: apply repo prettier (3.8.1) to the folded skills tree
963 markdown files reformatted with the repository's pinned prettier so
pnpm format:check covers the folded tree like every other repo file.

The formatter's embedded-language pass also normalized code fences
(TS semicolons, closed HTML tags in examples, lowercased CSS hex colors,
one renumbered list that skipped an index). Alphanumeric token deltas vs
the fold commit were audited file-by-file; all are formatter-equivalent
markup normalizations plus the four sanitized skills.
2026-08-19 14:37:17 -05:00

1.4 KiB

name, description
name description
hot-module-replacement Enable HMR to preserve store state during development

Hot Module Replacement (HMR)

Pinia supports HMR to edit stores without page reload, preserving existing state.

Setup

Add this snippet after each store definition:

import { defineStore, acceptHMRUpdate } from 'pinia';

export const useAuth = defineStore('auth', {
  // store options...
});

if (import.meta.hot) {
  import.meta.hot.accept(acceptHMRUpdate(useAuth, import.meta.hot));
}

Setup Store Example

import { defineStore, acceptHMRUpdate } from 'pinia';

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0);
  const increment = () => count.value++;
  return { count, increment };
});

if (import.meta.hot) {
  import.meta.hot.accept(acceptHMRUpdate(useCounterStore, import.meta.hot));
}

Bundler Support

  • Vite: Officially supported via import.meta.hot
  • Webpack: Uses import.meta.webpackHot
  • Any bundler implementing the import.meta.hot spec should work

Nuxt

With @pinia/nuxt, acceptHMRUpdate is auto-imported but you still need to add the HMR snippet manually.

Benefits

  • Edit store logic without losing state
  • Add/remove state, actions, and getters on the fly
  • Faster development iteration