Skip to content

Improve comment composer layout and motion - #620

Draft
aidenybai wants to merge 7 commits into
mainfrom
aiden/chonky-comment-composer-e80b
Draft

aidenybai wants to merge 7 commits into
mainfrom
aiden/chonky-comment-composer-e80b

Conversation

@aidenybai

@aidenybai aidenybai commented Aug 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • start the comment composer at a compact single line and autofocus it on mount
  • tighten composer header spacing and the text-to-action gap without changing shared section spacing
  • render the submit control at a true border-box 18px visual size while retaining its 24px accessible hit target
  • expand the textarea smoothly one line at a time
  • use an opacity-only fade at the final panel size with no scale geometry

Testing

  • nr build
  • nr test: 356 unit tests, 909 cross-framework E2E tests, and 73 performance tests passed; 1 unrelated Three Fiber E2E case passed on retry
  • focused compact-spacing regression passed
  • nr lint: 0 warnings, 0 errors
  • nr typecheck
  • nr format
  • React Doctor changed scope: 100/100
  • React Doctor design audit: no issues
  • final real-app walkthrough verifies balanced compact spacing, autofocus, fade-only entry, and collision-free multiline growth

Walkthrough

comment_composer_balanced_compact_demo.mp4

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

Summary by cubic

Improves the react-grab comment composer with a 160ms opacity-only fade at final size, a compact starting input, and spacing scoped to the composer. This removes sizing jitter and makes growth and spacing predictable.

  • Layout: fixed width 280px; textarea min 16px, max 95px; header pt-1 pb-0.5; bottom stacks input and submit with a small gap; submit moved below input and explicitly 18px with a matching row height.
  • Motion: comment-composer-enter fade with duration set via constants; textarea height transitions 180ms via autoResizeTextarea using requestAnimationFrame with per-element pending-frame cancellation for line-by-line growth.
  • Focus & tests: rely on native autofocus (removed manual .focus()); E2E asserts fade-only enter (no transform/clip/size keyframes), compact start with focus, line-by-line expansion, submit below input with small control, and a height transition.
  • No API changes; no migration required.

Written for commit 24dc23f. Summary will update on new commits.

Review in cubic

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
@vercel

vercel Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
react-grab-storybook Ready Ready Preview Aug 17, 2026 3:24am
react-grab-website Ready Ready Preview Aug 17, 2026 3:24am

@pkg-pr-new

pkg-pr-new Bot commented Aug 16, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@react-grab/cli@620
npm i https://pkg.pr.new/grab@620
npm i https://pkg.pr.new/react-grab@620

commit: 24dc23f

@github-actions

github-actions Bot commented Aug 16, 2026 •

Copy link
Copy Markdown
Contributor

Performance report — this PR vs base branch

🔴 6 regressions · 🟢 4 improvements across 77 scenarios.

Scenario Metric Base → PR Verdict
copy-then-deactivate-stress Interaction latency (INP) 64.0ms → 96.0ms (+50%) 🔴 worse
deactivate-with-many-frozen-elements Frame time (p95) 50.0ms → 367ms (+633%) 🔴 worse
heavy-table-expand-rows-passive Heap growth -378KB → 559KB (+248%) 🔴 worse
heavy-table-hover-in-selection-mode GPU process CPU 19% → 26% (+35%) 🔴 worse
interference-gauntlet-hover-sweep GPU process CPU 43% → 52% (+21%) 🔴 worse
animation-scheduling-controls/infinite-stepped Graphics CPU over paused -6% → 2% (+131%) 🔴 worse
dom-rerender-during-selection Frame time (worst) 100ms → 33.4ms (-67%) 🟢 better
drag-sweep-massive-grid Interaction latency (INP) 824ms → 416ms (-50%) 🟢 better
drag-sweep-massive-grid Frame time (worst) 842ms → 575ms (-32%) 🟢 better
heavy-all-activate-toggle GPU process CPU 27% → 22% (-20%) 🟢 better

A metric counts as changed only past per-metric thresholds sized to measured shared-runner variance on identical code: interaction latency ±10% and 16ms (measured in 8ms steps), frame times ±30%, long-task/LoAF sums ±10% and 500ms, memory ±25% and 512KB / 60 nodes, process CPU ±20% and 10 points, GPU-process CPU ±20% and 3 points, animation ticks ±20% and 3/s, draws/tick ±20% and 0.05, hardware GPU ±20% and 10 points, compositor production ±20% and 3fps / 5 duty-cycle points, composited layers ±20% and 2 layers / 0.5 viewport areas, rendering stages ±20% and 1ms; any ms metric with a ≥100ms baseline needs ±30%.

