Repository navigation
Conversation
- Promote the sidebar scroll container to a compositing layer ([will-change:scroll-position]) so WebKit runs it at the display's native rate (120Hz on ProMotion) instead of the 60Hz timer path, matching the technique already used for the canvas table. - Update the virtual-window state synchronously on scroll instead of deferring the scrollTop read into a rAF, which left the rendered window one frame behind the scrollbar thumb during a drag. - Correct ROW_H (28 -> 27) to match the real row stride (25px row + 2px gap) so virtual spacers don't drift.
|
This was referenced Jul 5, 2026
Collaborator
Author
|
Superseded by combined minor-release PR #36 (same changes, rolled up). Closing to keep a single merge. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Scrolling the table list in the sidebar felt laggy/stuttery — content trailed the scrollbar thumb while dragging.
Root causes
src/app.css:550) thatwill-change: scroll-positionpromotes a scroll container so WebKit runs it at the display's native rate (120Hz on ProMotion) instead of the 60Hz timer path. It's applied to the canvas table and the other virtualized lists use[will-change:transform], but the sidebar scroll container had neither — so it stuttered at 60Hz.onSidebarScrolldeferred thescrollTopread into arequestAnimationFrame, so the rendered virtual window landed one frame behind the scrollbar thumb during a drag. ReadingscrollTopsynchronously in the scroll handler is a cheap cached read (layout is already current), and Svelte coalesces the re-renders into one flush per frame — so the rAF only added latency.ROW_Hoverestimated the row stride (28px vs the real 27px: 13pxtext-ui-sm+py-1.5= 25px row + 2pxgap-0.5), causing minor drift between the virtual spacers and the real rows.Changes
[will-change:scroll-position]to the sidebar scroll container.sidebarScrollTopsynchronously on scroll; drop the rAF hop and its unmount cleanup.ROW_H28 → 27.Verification
npm run buildpasses (only pre-existing chunk-size / dynamic-import warnings).