Skip to content

Commit aadef29

Browse files
committed
fix: use promptRef.current in setPromptFromTraits to keep stable callback identity
Read from promptRef.current instead of closing over the prompt state variable so the useCallback dependency array no longer includes prompt. This restores the previous ref-based pattern that kept the callback identity stable across keystrokes, preventing unnecessary re-renders of the provider traits menu.
1 parent e89f114 commit aadef29

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

apps/web/src/components/chat/ChatComposer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,8 @@ export const ChatComposer = memo(
868868
// ------------------------------------------------------------------
869869
const setPromptFromTraits = useCallback(
870870
(nextPrompt: string) => {
871-
if (nextPrompt === prompt) {
871+
const currentPrompt = promptRef.current;
872+
if (nextPrompt === currentPrompt) {
872873
scheduleComposerFocus();
873874
return;
874875
}
@@ -879,7 +880,7 @@ export const ChatComposer = memo(
879880
setComposerTrigger(detectComposerTrigger(nextPrompt, nextPrompt.length));
880881
scheduleComposerFocus();
881882
},
882-
[composerDraftTarget, prompt, promptRef, scheduleComposerFocus, setComposerDraftPrompt],
883+
[composerDraftTarget, promptRef, scheduleComposerFocus, setComposerDraftPrompt],
883884
);
884885

885886
const providerTraitsMenuContent = renderProviderTraitsMenuContent({

0 commit comments

Comments
 (0)