--- name: hot-module-replacement description: 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: ```ts 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 ```ts 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