All 73 standard scenarios (full numbers)
Scenario Interaction latency (INP) Main-thread blocking (long tasks) Janky frames (LoAF total) Frame time (p95) Frame time (worst) Heap growth Leaked DOM nodes Browser process CPU GPU process CPU Renderer process CPU Animation ticks Active animation timeline duty Animation-attributable renderer CPU Animation-attributable GPU-process CPU Animation-attributable graphics CPU Hardware GPU busy Compositor frame production Compositor production duty cycle Composited content layers Composited surface area Painted area Paint work CSS selector matching CSS selector attempts Compositor work
activate-deactivate-dense-animations 0.0ms → 0.0ms (0%) 20953ms → 20814ms (-1%) 19436ms → 19443ms (0%) 633ms → 617ms (-3%) 650ms → 675ms (+4%) 168KB → 70KB (-58%) 0 → 0 (0%) 164% → 162% (-1%) 27% → 27% (0%) 136% → 134% (-1%) – – – – – – – – – – – – – – –
activate-large-dom-sparse-animations 0.0ms → 0.0ms (0%) 941ms → 789ms (-16%) 1686ms → 1681ms (0%) 167ms → 167ms (0%) 167ms → 167ms (0%) 109KB → 142KB (+30%) 0 → 0 (0%) 149% → 148% (0%) 49% → 48% (0%) 98% → 98% (0%) – – – – – – – – – – – – – – –
activate-with-many-animations 0.0ms → 0.0ms (0%) 26.0ms → 0.0ms (-100%) 0.0ms → 0.0ms (0%) 66.7ms → 58.3ms (-12%) 66.7ms → 66.6ms (0%) 164KB → 164KB (0%) 0 → 0 (0%) 175% → 178% (+2%) 80% → 80% (+1%) 91% → 93% (+2%) – – – – – – – – – – – – – – –
arrow-navigation-storm 28.0ms → 40.0ms (+43%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 139KB → 140KB (+1%) 0 → 0 (0%) 82% → 87% (+5%) 24% → 27% (+13%) 53% → 55% (+3%) – – – – – – – – – – – – – – –
context-menu-arrow-navigation 40.0ms → 40.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 240KB → 215KB (-10%) 1 → 1 (0%) 235% → 238% (+1%) 187% → 189% (+1%) 43% → 45% (+4%) – – – – – – – – – – – – – – –
context-menu-open-close-cycle 240ms → 176ms (-27%) 59.0ms → 0.0ms (-100%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 50.1ms → 33.4ms (-33%) 236KB → 235KB (0%) 1 → 1 (0%) 203% → 215% (+6%) 160% → 168% (+5%) 38% → 40% (+6%) – – – – – – – – – – – – – – –
copy-multi-element-batch 120ms → 104ms (-13%) 0.0ms → 0.0ms (0%) 73.0ms → 73.7ms (+1%) 16.8ms → 16.8ms (0%) 49.9ms → 58.5ms (+17%) -336KB → -332KB (+1%) -117 → -117 (0%) 93% → 92% (-1%) 22% → 22% (-1%) 67% → 66% (0%) – – – – – – – – – – – – – – –
copy-then-deactivate-stress 64.0ms → 96.0ms (+50%) 🔴 worse 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 66.8ms → 66.7ms (0%) 99.9ms → 83.4ms (-17%) 151KB → 162KB (+7%) 0 → 0 (0%) 172% → 173% (+1%) 109% → 111% (+2%) 56% → 56% (0%) – – – – – – – – – – – – – – –
copy-under-saturated-network 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 303KB → 302KB (0%) 2 → 2 (0%) 11% → 10% (-4%) 6% → 6% (-2%) 5% → 4% (-8%) – – – – – – – – – – – – – – –
copy-under-saturated-network (sourceResolveMs) 8007ms → 8006ms (0%) – – – – – – – – – – – – – – – – – – – – – – – –
deactivate-with-many-frozen-elements 104ms → 104ms (0%) 27.0ms → 0.0ms (-100%) 43.7ms → 62.0ms (+42%) 50.0ms → 367ms (+633%) 🔴 worse 725ms → 725ms (0%) 350KB → 345KB (-1%) 0 → 0 (0%) 103% → 102% (-1%) 27% → 26% (-6%) 71% → 71% (-1%) – – – – – – – – – – – – – – –
deep-element-stack-hover 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 68KB → 69KB (+1%) 0 → 0 (0%) 46% → 47% (+1%) 11% → 11% (0%) 29% → 31% (+4%) – – – – – – – – – – – – – – –
dom-rerender-during-selection 48.0ms → 48.0ms (0%) 144ms → 0.0ms (-100%) 146ms → 0.0ms (-100%) 16.8ms → 16.8ms (0%) 100ms → 33.4ms (-67%) 🟢 better 129KB → 140KB (+9%) 0 → 0 (0%) 221% → 245% (+11%) 168% → 184% (+9%) 45% → 52% (+15%) – – – – – – – – – – – – – – –
drag-commit-massive-grid 1416ms → 1428ms (+1%) 5790ms → 5872ms (+1%) 6011ms → 5895ms (-2%) 517ms → 525ms (+2%) 1375ms → 1392ms (+1%) 628KB → 622KB (-1%) 14 → 14 (0%) 115% → 113% (-1%) 6% → 5% (-9%) 107% → 107% (-1%) – – – – – – – – – – – – – – –
drag-freeze-animation-storm 964ms → 948ms (-2%) 3099ms → 2998ms (-3%) 3221ms → 3159ms (-2%) 158ms → 183ms (+16%) 917ms → 908ms (-1%) 737KB → 489KB (-34%) 46 → 0 (-100%) 151% → 152% (0%) 24% → 24% (-3%) 123% → 123% (+1%) – – – – – – – – – – – – – – –
drag-rapid-zigzag 48.0ms → 48.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 233KB → 274KB (+18%) 0 → 4 (was 0) 60% → 59% (-2%) 17% → 17% (-2%) 32% → 31% (-2%) – – – – – – – – – – – – – – –
drag-selection-sweep 48.0ms → 48.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 188KB → 169KB (-10%) 4 → 0 (-100%) 30% → 29% (0%) 8% → 8% (0%) 17% → 16% (-3%) – – – – – – – – – – – – – – –
drag-sweep-massive-grid 824ms → 416ms (-50%) 🟢 better 9601ms → 9115ms (-5%) 9015ms → 8431ms (-6%) 375ms → 375ms (0%) 842ms → 575ms (-32%) 🟢 better 642KB → 924KB (+44%) 3 → 8 (+167%) 106% → 106% (0%) 5% → 6% (+13%) 95% → 94% (-2%) – – – – – – – – – – – – – – –
drag-with-autoscroll 64.0ms → 72.0ms (+13%) 0.0ms → 0.0ms (0%) 60.5ms → 59.1ms (-2%) 16.8ms → 16.8ms (0%) 50.0ms → 50.0ms (0%) 227KB → 235KB (+4%) 1 → 1 (0%) 40% → 40% (-1%) 11% → 11% (-4%) 23% → 23% (+1%) – – – – – – – – – – – – – – –
heavy-all-activate-toggle 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 144ms → 190ms (+32%) 83.3ms → 75.1ms (-10%) 100ms → 83.3ms (-17%) 165KB → 114KB (-31%) 0 → 0 (0%) 141% → 139% (-2%) 27% → 22% (-20%) 🟢 better 111% → 114% (+3%) – – – – – – – – – – – – – – –
heavy-all-copy-cross-section 96.0ms → 84.0ms (-12%) 57.0ms → 55.0ms (-4%) 135ms → 153ms (+14%) 50.0ms → 50.0ms (0%) 66.7ms → 58.4ms (-12%) 163KB → 232KB (+42%) 8 → 8 (0%) 107% → 102% (-5%) 16% → 14% (-13%) 89% → 86% (-3%) – – – – – – – – – – – – – – –
heavy-all-drag-sweep 140ms → 136ms (-3%) 129ms → 128ms (-1%) 149ms → 149ms (0%) 16.8ms → 16.8ms (0%) 100ms → 100ms (0%) 622KB → 356KB (-43%) 27 → 14 (-48%) 87% → 84% (-4%) 14% → 13% (-4%) 61% → 59% (-3%) – – – – – – – – – – – – – – –
heavy-all-scroll-during-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 5682KB → 5692KB (0%) 0 → 0 (0%) 82% → 83% (+1%) 27% → 27% (-1%) 50% → 53% (+5%) – – – – – – – – – – – – – – –
heavy-charts-activate-cycle 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 50.1ms → 50.1ms (0%) 58.3ms → 58.4ms (0%) 54KB → 43KB (-20%) 0 → 0 (0%) 148% → 147% (0%) 36% → 36% (+1%) 108% → 106% (-2%) – – – – – – – – – – – – – – –
heavy-charts-drag-select 104ms → 112ms (+8%) 56.0ms → 59.0ms (+5%) 80.7ms → 82.8ms (+3%) 16.8ms → 16.8ms (0%) 66.7ms → 66.6ms (0%) 153KB → 146KB (-5%) 0 → 0 (0%) 92% → 92% (0%) 19% → 20% (+3%) 61% → 60% (-1%) – – – – – – – – – – – – – – –
heavy-charts-hover-in-selection-mode 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.8ms (+1%) 16.8ms → 16.8ms (0%) 72KB → 83KB (+15%) 0 → 0 (0%) 46% → 46% (0%) 13% → 13% (0%) 30% → 30% (-1%) – – – – – – – – – – – – – – –
heavy-charts-tooltip-sweep-passive 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 127KB → 124KB (-2%) 0 → 0 (0%) 116% → 111% (-4%) 13% → 12% (-4%) 89% → 84% (-6%) – – – – – – – – – – – – – – –
heavy-dashboard-drag-sweep 40.0ms → 48.0ms (+20%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 279KB → 317KB (+14%) 1 → 7 (+600%) 50% → 52% (+3%) 11% → 12% (+5%) 30% → 32% (+6%) – – – – – – – – – – – – – – –
heavy-dashboard-hover-sweep 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.8ms (+1%) 16.8ms → 16.8ms (0%) 119KB → 117KB (-2%) 4 → 4 (0%) 56% → 56% (-1%) 22% → 23% (+3%) 29% → 30% (+2%) – – – – – – – – – – – – – – –
heavy-dashboard-selection-under-rerender 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 97KB → 108KB (+11%) 0 → 0 (0%) 12% → 12% (+1%) 5% → 5% (-3%) 7% → 7% (+5%) – – – – – – – – – – – – – – –
heavy-heatmap-crosshair-passive 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 126KB → 120KB (-5%) 0 → 0 (0%) 115% → 109% (-5%) 21% → 19% (-9%) 87% → 82% (-5%) – – – – – – – – – – – – – – –
heavy-heatmap-hover-in-selection-mode 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 149KB → 153KB (+3%) 0 → 0 (0%) 59% → 59% (+1%) 22% → 22% (+1%) 31% → 31% (+1%) – – – – – – – – – – – – – – –
heavy-table-drag-select-rows 80.0ms → 72.0ms (-10%) 0.0ms → 0.0ms (0%) 54.6ms → 59.3ms (+9%) 16.8ms → 16.7ms (-1%) 33.4ms → 49.9ms (+49%) 204KB → 200KB (-2%) 0 → 0 (0%) 66% → 67% (+3%) 16% → 16% (+1%) 38% → 39% (+4%) – – – – – – – – – – – – – – –
heavy-table-expand-rows-passive 104ms → 96.0ms (-8%) 593ms → 626ms (+6%) 628ms → 658ms (+5%) 49.9ms → 50.0ms (0%) 66.7ms → 66.7ms (0%) -378KB → 559KB (+248%) 🔴 worse 0 → 0 (0%) 70% → 69% (-1%) 5% → 5% (+6%) 56% → 58% (+4%) – – – – – – – – – – – – – – –
heavy-table-filter-typing-passive 144ms → 148ms (+3%) 1143ms → 1163ms (+2%) 1535ms → 1750ms (+14%) 58.3ms → 50.0ms (-14%) 133ms → 133ms (0%) 1116KB → 1117KB (0%) 1 → 1 (0%) 100% → 101% (0%) 4% → 3% (0%) 90% → 91% (+1%) – – – – – – – – – – – – – – –
heavy-table-hover-in-selection-mode 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 52KB → 38KB (-27%) 0 → 0 (0%) 68% → 77% (+14%) 19% → 26% (+35%) 🔴 worse 45% → 48% (+5%) – – – – – – – – – – – – – – –
heavy-table-multi-select-copy 72.0ms → 64.0ms (-11%) 0.0ms → 0.0ms (0%) 56.0ms → 0.0ms (-100%) 25.0ms → 16.8ms (-33%) 41.6ms → 33.3ms (-20%) 140KB → 145KB (+4%) 1 → 1 (0%) 91% → 91% (0%) 19% → 20% (+1%) 68% → 68% (-1%) – – – – – – – – – – – – – – –
heavy-table-paginate-passive 136ms → 144ms (+6%) 1284ms → 1247ms (-3%) 1387ms → 1352ms (-2%) 66.7ms → 66.7ms (0%) 100ms → 100ms (0%) 535KB → 100KB (-81%) 0 → 0 (0%) 86% → 81% (-5%) 4% → 4% (-1%) 69% → 65% (-6%) – – – – – – – – – – – – – – –
heavy-table-sort-passive 240ms → 240ms (0%) 4062ms → 3866ms (-5%) 4560ms → 4387ms (-4%) 66.6ms → 66.7ms (0%) 217ms → 200ms (-8%) 173KB → 170KB (-2%) 0 → 0 (0%) 87% → 90% (+3%) 3% → 3% (+3%) 74% → 76% (+3%) – – – – – – – – – – – – – – –
heavy-virtual-hover-sweep 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 78KB → 93KB (+19%) 4 → 4 (0%) 73% → 71% (-3%) 29% → 29% (-2%) 39% → 38% (-4%) – – – – – – – – – – – – – – –
heavy-virtual-scroll-during-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.8ms (+1%) 16.8ms → 16.8ms (0%) 229KB → 233KB (+2%) 0 → 0 (0%) 89% → 95% (+7%) 33% → 36% (+8%) 51% → 54% (+6%) – – – – – – – – – – – – – – –
heavy-virtual-scroll-passive 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 97KB → 152KB (+57%) 0 → 0 (0%) 84% → 85% (+1%) 17% → 16% (-4%) 61% → 61% (0%) – – – – – – – – – – – – – – –
hover-deep-nested-dom 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 61KB → 61KB (0%) 0 → 0 (0%) 44% → 45% (+1%) 7% → 7% (-4%) 32% → 33% (+2%) – – – – – – – – – – – – – – –
hover-dense-flat-dom 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 123KB → 122KB (-1%) 0 → 0 (0%) 86% → 85% (-1%) 31% → 31% (0%) 50% → 50% (-1%) – – – – – – – – – – – – – – –
hover-in-selection-mode 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 112KB → 196KB (+75%) 0 → 0 (0%) 51% → 53% (+3%) 24% → 24% (+2%) 25% → 26% (+3%) – – – – – – – – – – – – – – –
hover-over-animated-elements 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 5KB → 5KB (0%) 0 → 0 (0%) 17% → 17% (+2%) 6% → 6% (+2%) 8% → 8% (0%) – – – – – – – – – – – – – – –
idle-after-activation 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 136KB → 133KB (-2%) 0 → 0 (0%) 16% → 14% (-12%) 6% → 5% (-8%) 7% → 6% (-13%) 51/s → 51/s (0%) 0% → 0% (0%) -0% → 0% (+49900%) 0% → -1% (0%) -0% → -0% (-100%) – 10fps → 10fps (0%) 30% → 30% (+2%) 18 → 18 (0%) 3.7× → 3.7× (0%) 0.0× → 0.0× (0%) 6.5ms → 6.2ms (-4%) 0.0ms → 0.0ms (0%) 0 → 0 (0%) 158ms → 159ms (+1%)
interference-canvas-hover-markers 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 59KB → 44KB (-25%) 0 → 0 (0%) 84% → 88% (+5%) 36% → 35% (-1%) 45% → 44% (-1%) – – – – – – – – – – – – – – –
interference-canvas-paint-passive 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 2KB → 2KB (0%) 0 → 0 (0%) 34% → 30% (-13%) 15% → 13% (-9%) 18% → 16% (-9%) – – – – – – – – – – – – – – –
interference-editor-hover-with-swallowed-pointermove 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 34KB → 36KB (+6%) 0 → 0 (0%) 61% → 62% (+1%) 27% → 27% (0%) 30% → 30% (0%) – – – – – – – – – – – – – – –
interference-editor-typing-passive 20.0ms → 24.0ms (+20%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 17KB → -35KB (-306%) 0 → 0 (0%) 66% → 65% (-2%) 7% → 7% (0%) 49% → 48% (-2%) – – – – – – – – – – – – – – –
interference-gauntlet-activate-toggle 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 50.0ms → 50.1ms (0%) 50.1ms → 58.3ms (+16%) 353KB → 356KB (+1%) 18 → 18 (0%) 160% → 159% (0%) 44% → 42% (-3%) 112% → 111% (0%) – – – – – – – – – – – – – – –
interference-gauntlet-drag-sweep 112ms → 128ms (+14%) 217ms → 204ms (-6%) 232ms → 218ms (-6%) 16.8ms → 25.0ms (+49%) 66.7ms → 83.3ms (+25%) 510KB → 513KB (+1%) 65 → 65 (0%) 177% → 181% (+2%) 50% → 50% (-1%) 99% → 104% (+4%) – – – – – – – – – – – – – – –
interference-gauntlet-hover-sweep 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 128KB → 135KB (+5%) 0 → 0 (0%) 93% → 110% (+19%) 43% → 52% (+21%) 🔴 worse 46% → 52% (+13%) – – – – – – – – – – – – – – –
interference-hijacked-scroll-during-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 132KB → 126KB (-5%) 0 → 0 (0%) 90% → 85% (-6%) 38% → 36% (-5%) 47% → 47% (-1%) – – – – – – – – – – – – – – –
interference-hijacked-scroll-passive 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 96KB → 95KB (-1%) 0 → 0 (0%) 66% → 65% (-1%) 24% → 24% (0%) 36% → 36% (-1%) – – – – – – – – – – – – – – –
interference-kanban-app-drag-passive 24.0ms → 24.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) -79KB → 88KB (+211%) 0 → 0 (0%) 62% → 63% (+1%) 15% → 15% (-1%) 39% → 40% (+1%) – – – – – – – – – – – – – – –
interference-kanban-grab-drag-select 48.0ms → 40.0ms (-17%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 193KB → 192KB (-1%) 4 → 4 (0%) 58% → 51% (-11%) 13% → 10% (-19%) 27% → 24% (-13%) – – – – – – – – – – – – – – –
interference-kanban-hover-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 42KB → 42KB (0%) 0 → 0 (0%) 51% → 47% (-8%) 24% → 23% (-4%) 24% → 21% (-10%) – – – – – – – – – – – – – – –
interference-raf-mutator-hover 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 115KB → 109KB (-5%) 0 → 0 (0%) 123% → 117% (-5%) 63% → 59% (-5%) 56% → 54% (-4%) – – – – – – – – – – – – – – –
interference-toast-hover-churn 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 0KB → 1KB (was 0) 0 → 0 (0%) 85% → 83% (-2%) 53% → 53% (-1%) 29% → 27% (-5%) – – – – – – – – – – – – – – –
interference-toast-storm-idle-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.8ms (0%) 16.8ms → 16.8ms (0%) 21KB → 21KB (0%) 0 → 0 (0%) 21% → 20% (-4%) 12% → 12% (0%) 8% → 7% (-6%) – – – – – – – – – – – – – – –
interference-waapi-freeze-cycle 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 50.1ms → 50.0ms (0%) 50.1ms → 50.1ms (0%) 42KB → 41KB (-2%) 0 → 0 (0%) 161% → 171% (+6%) 54% → 58% (+7%) 102% → 108% (+6%) – – – – – – – – – – – – – – –
interference-waapi-hover-sweep 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 88KB → 89KB (+1%) 0 → 0 (0%) 121% → 122% (+1%) 60% → 60% (+1%) 58% → 58% (0%) – – – – – – – – – – – – – – –
keyboard-rapid-arrows 32.0ms → 32.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 123KB → 118KB (-4%) 0 → 0 (0%) 76% → 77% (+1%) 25% → 24% (-5%) 45% → 46% (+2%) – – – – – – – – – – – – – – –
large-drag-selection 72.0ms → 72.0ms (0%) 0.0ms → 0.0ms (0%) 114ms → 57.5ms (-50%) 16.8ms → 16.8ms (0%) 50.0ms → 50.0ms (0%) 238KB → 217KB (-9%) 1 → 1 (0%) 66% → 61% (-7%) 14% → 13% (-10%) 40% → 37% (-7%) – – – – – – – – – – – – – – –
pointermove-storm-synthetic 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 33.4ms → 33.3ms (0%) 33.4ms → 33.4ms (0%) 70KB → 57KB (-19%) 0 → 0 (0%) 124% → 119% (-3%) 19% → 19% (-2%) 104% → 102% (-2%) – – – – – – – – – – – – – – –
prompt-mode-typing 24.0ms → 24.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.7ms → 16.7ms (0%) 16.8ms → 16.8ms (0%) 144KB → 132KB (-8%) 1 → 1 (0%) 75% → 69% (-8%) 13% → 11% (-14%) 48% → 47% (-3%) – – – – – – – – – – – – – – –
rapid-toggle-active-inactive 0.0ms → 0.0ms (0%) 55.5ms → 0.0ms (-100%) 27.4ms → 0.0ms (-100%) 66.7ms → 66.7ms (0%) 83.3ms → 75.0ms (-10%) 102KB → 100KB (-2%) 0 → 0 (0%) 149% → 147% (-2%) 81% → 79% (-4%) 63% → 63% (0%) – – – – – – – – – – – – – – –
scroll-during-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 16.8ms → 16.7ms (-1%) 16.8ms → 16.8ms (0%) 142KB → 124KB (-13%) 0 → 0 (0%) 70% → 71% (+2%) 35% → 36% (+2%) 30% → 30% (+2%) – – – – – – – – – – – – – – –
toolbar-collapse-expand-cycle 0.0ms → 0.0ms (0%) 0.0ms → 27.5ms (was 0) 0.0ms → 0.0ms (0%) 33.3ms → 33.3ms (0%) 33.4ms → 41.8ms (+25%) 44KB → 56KB (+27%) 0 → 0 (0%) 173% → 173% (0%) 143% → 143% (0%) 29% → 29% (+2%) – – – – – – – – – – – – – – –
toolbar-drag-to-edges 692ms → 648ms (-6%) 0.0ms → 25.0ms (was 0) 0.0ms → 0.0ms (0%) 33.4ms → 33.4ms (0%) 66.8ms → 66.8ms (0%) 67KB → 80KB (+19%) 0 → 0 (0%) 179% → 180% (0%) 140% → 141% (0%) 33% → 33% (+1%) – – – – – – – – – – – – – – –
viewport-resize-during-selection 0.0ms → 0.0ms (0%) 0.0ms → 0.0ms (0%) 28.4ms → 31.9ms (+13%) 58.3ms → 58.3ms (0%) 66.7ms → 66.8ms (0%) 41KB → 33KB (-20%) 0 → 0 (0%) 162% → 160% (-1%) 50% → 49% (-3%) 103% → 102% (0%) – – – – – – – – – – – – – – –
All 5 animation scheduling controls (full numbers)
Control Active graphics-pipeline CPU Graphics CPU over paused Animation ticks Draws per animation tick Compositor frame production Compositor production duty cycle Active animation timeline duty
animation-scheduling-controls/finite-static-holds 129% → 140% (+9%) -9% → -1% (+94%) 148/s → 160/s (+8%) 0.1× → 0.0× (-14%) 14fps → 14fps (-3%) 25% → 24% (-4%) 22% → 22% (-3%)
animation-scheduling-controls/infinite-stepped 113% → 128% (+13%) -6% → 2% (+131%) 🔴 worse 156/s → 159/s (+2%) 0.0× → 0.0× (0%) 4fps → 4fps (0%) 8% → 8% (-2%) 100% → 100% (0%)
animation-scheduling-controls/legacy-one-indicator 159% → 161% (+2%) -1% → 1% (+157%) 145/s → 140/s (-3%) 0.4× → 0.3× (-8%) 59fps → 60fps (+1%) 100% → 100% (0%) 100% → 100% (0%)
animation-scheduling-controls/animations-paused – – 178/s → 180/s (+1%) 0.0× → 0.0× (0%) 0fps → 0fps (0%) 0% → 0% (0%) 0% → 0% (0%)
animation-scheduling-controls/legacy-production-count 140% → 145% (+4%) 2% → 3% (+22%) 147/s → 152/s (+3%) 0.3× → 0.3× (-2%) 60fps → 61fps (+1%) 100% → 100% (0%) 100% → 100% (0%)

Commit 24dc23f · full reports in the perf-bench-620 artifact.

Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
cursoragent and others added 2 commits August 17, 2026 00:45
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>

This branch was successfully deployed

2 active deployments
Preview – react-grab-website — 24dc23f9 Deployed Aug 17, 2026 by vercel[bot]
Preview – react-grab-storybook — 24dc23f9 Deployed Aug 17, 2026 by vercel[bot]
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.

2 participants