[LegendList 1/7] [No QA] feat: add LegendList foundation - #100732
Conversation
|
|
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 12e46ed8c1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
|
🚧 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.4.76-0 🚀
|
|
🤖 No help site changes are required for this PR. I did not create a docs PR. Why: every file in this PR is internal build/test plumbing with no user-facing surface:
Nothing here changes a screen, a setting, a button label, a workflow, or any behavior a customer can observe — the PR description states it explicitly: "No production consumer changes in this layer." Expensify's help site articles under Worth flagging for the rest of the stack: layers 2–7 do swap production lists (report actions, chat pagination, sidebar, remaining FlatList/FlashList consumers). Those are still internal component swaps, so I would expect no docs changes there either — but if any of them changes visible loading, scrolling, or pagination behavior in a way a customer would notice, ping me on that PR and I'll draft the help site update. @chrispader, there is no linked help site PR to review, since no docs changes are needed. If you disagree and think a specific article needs updating, reply here with which one and I'll open the draft PR. view run · no recording available |
The list migration needs dependency, test, and z-index support before production screens can switch libraries. This PR adds that foundation while leaving every production list unchanged.
@roryabraham @dmkt9
Explanation of Change
Layer 1 of the seven-part LegendList and chat pagination stack. It adds the LegendList dependency, lockfile and cspell entries, generic global Jest mocks for
{LegendList}from@legendapp/list/react-nativeand{AnimatedLegendList}from@legendapp/list/reanimatedin a dedicated setup file, and direct-library LegendList tests. It also adds the sharedsetLegendListItemZIndexhelper and its unit test for the layer 6 sidebar migration and layer 7 draggable list. No production consumer changes in this layer.The branches are managed locally with
gh stack, but these are ordinary upstream PRs because GitHub native stacks do not support cross-fork branches. Review and merge the layers in order. Focused layer 1 diff.Review order: 1. Foundation → 2. Message edit scrolling → 3. Loading skeleton consistency → 4. Report actions → 5. Chat pagination loading → 6. Remaining FlashList consumers → 7. Remaining FlatList consumers and restrictions. Merge and rebase in this order.
Fixed Issues
$ #98994
$ #99202
This PR is part of the migration split from #98270. No approved proposal is linked.
Tests
Not applicable to production flows in this foundation-only PR. No production screen changes in this layer, and no manual platform tests were run. Consumer behavior is covered by the later migration PRs.
Offline tests
Not applicable. This PR adds no network behavior and does not replace any production list. I confirmed that offline and high-traffic-account checks do not apply to this layer.
QA Steps
No staging or production flow exercises these components yet, so this PR is marked [No QA]. Platform and console checks are reviewed as not applicable, not reported as performed.
PR Author Checklist
I reviewed every item for this foundation-only scope. I confirmed that the platform, offline, high-traffic-account, and console checks do not apply. Checked conditional items record that review; they do not claim that I ran platform tests or produced screenshots.
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))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
This PR has no production UI changes or production list consumers.