[HOLD on #100734] [LegendList 7/7] feat: migrate remaining FlatLists and restrict legacy imports - #100736
Draft
chrispader wants to merge 11 commits into
Draft
Conversation
Contributor
|
|
This was referenced Sep 9, 2026
chrispader
force-pushed
the
@chrispader/feat/legend-list-flatlist-migration
branch
from
September 9, 2026 19:24
61719a6 to
edb8642
Compare
This was referenced Sep 9, 2026
chrispader
force-pushed
the
@chrispader/feat/legend-list-flatlist-migration
branch
from
September 9, 2026 20:24
edb8642 to
7cfb37a
Compare
chrispader
force-pushed
the
@chrispader/feat/legend-list-flatlist-migration
branch
2 times, most recently
from
September 10, 2026 10:01
eaf04d1 to
ee9b401
Compare
chrispader
force-pushed
the
@chrispader/feat/legend-list-flatlist-migration
branch
from
September 10, 2026 11:11
ee9b401 to
5f03635
Compare
chrispader
force-pushed
the
@chrispader/feat/legend-list-flatlist-migration
branch
from
September 10, 2026 11:23
5f03635 to
788915e
Compare
This was referenced Sep 10, 2026
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.
Several screens and native drag-and-drop still use FlatList after the FlashList migration. This PR moves the remaining application lists to direct LegendList package imports and adds lint restrictions to prevent new FlatList or FlashList usage.
@roryabraham @dmkt9
Explanation of Change
Layer 7 of the seven-part LegendList and chat pagination stack. Consumers import
{LegendList}from@legendapp/list/react-nativeand{AnimatedLegendList}from@legendapp/list/reanimated, with their types coming from the package exports. This layer covers reactions, autocomplete, static search, filter chips, trip previews, training and attachment carousels, receipt previews, and the native draggable list. It removes unused list components and the FlatList-backed drag dependency and patches while retaining the keyboard context and render-queue helper still referenced elsewhere. Regression tests cover restricted imports, carousel state and paging, and native drag activation, cancellation, and autoscroll.This draft depends on layer 6 and targets upstream
main, so GitHub's Files changed tab includes earlier layers until they merge. Review only the focused layer 7 diff. These are ordinary upstream PRs because GitHub native stacks do not support cross-fork branches; their branches are managed locally withgh stack. Rebase this branch after its dependencies land.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 draft is part of the migration split from #98270. No approved proposal is linked.
Tests
Manual platform checks have not been run; the PR remains a draft.
Before marking ready:
Offline tests
Not yet tested manually. Reorder cached waypoints and inspect queued receipt previews offline, then reconnect and verify the saved order and pending receipts.
QA Steps
Repeat the manual steps above on native Android/iOS and supported web platforms. Native drag-and-drop needs device verification before this draft is ready.
PR Author Checklist
### 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
Android: Native
Not recorded yet; this PR is a draft.
Android: mWeb Chrome
Not recorded yet; this PR is a draft.
iOS: Native
Not recorded yet; this PR is a draft.
iOS: mWeb Safari
Not recorded yet; this PR is a draft.
MacOS: Chrome / Safari
Not recorded yet; this PR is a draft.