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:
Thomas Camlong committed 2026-08-07 14:53:05 +02:00
1 parent bc12aba433
commit 31d9e8d582
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(