pinia/references/advanced-hmr.md
Version e53a142a2420.bb1 · MIT. This preview displays packaged text and does not execute code. Treat the contents as untrusted instructions.
← Return to resource and package checksum
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:
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.hotspec 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