Stabilize composer model picker renders#2784
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
ChatComposerpass a stableonOpenChangehandler to the memoizedProviderModelPicker.artifacts/react-scan-before/composer-model-picker-before.webmartifacts/react-scan-after/composer-model-picker-after.webmWhy
Manual React hot-spot review found that the memoized composer model picker was still receiving a fresh inline callback on each composer render. Typing in the prompt updates
ChatComposer, and that unstable callback defeatedProviderModelPickermemoization, causing footer model-picker rerenders unrelated to model picker state.react-doctorwas run against the full web app and again in diff mode. It still reports existing broader warnings inChatComposer/nearby files, but this change keeps the model picker callback stable without adding effects or changing UI behavior.UI Changes
No intentional visual change. React Scan was enabled for both recordings above to show the before/after composer typing interaction.
Checklist
Verification:
bun fmtbun lintbun typecheckbunx react-doctor@latest apps/web --diff main --json --fail-on none --offlineNote
Stabilize
ModelPickerre-renders inChatComposerwith memoized handlerReplaces the inline
onOpenChangearrow function onModelPickerwith auseCallback-memoized handlerhandleComposerModelPickerOpenChange. This prevents unnecessary re-renders of the model picker on eachChatComposerrender cycle.Macroscope summarized 8f11be9.