Skip to content

Stop busting caches and waiting around - #14692

Draft
jessfraz wants to merge 9 commits into
mainfrom
slow-shit
Draft

jessfraz wants to merge 9 commits into
mainfrom
slow-shit

Conversation

@jessfraz

@jessfraz jessfraz commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Stop rebuilding models to open Settings, change scene preferences, or enter a sketch. Rust owns the active file and cache. Sketch operations reuse the loaded runtime; lint keeps context creation and Wasm restart calls in their lifecycle owners. Artificial waits and animations over 100 ms are blocked, and all new perf cases run in CI with a hard 150 ms budget.

Real-engine Rust and unmocked Playwright regressions cover unchanged sketch handoffs, invalid execution owners, file switching, reconnect, and actual Wasm crash recovery. The panic hook is compiled only into an isolated test build, never the normal app.

The backface regression is still red against the deployed engine: it caches the old material color. The engine fix is separate: KittyCAD/engine#5348, not another cache bust.

Hard-coded timings (before)

Interaction Timing in code
Orientation cube 500 ms camera tween
Enter sketch 600 ms camera wait; 100 ms even with reduced motion
Viewport dimming 300 ms
Settings / Telemetry Backdrop: 300 ms in, 75 ms out; panel: 75 ms in, 200 ms out. Route close unmounts immediately, so declared leave effects do not run.
Convert to Variable 300 ms in, 200 ms out. Current modal unmount cuts off leave effects; library defaults are not applied by React.
Browser desktop handoff 300 ms in, 200 ms out
Toasts 350 ms in, 400 ms out; 230 ms stack move; success icon 400 ms, custom icon 420 ms
Zookeeper text 500 ms delay + 1,500 ms (1.5 s) fade = 2,000 ms (2 s)
Code badge hover 200 ms
Shared tooltip 200 ms CSS default delay; 150 ms transform, 110 ms opacity; Feature Tree requests 500 ms. Native popover can show immediately without those enter effects.
Rich toolbar tooltip 1,000 ms (1 s) reveal delay; 500 ms hidden-content reset
Exchange / prompt cards 500 ms height transition
Command palette / Publish dialog 100 ms in, 75 ms out
Project / user / sign-in menus 100 ms in
File / project explorer 100–150 ms
Other decorative UI 75 ms project opacity; 80 ms toggle; 150 ms progress/Zoodle/default transitions
Code auto-execution 1,000 ms (1 s) debounce, before execution
Physical-analysis density / folder drag hover 400 ms debounce / hover wait
Geometry-to-code hover / trailing resize 250 ms; resize waits only on its throttled path, not every resize
Default-plane visibility 200 ms event deferral

Results (before → animations; Settings → cache fix)

