Skip to content

perf: reuse stable SVG sibling order - #268

Draft
tannerlinsley wants to merge 1 commit into
mainfrom
taren/reconcile-same-order
Draft

tannerlinsley wants to merge 1 commit into
mainfrom
taren/reconcile-same-order

Conversation

@tannerlinsley

Copy link
Copy Markdown
Member

Dense SVG updates rebuild sibling identity maps even when every child keeps the same position. This adds a guarded same-order path for non-animated, element-only siblings with unique keys. Reorders, duplicate keys, text and animation retain the existing fallback.

The isolated 1.5.0 React fixture with 10,000 circles measured 7.0-10.8% lower synchronous update time over four reversed-order rounds, with identical final output. This excludes paint and is not a competitor comparison. Repeated lifecycle memory and animation differential controls passed. Current-repository performance refresh remains before landing.

Validation on b236dae:

  • 59 reconciliation and React tests pass, TypeScript passes, diff checks pass.
  • Baseline bundle policy passes. Candidate fails the exact locked sizes and seven absolute ceilings below. No budgets were changed.
  • Security review: internal traversal only, no dependencies, execution hooks, public API or trust-boundary changes.

Owner decision needed before landing: approve these exact size increases for the measured benefit, decline, or defer. Recommendation: approve the bounded exception, subject to remaining compatibility, current-source performance and normal CI/review gates.

Locked bundle Minified before -> after (bytes) Gzip before -> after (bytes)
DOM host 83289 -> 83673 29241 -> 29364
React adapter 85614 -> 85998 30180 -> 30293
React line 109273 -> 109657 39541 -> 39657
React compact line 91771 -> 92155 32435 -> 32558
Absolute gzip ceiling Existing limit (bytes) Candidate (bytes)
React line + Canvas 46846 46959
React compact line 32437 32558
Motion SVG 23301 23410
Stats 59140 59246
Direct D3 quadtree + DOM 40941 41051
Direct D3 Delaunay + DOM 46330 46439
React Stats 60236 60348

Approval would authorize updating only these exact locked rows and ceilings after remaining gates pass. It would not waive CI, review, correctness, performance or other budgets. This is a draft awaiting that decision, not a shipping-ready claim.

@coderabbitai

coderabbitai Bot commented Nov 13, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@changeset-bot

changeset-bot Bot commented Nov 13, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 394594d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 12 packages
Name Type
@tanstack/charts Patch
@tanstack/alpine-charts Patch
@tanstack/angular-charts Patch
@tanstack/lit-charts Patch
@tanstack/octane-charts Patch
@tanstack/preact-charts Patch
@tanstack/react-charts Patch
@tanstack/react-native-charts Patch
@tanstack/solid-charts Patch
@tanstack/svelte-charts Patch
@tanstack/vue-charts Patch
@tanstack/charts-scales Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@nx-cloud

nx-cloud Bot commented Nov 13, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 394594d

Command Status Duration Result
nx run charts-workspace:benchmark-check ❌ Failed 56s View ↗

💡 With Ultracache enabled, Nx Cloud learns each task's file inputs in CI and uses them on later runs. Turn on Ultracache in workspace settings ↗ · Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-11-13 16:13:26 UTC

This branch has not been deployed

No deployments
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