fix: infinite render loop in media recorders by adding missing depend… #1090
+2
−2
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 pull request fixes a severe performance issue where the
AudioMessageRecorderandVideoMessageRecordercomponents were entering an infinite render loop, leading to high CPU usage and unstable UI behavior.Root Cause
The
handleMountfunction in both components was defined usinguseCallbackwithout a dependency array.In React:
useCallbackwithout dependencies returns a new function reference on every render.handleMountas a dependency of auseEffectthat invokes it.This caused the following loop:
handleMountfunction reference is createduseEffectdetects a dependency change and runshandleMountexecutesThis issue was especially noticeable when typing in the
ChatInputor during UI state updates.Closes #1083
Video/Screenshots
PR Test Details
Note: The PR will be ready for live testing at https://rocketchat.github.io/EmbeddedChat/pulls/pr-<pr_number> after approval. Contributors are requested to replace
<pr_number>with the actual PR number.