Skip to content

Revert "fix(server-renderer): cleanup component effect scopes after SSR render"#14674

Merged
edison1105 merged 1 commit intomainfrom
revert-14548-saeed-nezafat/fix/ssr-scope-cleanup
Apr 3, 2026
Merged

Revert "fix(server-renderer): cleanup component effect scopes after SSR render"#14674
edison1105 merged 1 commit intomainfrom
revert-14548-saeed-nezafat/fix/ssr-scope-cleanup

Conversation

@edison1105
Copy link
Copy Markdown
Member

@edison1105 edison1105 commented Apr 3, 2026

Close #14669
Reverts #14548

Summary by CodeRabbit

  • Refactor

    • Simplified server-side rendering cleanup mechanism; component scope tracking has been removed from the SSR context.
    • Adjusted watcher cleanup handling for server-rendered applications.
  • Breaking Changes

    • Removed cleanupContext() export from the server-renderer package.
  • Tests

    • Updated server-rendering test assertions to reflect changes in watcher behavior during SSR.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 52a2c46c-8b77-4237-81e9-d2883ad886ad

📥 Commits

Reviewing files that changed from the base of the PR and between fa23116 and 8b04f8a.

📒 Files selected for processing (5)
  • packages/server-renderer/__tests__/render.spec.ts
  • packages/server-renderer/__tests__/ssrWatch.spec.ts
  • packages/server-renderer/src/render.ts
  • packages/server-renderer/src/renderToStream.ts
  • packages/server-renderer/src/renderToString.ts

📝 Walkthrough

Walkthrough

This PR removes the instance-scope tracking and blanket cleanup mechanism from Vue's SSR system, replacing it with targeted watcher handle cleanup. It reverts the __instanceScopes property, eliminates the exported cleanupContext() function, and updates tests to reflect the new behavior where watcher handles are cleaned up explicitly rather than via scope disposal.

Changes

Cohort / File(s) Summary
Test Updates
packages/server-renderer/__tests__/render.spec.ts
Removed three SSR test cases verifying onScopeDispose cleanup and related effect-scope behavior, along with associated imports.
Test Assertions
packages/server-renderer/__tests__/ssrWatch.spec.ts
Updated test assertions to expect ctx.__watcherHandles!.length to be 1 instead of 0 for watch and watchEffect with flush: 'sync' scenarios.
Type and API Removal
packages/server-renderer/src/render.ts
Removed __instanceScopes property from SSRContext type, eliminated instance scope registration logic in renderComponentVNode, and deleted the exported cleanupContext() function entirely.
Cleanup Refactoring
packages/server-renderer/src/renderToStream.ts, packages/server-renderer/src/renderToString.ts
Removed cleanupContext imports and replaced blanket scope cleanup with explicit iteration and unwatching of context.__watcherHandles handles after rendering completes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

ready to merge, scope: ssr, :hammer: p3-minor-bug

Suggested reviewers

  • yyx990803

Poem

🐰 A scope cleanup tale so fine,
Instance tracking? Not this time!
Watchers tidied, SSR bright,
No dispose calls in the night, 🌙
Server-side now serves just right!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-14548-saeed-nezafat/fix/ssr-scope-cleanup

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 3, 2026

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 105 kB 39.8 kB 35.8 kB
vue.global.prod.js 164 kB 59.8 kB 53.2 kB

Usages

Name Size Gzip Brotli
createApp (CAPI only) 48.3 kB 18.8 kB 17.2 kB
createApp 56.5 kB 21.8 kB 19.9 kB
createSSRApp 60.7 kB 23.6 kB 21.5 kB
defineCustomElement 62.6 kB 23.8 kB 21.7 kB
overall 71 kB 27.2 kB 24.7 kB

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Apr 3, 2026

Open in StackBlitz

@vue/compiler-core

pnpm add https://pkg.pr.new/@vue/compiler-core@14674
npm i https://pkg.pr.new/@vue/compiler-core@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/compiler-dom

pnpm add https://pkg.pr.new/@vue/compiler-dom@14674
npm i https://pkg.pr.new/@vue/compiler-dom@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/compiler-sfc

pnpm add https://pkg.pr.new/@vue/compiler-sfc@14674
npm i https://pkg.pr.new/@vue/compiler-sfc@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/compiler-ssr

pnpm add https://pkg.pr.new/@vue/compiler-ssr@14674
npm i https://pkg.pr.new/@vue/compiler-ssr@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/reactivity

pnpm add https://pkg.pr.new/@vue/reactivity@14674
npm i https://pkg.pr.new/@vue/reactivity@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/runtime-core

pnpm add https://pkg.pr.new/@vue/runtime-core@14674
npm i https://pkg.pr.new/@vue/runtime-core@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/runtime-dom

pnpm add https://pkg.pr.new/@vue/runtime-dom@14674
npm i https://pkg.pr.new/@vue/runtime-dom@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/server-renderer

pnpm add https://pkg.pr.new/@vue/server-renderer@14674
npm i https://pkg.pr.new/@vue/server-renderer@14674
yarn add https://pkg.pr.new/@vue/[email protected]

@vue/shared

pnpm add https://pkg.pr.new/@vue/shared@14674
npm i https://pkg.pr.new/@vue/shared@14674
yarn add https://pkg.pr.new/@vue/[email protected]

vue

pnpm add https://pkg.pr.new/vue@14674
npm i https://pkg.pr.new/vue@14674
yarn add https://pkg.pr.new/[email protected]

@vue/compat

pnpm add https://pkg.pr.new/@vue/compat@14674
npm i https://pkg.pr.new/@vue/compat@14674
yarn add https://pkg.pr.new/@vue/[email protected]

commit: 8b04f8a

@edison1105 edison1105 merged commit 219d83b into main Apr 3, 2026
15 of 16 checks passed
@edison1105 edison1105 deleted the revert-14548-saeed-nezafat/fix/ssr-scope-cleanup branch April 3, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

onScopeDispose is triggered on SSR

1 participant