fix: prevent infinite render loop in assistant telemetry
RequestTelemetry derived thread message metadata inside the useAuiState selector with messages.map(), returning a new array on every render. useSyncExternalStore treats the new reference as a changed snapshot, causing an infinite re-render loop (React error #185) while an assistant message streams. Select the stable messages reference and memoize the metadata derivation instead.
This commit is contained in:
1 file changed
+2
-1
@@ -923,7 +923,8 @@ const RequestTelemetry = () => {
|
||||
const metadata = useAuiState((state) => state.message.metadata);
|
||||
const messageId = useAuiState((state) => state.message.id);
|
||||
const threadId = useAuiState((state) => state.threadListItem.remoteId);
|
||||
const threadMessageMetadata = useAuiState((state) => state.thread.messages.map((message) => message.metadata));
|
||||
const threadMessages = useAuiState((state) => state.thread.messages);
|
||||
const threadMessageMetadata = useMemo(() => threadMessages.map((message) => message.metadata), [threadMessages]);
|
||||
const persistedTelemetry = getAssistantTelemetry(metadata);
|
||||
const persistedUsage = getAssistantUsage(metadata);
|
||||
const generationQuery = clientApi.assistant.getGenerationTelemetry.useQuery(
|
||||
|
||||
Reference in new issue
Block a user