]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
fix(nuxt): unset global pinia after render (#2915)
authorMirko Jantschke <mirko.jantschke@gmx.de>
Mon, 3 Nov 2025 10:01:27 +0000 (11:01 +0100)
committerGitHub <noreply@github.com>
Mon, 3 Nov 2025 10:01:27 +0000 (11:01 +0100)
packages/nuxt/src/runtime/plugin.vue3.ts

index 1e101d066ab5d9a99793089f54c226c3217d0712..614910f10a01f4dfef5763b7fa408f72cf90c717 100644 (file)
@@ -1,7 +1,6 @@
 import { createPinia, setActivePinia } from 'pinia'
 import type { Pinia } from 'pinia'
-import { defineNuxtPlugin, type Plugin } from '#app'
-import { toRaw } from 'vue'
+import { defineNuxtPlugin, useNuxtApp, type Plugin } from '#app'
 
 const plugin: Plugin<{ pinia: Pinia }> = defineNuxtPlugin({
   name: 'pinia',
@@ -10,9 +9,7 @@ const plugin: Plugin<{ pinia: Pinia }> = defineNuxtPlugin({
     nuxtApp.vueApp.use(pinia)
     setActivePinia(pinia)
 
-    if (import.meta.server) {
-      nuxtApp.payload.pinia = toRaw(pinia.state.value)
-    } else if (nuxtApp.payload && nuxtApp.payload.pinia) {
+    if (nuxtApp.payload && nuxtApp.payload.pinia) {
       pinia.state.value = nuxtApp.payload.pinia as any
     }
 
@@ -23,6 +20,13 @@ const plugin: Plugin<{ pinia: Pinia }> = defineNuxtPlugin({
       },
     }
   },
+  hooks: {
+    'app:rendered'() {
+      const nuxtApp = useNuxtApp()
+      nuxtApp.payload.pinia = (nuxtApp.$pinia as Pinia).state.value
+      setActivePinia(undefined)
+    },
+  },
 })
 
 export default plugin