From bea95f776557e2bfbd3d889cecbdd356ddabb154 Mon Sep 17 00:00:00 2001 From: "@milesibastos" Date: Mon, 6 Oct 2025 15:59:17 -0300 Subject: [PATCH] feat(search): optimize project transformation by skipping unnecessary updates when results haven't changed --- src/components/search/SearchResultsClient.svelte | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/search/SearchResultsClient.svelte b/src/components/search/SearchResultsClient.svelte index 4835f6a3..54b1d67d 100644 --- a/src/components/search/SearchResultsClient.svelte +++ b/src/components/search/SearchResultsClient.svelte @@ -46,12 +46,22 @@ Manages real-time filtering of campaigns without page reloads // Local state let isInitialized = false; let previousFiltersJson = ""; + let previousResultsJson = ""; let campaigns = $state([]); let isTransforming = $state(false); // Transform projects to campaigns asynchronously + // Only transform when results actually change (not on every keystroke) $effect(() => { const projects = $searchResults; + const currentResultsJson = JSON.stringify(projects.map((p) => p.id)); + + // Skip transformation if results haven't changed + if (currentResultsJson === previousResultsJson) { + return; + } + + previousResultsJson = currentResultsJson; async function transformProjects() { isTransforming = true;