Skip to content

perf(docs): coalesce changeset render refreshes - #7478

Closed
DR-Univer wants to merge 1 commit into
devfrom
feat/coalesce-doc-changeset-rendering
Closed

perf(docs): coalesce changeset render refreshes#7478
DR-Univer wants to merge 1 commit into
devfrom
feat/coalesce-doc-changeset-rendering

Conversation

@DR-Univer

Copy link
Copy Markdown
Member

Summary

  • coalesce synchronous fromChangeset Doc mutations into one layout/render refresh
  • defer the Doc drawing refresh until the coalesced layout has completed
  • preserve immediate refresh behavior for normal editing and zoom operations
  • avoid command, mutation, Facade, menu, demo, asset, and documentation changes

Context

Snapshot replay already marks mutation execution with IExecutionOptions.fromChangeset. The Doc render consumers ignored that boundary and recalculated layout and drawings for every replayed mutation. A local 1,464-mutation document took about 51.0 seconds to open. With this change, three runs completed in 2.93–3.27 seconds (3.09-second median).

Architecture

This stays at the render-consumer boundary in docs-ui and docs-drawing-ui. It does not move replay semantics into CommandService, duplicate model behavior, or add UI-specific Facade APIs. No SDK dependency versions change, and the change does not rely on unpublished SDK behavior.

Validation

  • pnpm exec eslint packages/docs-ui/src/controllers/render-controllers/doc.render-controller.ts packages/docs-ui/src/controllers/__tests__/doc-render-controller.spec.ts packages/docs-drawing-ui/src/controllers/render-controllers/doc-drawing-transform-update.controller.ts (0 errors; 2 pre-existing function-length warnings)
  • pnpm exec vitest run packages/docs-ui/src/controllers/__tests__/doc-render-controller.spec.ts (8 passed)
  • pnpm --filter @univerjs/docs-ui typecheck
  • pnpm --filter @univerjs/docs-drawing-ui typecheck
  • pnpm --filter @univerjs/docs-ui build
  • pnpm --filter @univerjs/docs-drawing-ui build

Pull Request Checklist

  • No related issue.
  • Naming convention is followed.
  • A focused regression test covers synchronous changeset coalescing.
  • No breaking changes are introduced.

@DR-Univer

Copy link
Copy Markdown
Member Author

Consolidated into #7477 so the document replay batching and dense Sheet rendering optimizations ship in one OSS PR paired with dream-num/univer-pro#5476.

@DR-Univer DR-Univer closed this Aug 11, 2026
@jikkai
jikkai deleted the feat/coalesce-doc-changeset-rendering branch August 11, 2026 10:42
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.

1 participant