Optimize model picker search rerenders#3619
Draft
cursor[bot] wants to merge 1 commit into
Draft
Conversation
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
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.
What Changed
ModelPickerContentsubscribed only to the normalized search query, so whitespace-only edits do not invalidate the picker/list tree.Why
React Doctor highlighted a broader React performance backlog, and a manual React Scan pass found a measurable model-picker hotspot: typing whitespace in the model search box changed no visible rows but still rerendered the picker content and row area. This change keeps behavior predictable while avoiding those no-op parent/list renders.
UI Changes
No visual UI change. React Scan recordings captured with the temporary harness and toolbar enabled:
react_scan_model_picker_before.mp4— whitespace typing triggered React Scan highlights/rerenders in the picker path.react_scan_model_picker_after.mp4— the same whitespace typing produced no picker/list rerender highlights; counts stayed atModelPickerContent: 2,ModelListRow: 19.Checklist
Validation:
react-doctor --verbose -y --offline --category performance --blocking nonevp checkvp run typecheckNote
Reduce rerenders in model picker search by memoizing the search input component
ModelPickerSearchInputcomponent in ModelPickerContent.tsx to prevent unnecessary rerenders.normalizeModelSearchQueryand skips callingonSearchQueryChangewhen the normalized value is unchanged.submitHighlightedModelcallback and wires Enter key submission through the new child component.Macroscope summarized 6d9e4a1.