-
Notifications
You must be signed in to change notification settings - Fork 86
perf: preserve references of unchanged collection items v2 #707
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perf: preserve references of unchanged collection items v2 #707
Conversation
|
failing perf tests are expected |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2025-12-02.at.23.56.59.movAndroid: mWeb ChromeScreen.Recording.2025-12-02.at.23.51.49.moviOS: HybridAppScreen.Recording.2025-12-02.at.23.55.18.moviOS: mWeb SafariScreen.Recording.2025-12-02.at.23.47.55.movMacOS: Chrome / SafariScreen.Recording.2025-12-02.at.22.37.30.movScreen.Recording.2025-12-02.at.22.39.42.movScreen.Recording.2025-12-02.at.22.43.33.movScreen.Recording.2025-12-02.at.22.46.05.mov |
|
@dukenv0307 could you please post those bugs in #expensify-bugs? |
|
|
@JS00001 oh damn, I switched to new Macbook last week and forgot 🤦 Let me fix this |
4c8a2b5 to
15fab94
Compare
fa3b8b4 to
a493500
Compare
|
Huh, modifying git history is insane, but I think it should be good now 😅 |
I reported the first bug here, but for the second one I can't reproduce. |
Revert Merge pull request #707
…e-references-of-unchanged-collection-items perf: preserve references of unchanged collection items v2


Details
Another attempt after reverting #693.
When
setCollection/mergeCollection/partialSetCollectionare called fromOpenAppandReconnectApp, it should preserve references for all the items that are unchanged to reduce the amount of the re-renders of the components connected to collection items that did not change.$ Expensify/App#72679
Related Issues
Expensify/App#74385
Expensify/App#74405
Expensify/App#74406
Automated Tests
Added required unit tests
Manual Tests
Test 1
Test 2 - Expensify/App#74385
Test 3 - Expensify/App#74406
Test 4 - Expensify/App#74405
8.Create another expense in the same report
Author Checklist
### Related Issuessection aboveTestssectiontoggleReportand notonIconClick)myBool && <MyComponent />.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)Avataris modified, I verified thatAvataris working as expected in all cases)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.mov
Android: mWeb Chrome
iOS: Native
ios.mov
iOS: mWeb Safari
ios-web.mov
MacOS: Chrome / Safari
web.mov
MacOS: Desktop
desktop.mov