From 597883a1794f0f00e27fa70fc01d4ab31db7b9e8 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:46:05 +0100 Subject: [PATCH] perf: use structuredClone and fast-path comparison in UserMessage (#22098) Same optimization as the merged ResponseMessage PR: replace JSON.parse(JSON.stringify()) with structuredClone and add an O(1) fast-path check on content before falling back to full JSON.stringify comparison. --- src/lib/components/chat/Messages/UserMessage.svelte | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index 0c512e8f2..201c04de5 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -52,10 +52,15 @@ let messageEditTextAreaElement: HTMLTextAreaElement; let editScrollContainer: HTMLDivElement; - let message = JSON.parse(JSON.stringify(history.messages[messageId])); + let message = structuredClone(history.messages[messageId]); $: if (history.messages) { - if (JSON.stringify(message) !== JSON.stringify(history.messages[messageId])) { - message = JSON.parse(JSON.stringify(history.messages[messageId])); + const source = history.messages[messageId]; + if (source) { + if (message.content !== source.content) { + message = structuredClone(source); + } else if (JSON.stringify(message) !== JSON.stringify(source)) { + message = structuredClone(source); + } } }