You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Web] Larger threshold + viewport-fill skeletons in TrackLineup
The first pass at smoothing infinite-scroll wasn't enough on desktop
because two more things stacked on top of the late-skeleton problem:
- A 1-viewport threshold isn't enough buffer for fast desktop scrolls
(mouse fling, trackpad, PgDn). Bumped to 2 viewports so the next page
request fires while there's still meaningful content below.
- The skeleton count was `pageSize`, which is only 4 on Trending / Feed.
At ~124px per desktop tile that's ~480px of skeletons — half a
viewport — so the user could blow right through them and land on the
literal bottom of the list while waiting for the network. Skeleton
count is now `max(pageSize, ceil(threshold / approxTileHeight))` so
the loading window always fills the threshold area.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .changeset/smooth-web-lineup-scroll.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,4 +2,4 @@
2
2
'@audius/web': patch
3
3
---
4
4
5
-
Smooth out lineup infinite-scroll on Trending, Feed, and other tanquery-driven track lists. Skeletons used to gate on tanquery's `isFetching`, so the next page only painted after the scroll handler → `loadNextPage` → tanquery state round-trip — long enough that scrolling fast left a visible "stuck at the bottom" gap. The threshold is now ~one viewport (matching mobile) and a synchronous trigger flag renders skeletons on the next frame instead of waiting for `isFetching`to propagate.
5
+
Smooth out lineup infinite-scroll on Trending, Feed, and other tanquery-driven track lists. The scroll-to-bottom "chunk" had three causes stacked: a small fixed 500px threshold, skeletons that gated on tanquery's `isFetching` (so they only painted after a multi-tick state round-trip), and a per-page skeleton count of just `pageSize` (4 on Trending, ~480px tall on desktop) that didn't fill the loading window. The threshold is now ~2× the scroll parent's viewport, a synchronous trigger flag renders skeletons on the next frame, and the skeleton count is sized to fill the threshold area so the bottom stays populated even when the user scrolls in faster than the next page can return.
0 commit comments