-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
LOW: Migrate the main chat list to FlashList #33725
Comments
Triggered auto assignment to @garrettmknight ( |
I expect this to be on HOLD until sometime in February, if not later, so I'm moving this back to monthly |
cc @muttmuure adding this to the New Expensify performance improvements project. I acknowledge that the problem statement is a bit of a reverse-solution but I think it's a good bet that this will provide substantial performance improvements, as FlashList is just much better for performance than FlatList. We've established that elsewhere where we've migrated to FlashList |
Still on HOLD |
on HOLD for comment linking |
HOLD, but could come off HOLD soon. Unclear if we'll prioritize |
@roryabraham we good to take this off hold? If so, where do you think it might fit in a wave, if any? I'm not 100% on the significance of this migration beyond general, better performance. |
Good question. As far as I know there's no significance beyond general, better performance of chat screens. |
@roryabraham, you’re absolutely right about the performance perks we’d get with FlashList—better speed, faster rendering, the whole deal. But there's a bit of a twist when it comes to the bidirectional scrolling we need. Right now, adding that feature to FlashList can lead to some choppy experiences. It might slow us down a bit to get that smoothed out. There is a PR with the implementation of a bidirectional list, but it is a bit stale (Shopify/flash-list#824) |
Still on hold. |
@roryabraham any idea where this fits priority wise? |
I think this can come off hold now? |
@roryabraham can this come of hold? |
@janicduplessis is going to investigate this |
I will take this :) |
After first investigation of this there are 2 main things we need to implement:
For |
I'm headed on parental leave. @mountiny going to reassign to you as this is part of #newdot-quality. |
@janicduplessis How is this one looking? What are the next steps and ETA? |
Picking up work on this this week. Will provide another update and ETA soon. |
Update: I abandoned the maintainVisibleContentPosition route as it isn't really compatible with how recyclerlistview handles virtualization. Instead I am currently looking at using a redesigned version of flash-list / recyclerlistview, the changes made are described in details here (really suggest going through it, very interesting). In summary it changes the virtualization algorithm to have first class support for keeping the visible content position. I managed to get it working in expensify app, the main work needed was to get it working on new arch and add support for onStartReached. It seem to work really well except for a pretty big flicker when it adjusts the position of items in one case. I have some ideas on how to fix this. I am pretty optimistic that this is a great solution and will continue working in that direction. Will post some demo and code later. |
@janicduplessis how is this going? |
I've been working on some other tasks, but should be good to come back on this soon. |
HOLD on:
Problem
The main chat list is one of the most, if not the most important component in our app. If you scroll far or fast on this list, you may see frames drop. Furthermore, there are some known performance issues with this list (example). We have already migrated almost every other virtualized list in our app from FlatList to FlashList, because its performance is much better.
Solution
Let's build support for bidirectional pagination in FlashList, then enable it on the main chat list in E/App.
The text was updated successfully, but these errors were encountered: