Vue version
3.5.31
Link to minimal reproduction
https://play.vuejs.org/#__SSR__eNp9VE1v00AQ/SvDXnCl1AYVLlVS0UIlyqFUTQUHFlFjT5It611rd51GivLfeWs7rlM+DonjnXk7b968yVac13W6bliciqkvnKoDeQ5NTTo3y5kUwUtxJo2qausCbanx/N7ixec/NdOOFs5WJEWaFcOpFNJIU1jjI6DyS6TNDoHJkTTTrKuH2/ESuKp1HhhvRNPV67NtD91NM7y1p8rUTaD1cWVL1uCGuBSUITjNRngxAWuUX6hl+uCtQWvbiJciclSa3ec6KNCT4pTaSIzlWtvHT+1ZcA1P9ufFiotffzl/8Jt4JsWNY89ujbaHWMjdkkMXvpxf8wa/hyDYN1Gk/wRv2VvdRI5d2kVjStAe5bVsr9qhKLO885ebwMbvm4pEY+auzZcC843a/6v1J7on6ZsWJ80OKj6NFDpCxcEEjhcTsmZe2Jo/KI+kkRVQrHMAb9r0zgiHvplRckSzs46C5kBBVegPIOrz4+xnsVAixUdGt/TVOl2+kALWoWfFk9Ft3QUWnLVdAlx2KT2O6FGZ0j6mhebc3aGqbULSVm/jO3zHp8MOOLO3L+RobcWbHC7jNEQ1sozCSnlyjfGkDF3DldAJ1HDO2CJ4wqWj1Skcw6Dz+S1W7g+5cNuXhl/6Hnfs2JTsMFs6v7kilIlqei4JVmBH94BlB6ns7sfFusM7Ow/tJeNyz3GxfI+LzIaN7v8ZYribSY7o7KCNBJ9WscNyCTKPUqhgklWo9DCb8WRiANAoOJRdq8Bpv7Otuj0h1N8TehdzHnxW62apzHHPbGi45IUy8Fi8YtQuMAduRFre6PY5pCcJ5ozpTUCwqnJTTiD43LuLRukSlhj4713ROakj4k/pG7gkR9/3m9N19AMSx4VELyfp2/Tkldj9Bk0U22Q=
Steps to reproduce
Create a composable that have onScopeDispose
Execute in SSR
What is expected?
onScopeDispose isnt triggered, that normal because there is no reactivity in SSR, so no need to trigger cleanup hook.
onScopeDispose never trigger.
What is actually happening?
onScopeDispose is triggered in 3.5.31
the behaviour changes since this version, it's a breaking change.
System Info
System:
OS: Linux 6.17 Ubuntu 25.10 25.10 (Questing Quokka)
CPU: (12) x64 AMD Ryzen 5 7500F 6-Core Processor
Memory: 20.43 GB / 30.43 GB
Container: Yes
Shell: 5.2.37 - /bin/bash
Binaries:
Node: 24.13.0 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/node
npm: 11.6.2 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/npm
pnpm: 9.4.0 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/pnpm
Browsers:
Chrome: 145.0.7632.116
Firefox: 149.0
Firefox Developer Edition: 149.0
npmPackages:
vue: 3.5.31 => 3.5.31
Any additional comments?
The playground contain all files to reproduce, but its not visible on browser.
copy files in your IDE then run vite-node example.ts to really execute.
Vue version
3.5.31
Link to minimal reproduction
https://play.vuejs.org/#__SSR__eNp9VE1v00AQ/SvDXnCl1AYVLlVS0UIlyqFUTQUHFlFjT5It611rd51GivLfeWs7rlM+DonjnXk7b968yVac13W6bliciqkvnKoDeQ5NTTo3y5kUwUtxJo2qausCbanx/N7ixec/NdOOFs5WJEWaFcOpFNJIU1jjI6DyS6TNDoHJkTTTrKuH2/ESuKp1HhhvRNPV67NtD91NM7y1p8rUTaD1cWVL1uCGuBSUITjNRngxAWuUX6hl+uCtQWvbiJciclSa3ec6KNCT4pTaSIzlWtvHT+1ZcA1P9ufFiotffzl/8Jt4JsWNY89ujbaHWMjdkkMXvpxf8wa/hyDYN1Gk/wRv2VvdRI5d2kVjStAe5bVsr9qhKLO885ebwMbvm4pEY+auzZcC843a/6v1J7on6ZsWJ80OKj6NFDpCxcEEjhcTsmZe2Jo/KI+kkRVQrHMAb9r0zgiHvplRckSzs46C5kBBVegPIOrz4+xnsVAixUdGt/TVOl2+kALWoWfFk9Ft3QUWnLVdAlx2KT2O6FGZ0j6mhebc3aGqbULSVm/jO3zHp8MOOLO3L+RobcWbHC7jNEQ1sozCSnlyjfGkDF3DldAJ1HDO2CJ4wqWj1Skcw6Dz+S1W7g+5cNuXhl/6Hnfs2JTsMFs6v7kilIlqei4JVmBH94BlB6ns7sfFusM7Ow/tJeNyz3GxfI+LzIaN7v8ZYribSY7o7KCNBJ9WscNyCTKPUqhgklWo9DCb8WRiANAoOJRdq8Bpv7Otuj0h1N8TehdzHnxW62apzHHPbGi45IUy8Fi8YtQuMAduRFre6PY5pCcJ5ozpTUCwqnJTTiD43LuLRukSlhj4713ROakj4k/pG7gkR9/3m9N19AMSx4VELyfp2/Tkldj9Bk0U22Q=
Steps to reproduce
Create a composable that have onScopeDispose
Execute in SSR
What is expected?
onScopeDispose isnt triggered, that normal because there is no reactivity in SSR, so no need to trigger cleanup hook.
onScopeDispose never trigger.
What is actually happening?
onScopeDispose is triggered in 3.5.31
the behaviour changes since this version, it's a breaking change.
System Info
System: OS: Linux 6.17 Ubuntu 25.10 25.10 (Questing Quokka) CPU: (12) x64 AMD Ryzen 5 7500F 6-Core Processor Memory: 20.43 GB / 30.43 GB Container: Yes Shell: 5.2.37 - /bin/bash Binaries: Node: 24.13.0 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/node npm: 11.6.2 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/npm pnpm: 9.4.0 - /home/jean-mi/.nvm/versions/node/v24.13.0/bin/pnpm Browsers: Chrome: 145.0.7632.116 Firefox: 149.0 Firefox Developer Edition: 149.0 npmPackages: vue: 3.5.31 => 3.5.31Any additional comments?
The playground contain all files to reproduce, but its not visible on browser.
copy files in your IDE then run vite-node example.ts to really execute.