Skip to content

onScopeDispose is triggered on SSR #14669

@jenjen75

Description

@jenjen75

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions