fix: memory leak in message store using cap and virtualization #1111
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.
This PR fixes a critical memory leak where the message store could grow without bounds in high-volume channels, eventually leading to application crashes due to out-of-memory errors.
The issue is resolved using a two-part approach:
Closes #1092
Problem
Solution
Changes Made
1. Message Store (
packages/react/src/store/messageStore.js)setMessagesandupsertMessage.2. Virtualized Rendering (
packages/react/src/views/MessageList/MessageList.js).map()rendering with react-virtuoso.alignToBottomto preserve standard chat behavior.3. Scroll Management (
packages/react/src/views/ChatBody/ChatBody.js)ChatBodyto delegate scroll handling to Virtuoso.loadMoreMessagesto Virtuoso’sstartReachedcallback to support seamless history loading up to the capped limit.