Conversation
…nery Rows away from the viewport render a dormant frame with the same content, tap and long-press menu, but no pan gesture, Reanimated styles or hidden action buttons. Visible rows become swipeable once scrolling settles, and activation waits until no finger is on the list.
…shows blank space With dormant rows cheap, a larger draw distance keeps the rows a fling reaches already built instead of rebuilding them while the list moves.
4 tasks
Contributor
Author
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What Changed
Home's list renders rows up to 2,000 beyond the screen instead of 500 (
drawDistance), as a named constant. Five lines.Stacked on #13679. This branch contains that PR's commit too; the last commit is this change. I'll rebase it onto main once #13679 merges.
Why
With #13679, rows away from the viewport are cheap dormant frames, but the list still rebuilds recycled rows while a fling moves it, and on a busy JS thread that can fall behind: #13679 alone still showed a blank list in 1 of 5 runs. Rendering further ahead means a fling reaches rows that are already built.
Pixel 9, real account (57 rows on Home), release build installed in place, the same 10 fast flings per run, all runs in one session:
Keeping more rows mounted costs memory: mean 550 MiB with #13679 alone and 598 MiB with this PR, still below main's 624 MiB. A draw distance of 1,000 also had no blank frames in 2 runs (550–567 MiB), so a lower value is an option if memory matters more than margin.
UI Changes
No visual change to a row. Same flings, #13679 alone (its worst run) on the left, with this PR on the right (MP4):
Checklist