Repository navigation
feat: combine chronological chat LegendList migration - #37
Draft
chrispader wants to merge 1 commit into
Draft
chrispader wants to merge 1 commit into
chrispader wants to merge 1 commit into
Conversation
8 of 38 tasks
chrispader
force-pushed
the
@chrispader/feat/legend-list-chat-migration
branch
from
November 9, 2026 11:21
ce27aed to
008b817
Compare
chrispader
changed the base branch from
@chrispader/chore/legend-list-review-base
to
@chrispader/chore/legend-list-review-base-2026-11-09
November 9, 2026 11:25
Combine the remaining patch refresh, chronological report-actions migration, and pagination loading on current main. Keep explicit end anchoring and support immediate Search pagination transitions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Codex <noreply@openai.com>
chrispader
force-pushed
the
@chrispader/feat/legend-list-chat-migration
branch
from
November 12, 2026 09:03
008b817 to
b0ade42
Compare
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.
Chat history still uses an inverted FlashList, while the remaining LegendList changes are spread across several PRs. I combined the patch refresh, chronological report-actions migration, and pagination loading on current main. The other list migrations remain in their own PRs.
Explanation of Change
This contains #106626, #100733, and #100740, layers 11-13 of the fifteen-part rollout. The earlier preparations, LegendList 3.7.2 upgrade, keyboard initial-state fix, and pagination write-order fix are already in the base. Chat selects the end anchor explicitly, and pagination supports Search transitions that finish immediately. The platform-specific list attributes and native action-sheet scroller stay at their shared boundary so they use the same list ref and positioning lifecycle.
Fixed Issues
$ Expensify#98994
Part of the migration split from Expensify#98270. No separate proposal is linked.
Tests
All platforms, chat history
All platforms, linked messages
Start with a link to an older message in a long chat.
All platforms, editing and recycled rows
Offline tests
QA Steps
Same as Tests and 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
These recordings are from the original migration and pagination PRs.
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
Android: Native
Cold chat open and initial loading
ColdOpenLoading.mp4
iOS: Native, pagination loading
LegendListPaginationIosFinished.mov
🤖 Generated with Codex