From cde10485d4d4c07a2fd21a2deb2a707c36a028c7 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 12 Apr 2026 12:18:51 +0700 Subject: [PATCH] Memoize agent object in AgentPanelBody to prevent WebStreamViewport re-renders on keystroke --- packages/app/src/panels/agent-panel.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/app/src/panels/agent-panel.tsx b/packages/app/src/panels/agent-panel.tsx index f0655c733..8b7e97bf3 100644 --- a/packages/app/src/panels/agent-panel.tsx +++ b/packages/app/src/panels/agent-panel.tsx @@ -483,16 +483,19 @@ function AgentPanelBody({ isPendingCreateForPanel && (!authoritativeStatus || isAuthoritativeBootstrapping); const canFinalizePendingCreate = Boolean(authoritativeStatus) && !isAuthoritativeBootstrapping; - const agent: AgentScreenAgent | null = - agentState.serverId && agentState.id && agentState.status && agentState.cwd - ? { - serverId: agentState.serverId, - id: agentState.id, - status: agentState.status, - cwd: agentState.cwd, - projectPlacement, - } - : null; + const agent = useMemo( + () => + agentState.serverId && agentState.id && agentState.status && agentState.cwd + ? { + serverId: agentState.serverId, + id: agentState.id, + status: agentState.status, + cwd: agentState.cwd, + projectPlacement, + } + : null, + [agentState.serverId, agentState.id, agentState.status, agentState.cwd, projectPlacement], + ); const placeholderAgent: AgentScreenAgent | null = useMemo(() => { if (!shouldUseOptimisticStream || !agentId) {