perf: list updates regressions and animated optimization#3409
Merged
isekovanic merged 4 commits intodevelopfrom Feb 18, 2026
Merged
perf: list updates regressions and animated optimization#3409isekovanic merged 4 commits intodevelopfrom
isekovanic merged 4 commits intodevelopfrom
Conversation
# Conflicts: # package/src/components/MessageList/MessageList.tsx
Contributor
SDK Size
|
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.
🎯 Goal
This PR updates addresses some performance degradations which got introduced with V9 and the redesign.
Most notably:
MessageList, since any animated component (even ones done throughcreateAnimatedComponent) have a sideeffect of changing the identity of thestyleproperty on every render. This is not something we can bypass, but the best we can do here is make sure that the list is memoized and the style only changes together with thedataprop. This is still a tiny bit slower than a normalFlatList, however it's a good trade-off; especially since we provide a way to turn it off.Portals are not mounted even when they aren't needed (they should default to normal empty<View />holders which will likely get collapsed when the shadow DOM gets reconciled, but it still avoids setting up native view bindings even if this is supposed to be cheaprenderItembeing stable, we introduce a precomputation ofpreviousandnextitems in the list which makes sure to preserve object identity in order for us to be able to freely use those items in the list. This improves things significantly (by around20msper rerender specifically on very low end devices) while still keeping the stability.🛠 Implementation details
🎨 UI Changes
iOS
Android
🧪 Testing
☑️ Checklist
developbranch