Repository navigation
[LegendList 7/12] chore: upgrade LegendList to 3.7.0 - #105474
roryabraham merged 1 commit into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis 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. |
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. |
|
@roryabraham this can also be merged right away, independently of #105473 |
|
🤖 Web test steps verification results: I signed in, finished onboarding, and built a 20-message Concierge chat, but the web test tool could not complete any documented step. It cannot upload files, trigger the hover menu that opens Edit, read the browser console, or simulate offline mode. These are tool limits, not confirmed app defects. Scrolling the chat and selecting message rows also behaved oddly, so a human should check those.
view run · no recording available |
|
🚧 roryabraham has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 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.27-0 🚀
|
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.5.27-2 🚀
Bundle Size Analysis (Sentry): |









The app pins LegendList 3.3.10, but the chronological report-actions migration in #100733 needs 3.7.0, which includes the upstream Fabric content-size fix. Upgrading inside the migration mixes a dependency change into a large behavior change. This PR upgrades LegendList on its own.
@roryabraham @dmkt9
Explanation of Change
This is layer 7 of the twelve-part LegendList rollout. It changes
@legendapp/listfrom^3.3.10to^3.7.0inpackage.jsonand the lockfile. The lockfile change adds no new dependencies.No list renders with LegendList yet. The only runtime use is
useRecyclingState, which report-action rows call throughuseReportActionItemState. Outside a LegendList, those rows use React state, and 3.7.0 still supports calling the hook without a list context.Fixed Issues
$ #98994
This PR is part of the migration split from #98270. No approved proposal is linked.
Tests
All platforms means desktop web, mobile web, Android, and iOS.
All platforms, report-action rows
Offline tests
All platforms, cached chat offline
QA Steps
Same as Tests, including Offline tests.
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
Cold chat open and initial loading
FlashList is on the left and LegendList is on the right. FlashList leaves the report body blank during loading; LegendList shows the report-action skeleton before messages appear.
ColdOpenLoading.mp4
Cold expense-chat open
FlashList is on the left and LegendList is on the right. Both progress from the loading skeleton to an expense preview and its surrounding report actions.
Android screen recording TBD.
Warm expense-chat open
FlashList is on the left and LegendList is on the right. Both open the cached expense preview and report actions from the inbox.
Android screen recording TBD.
Warm chat open
Side-by-side opens of the same cached chat, ending on the same report-action history. The implementations are not labeled in this recording.
Android screen recording TBD.
Android: mWeb Chrome
iOS: Native
Cold chat open and initial loading
FlashList is on the left and LegendList is on the right. FlashList leaves the report body blank during loading; LegendList shows the report-action skeleton before messages appear.
LegendListLoadingSkeletonVsFlashList.mp4
Cold expense-chat open
FlashList is on the left and LegendList is on the right. Both progress from the loading skeleton to an expense preview and its surrounding report actions.
ExpenseChatCold.mp4
Warm expense-chat open
FlashList is on the left and LegendList is on the right. Both open the cached expense preview and report actions from the inbox.
ExpenseChatWarm.mp4
Warm chat open
Side-by-side opens of the same cached chat, ending on the same report-action history. The implementations are not labeled in this recording.
LegendListWarmReportOpen.mp4
iOS: mWeb Safari
MacOS: Chrome / Safari