Expenses list performance#56884
Conversation
…expenses-list-perf
…expenses-list-perf
|
@shubham1206agra Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
🚧 @mountiny has triggered a test hybrid app build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
@perunt The frames look super choppy on expense list when scrolling up and down. |
03fea90 to
e23ffa2
Compare
e23ffa2 to
fcccfd7
Compare
|
Okay, I fixed the failing of three of the reassure tests. However, this is expected. Before the test was setup wrong. The We fixed the test for correctness, set the correct If we run the tests with the changes of this PR but use the faulty values we can see that we actually have less renders (which is what this PR aims to achieve): So its actually fine merging this PR with the one failing reassure test! Ready for review |
|
🚧 @mollfpr has triggered a test hybrid app build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! 🧪🧪 |
|
@hannojg Sorry, but the performance is still laggy. Can you check why is it this laggy? |
|
Sure!
I can try to fix the performance in this PR, or we go ahead with this one as it slightly improves performance, and then a follow up PR that fixes the problem entirely (so maybe that would be easier for review?) |
|
@hannojg The problem is performance looks more laggy than it was on start of the PR. |
|
Alright, thanks for the info, we will double check! |
…lo/expensify-app-fork into @perunt/expenses-list-perf
…expenses-list-perf
|
I'm measuring the difference to analyze the numbers since I’m noticing a boost, and it can be hard to judge by eye. I’ll provide you with the numbers soon. Also, tomorrow morning I’ll be able to test it on a super low-end device to confirm the result |
…expenses-list-perf
|
I tested scrolling performance under the same conditions:
Comparing both implementations side by side, I noticed a significant reduction in whitespace compared to the main branch. That said, there’s still room for improvement. As I mentioned earlier, this is just the first step in optimizing performance for Expenses - not the final version. The attached screen recording shows the entire test, making it easy to compare both versions Old Implementation Old_r_480.movNew Implementation New_r_480.mov@shubham1206agra what method are you using to compare the old and new implementations? Could you share some details on where exactly it performs worse? Is it related to scroll smoothness, whitespace, or jumping issues? Thanks in advance! |
|
What's the latest on this one? it's been stale for a few weeks now. |
This PR was on hold because the screen was being migrated to a different list component (SectionList was replaced with FlashList) |
|
Closing in favor of #61185 |

It's not a complete fix, but just another enhancement that lets you see better performance in the Expenses list.
Explanation of Change
Fixed Issues
$ #55562
PROPOSAL:
Tests
Offline tests
QA Steps
Test the multiselect feature
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.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: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop