fix: clear scroll-to-citation timers on panel close/unmount#1233
Merged
MODSetter merged 1 commit intoMODSetter:devfrom Apr 16, 2026
Merged
fix: clear scroll-to-citation timers on panel close/unmount#1233MODSetter merged 1 commit intoMODSetter:devfrom
MODSetter merged 1 commit intoMODSetter:devfrom
Conversation
Store setTimeout IDs in a ref and clear them when the source detail panel closes or unmounts, preventing state updates on unmounted components. Fixes MODSetter#1092
|
@mvanhorn is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Review by RecurseML
🔍 Review performed on ff4e0f9..008c464
✨ No bugs found, your code is sparkling clean
✅ Files analyzed, no issues (1)
• surfsense_web/components/new-chat/source-detail-panel.tsx
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.
Stores scroll timer IDs in a ref and clears them on panel close/unmount.
Description
source-detail-panel.tsxfires 6setTimeoutcalls at staggered delays (50-1050ms) to scroll to a cited chunk. These timer IDs were never tracked. Closing the panel mid-scroll left dangling timers callingsetHasScrolledToCitedandsetActiveChunkIndexon an unmounted component.This PR adds a
scrollTimersRefto collect all timer IDs, then clears them in the existinguseEffectthat handles panel close. The cleanup function also runs on unmount.Motivation and Context
Matches the exact fix described in #1092. The three changes:
scrollTimersRefdeclaration (line 133)citedChunkRefCallback(lines 318-332)useEffect+ return cleanup (lines 343-352)FIX #1092
Screenshots
N/A - internal cleanup, no visual change.
API Changes
Change Type
Testing Performed
TypeScript compilation passes with zero errors in the modified file.
Checklist
This contribution was developed with AI assistance (Codex).
High-level PR Summary
This PR fixes a memory leak issue where multiple
setTimeouttimers were not being cleaned up when the source detail panel is closed or unmounted. The fix introduces ascrollTimersRefto track all timer IDs created during the scroll-to-citation animation (6 timers total with staggered delays), and ensures they are properly cleared when the panel closes or when the component unmounts. This prevents state updates (setHasScrolledToCitedandsetActiveChunkIndex) from being called on an unmounted component.⏱️ Estimated Review Time: 5-15 minutes
💡 Review Order Suggestion
surfsense_web/components/new-chat/source-detail-panel.tsx