Repository navigation
[No QA][LegendList 10/15] chore: upgrade LegendList to 3.7.2 and patch its scroll anchoring - #106095
Conversation
Bump @legendapp/list to 3.7.1 and add the four LegendList patches that keep a chat's visible messages in place, plus the Android MVCP patch update that lets native scroll compensation use LegendList's zero-sized anchor. They are extracted from Expensify#100733, where the report actions list moves to LegendList. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LegendList anchors native scroll adjustments to a view placed 10,000,000 points down. Native layout stores positions as 32-bit floats, which hold that value only to whole points, so each adjustment was rounded while the items moved by the exact amount. Patch the anchor down to 1,000,000 points, as proposed upstream in LegendApp/legend-list#602. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Before a list is ready, LegendList moved its native anchor a frame after the positions changed, so an initial scroll dispatched in between was shifted a second time, and retries reused a stale target. Patch LegendList as proposed upstream in LegendApp/legend-list#604. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Reviewer Checklist
Screenshots/Videoschrome.mp4android.hyrid.mp4 |
roryabraham
left a comment
There was a problem hiding this comment.
Six LegendList patches
TIHI 😉
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 roryabraham has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/roryabraham in version: 9.5.36-0 🚀
|
|
🚀 Deployed to production by https://github.com/yuwenmemon in version: 9.5.36-0 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
#100733 moves the chat message list to LegendList, and the move depends on a LegendList upgrade and several patches. This PR extracts those dependency changes from that PR so they can be reviewed on their own. No list on
mainrenders LegendList yet, so the LegendList changes have no visible effect until #100733 lands.@legendapp/listgoes from 3.7.0 to 3.7.2.patches/@legendapp/list/details.mdexplains each one.MaintainVisibleContentPositionpatch for React Native now keeps a zero-sized first child as the scroll anchor, which is how LegendList compensates for measured rows. This matches the merged upstream fix in react/react-native#57959 and applies to every Android scroll view that usesmaintainVisibleContentPosition.This PR is layer 10 of the fifteen-part LegendList rollout and merges before #100733.
Fixed Issues
$ #98994
PROPOSAL: N/A
Tests
Android and iOS apps, mWeb and desktop web
Android app
Offline tests
QA Steps
None. No list in the app renders LegendList yet, so this PR has no visible effect until #100733 lands.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
🤖 Generated with Claude Code