Action Small Large Large + syntax error Large + engine error
Open Settings 782.1 ms → 519.8 ms → 32.6 ms 10,580.2 ms (10.580 s) → 10,723.8 ms (10.724 s) → 31.5 ms 799.8 ms → 504.5 ms → 43.0 ms 20,879.4 ms (20.879 s) → 19,561.0 ms (19.561 s) → 33.1 ms
Close Settings 599.5 ms → 819.7 ms → 41.8 ms 1,007.6 ms (1.008 s) → 1,006.8 ms (1.007 s) → 41.8 ms 672.8 ms → 781.6 ms → 33.6 ms 19,673.1 ms (19.673 s) → 19,362.4 ms (19.362 s) → 40.8 ms
Start Sketch / choose a plane 190.3 ms → 147.5 ms 262.8 ms → 276.0 ms 272.3 ms → 246.6 ms 264.1 ms → 316.0 ms
Enter plane sketch 2,068.0 ms (2.068 s) → 1,142.6 ms (1.143 s) 2,407.3 ms (2.407 s) → 1,609.6 ms (1.610 s) N/A N/A
Enter face sketch 3,096.4 ms (3.096 s) → 1,712.7 ms (1.713 s) 2,874.9 ms (2.875 s) → 2,028.9 ms (2.029 s) N/A N/A
Edit existing sketch 1,544.3 ms (1.544 s) → 572.7 ms 2,135.0 ms (2.135 s) → 1,080.9 ms (1.081 s) N/A N/A
Exit sketch 1,307.3 ms (1.307 s) → 881.0 ms 1,473.7 ms (1.474 s) → 1,348.6 ms (1.349 s) N/A N/A
Cube: face 819.2 ms → 415.4 ms 773.6 ms → 496.6 ms 908.9 ms → 398.8 ms 772.3 ms → 400.2 ms
Cube: edge 723.5 ms → 354.9 ms 785.9 ms → 422.9 ms 766.9 ms → 394.2 ms 681.7 ms → 484.1 ms
Cube: corner 737.6 ms → 402.1 ms 708.3 ms → 382.5 ms 775.4 ms → 535.8 ms 782.9 ms → 408.3 ms
Open Convert to Variable 325.5 ms → 17.2 ms 427.8 ms → 16.7 ms N/A N/A
Cancel Convert to Variable 15.5 ms → 8.3 ms 14.8 ms → 9.1 ms N/A N/A
Apply Convert to Variable 1,224.1 ms (1.224 s) → 1,290.2 ms (1.290 s) 10,412.0 ms (10.412 s) → 9,811.0 ms (9.811 s) N/A N/A
Open Telemetry 341.3 ms → 27.4 ms 340.7 ms → 25.4 ms 334.0 ms → 39.0 ms 340.9 ms → 42.4 ms
Close Telemetry 32.0 ms → 36.1 ms 31.8 ms → 39.8 ms 38.2 ms → 38.6 ms 31.8 ms → 47.5 ms
Hover diagnostic badge 207.2 ms → 4.1 ms 206.9 ms → 8.2 ms 207.6 ms → 10.8 ms 213.8 ms → 6.1 ms
Hover feature tooltip 8.9 ms → 9.1 ms 6.2 ms → 5.7 ms 10.3 ms → 9.0 ms 6.9 ms → 6.8 ms
Hover toolbar tooltip 1,035.8 ms (1.036 s) → 18.0 ms 1,027.4 ms (1.027 s) → 16.6 ms 1,017.5 ms (1.018 s) → 17.9 ms 1,017.4 ms (1.017 s) → 18.0 ms
Hide toolbar tooltip 6.6 ms → 3.3 ms 1.8 ms → 11.7 ms 3.5 ms → 14.4 ms 3.2 ms → 7.0 ms
Copy code 414.0 ms → 23.3 ms 415.1 ms → 13.2 ms 424.3 ms → 32.4 ms 432.8 ms → 15.8 ms
Send Zookeeper prompt (fixed protocol response) 2,031.9 ms (2.032 s) → 16.4 ms 2,040.3 ms (2.040 s) → 33.0 ms 2,048.6 ms (2.049 s) → 48.0 ms 2,039.8 ms (2.040 s) → 71.4 ms
Edit KCL / execute model 2,557.3 ms (2.557 s) → 2,066.1 ms (2.066 s) 11,088.1 ms (11.088 s) → 11,943.9 ms (11.944 s) N/A N/A
Change density 599.8 ms → 519.2 ms 40,029.0 ms (40.029 s) → 38,521.8 ms (38.522 s) 37,729.6 ms (37.730 s) → 35,828.8 ms (35.829 s) 40,561.2 ms (40.561 s) → 36,025.2 ms (36.025 s)
Drag over folder 405.6 ms → 404.4 ms 510.0 ms → 408.5 ms 418.3 ms → 415.5 ms 415.9 ms → 412.6 ms
Hover geometry / highlight code 456.1 ms → 449.8 ms 526.7 ms → 506.0 ms 503.6 ms → 529.0 ms 582.9 ms → 467.3 ms
Resize viewport 417.2 ms → 417.5 ms 213.8 ms → 224.8 ms 307.8 ms → 220.1 ms 207.2 ms → 190.4 ms
Remove geometry / show planes 2,004.5 ms (2.005 s) → 1,827.6 ms (1.828 s) 1,976.6 ms (1.977 s) → 1,954.4 ms (1.954 s) N/A N/A
Add geometry / hide planes 2,391.5 ms (2.392 s) → 2,407.3 ms (2.407 s) 10,723.8 ms (10.724 s) → 12,438.8 ms (12.439 s) N/A N/A
Open Settings (Home) 340.8 ms → 39.3 ms (Home) N/A N/A N/A
Close Settings (Home) 14.8 ms → 26.4 ms (Home) N/A N/A N/A
Show browser desktop handoff 876.9 ms → 476.7 ms (web startup) N/A N/A N/A

95/95 cases measured before/after animations. Settings adds the latest cache-fix measurement: 8/8 under 150 ms. Initial model load excluded. Other results remain the animation-only checkpoint (a886a9102c). N/A = unsupported profile. Anything above 150 ms is absolutely insane and people will feel it.

@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
modeling-app Ready Ready Preview Oct 20, 2026 10:02pm UTC

Request Review

@jessfraz jessfraz changed the title Remove hard-coded interaction animations Stop making clicks wait for animations Oct 19, 2026
@jessfraz jessfraz changed the title Stop making clicks wait for animations Test the slow interactions before fixing them Oct 19, 2026
@jessfraz jessfraz changed the title Test the slow interactions before fixing them Stop waiting for animations Oct 20, 2026
@jessfraz jessfraz changed the title Stop waiting for animations Stop busting caches and waiting around Oct 20, 2026
@codspeed

codspeed Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 157 untouched benchmarks
⏩ 131 skipped benchmarks1


Comparing slow-shit (6e172ee) with main (d3da241)2

Open in CodSpeed

Footnotes

  1. 131 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on main (252827e) during the generation of this report, so d3da241 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

This branch was successfully deployed

1 active deployment
Preview — 6e172eec Deployed Oct 20, 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.

1 participant