diff --git a/src/components/transactions/TransactionFilters.tsx b/src/components/transactions/TransactionFilters.tsx index 3395468..5ffa9d9 100644 --- a/src/components/transactions/TransactionFilters.tsx +++ b/src/components/transactions/TransactionFilters.tsx @@ -35,11 +35,15 @@ export function TransactionFilters({ accounts }: { accounts: AccountOption[] }) [pathname, router], ) - // Debounce search → URL - useEffect(() => { - const t = setTimeout(() => push({ search }), 400) - return () => clearTimeout(t) - }, [search, push]) + const pushRef = useRef(push) + useEffect(() => { pushRef.current = push }, [push]) + const searchTimer = useRef | null>(null) + + function handleSearchChange(value: string) { + setSearch(value) + if (searchTimer.current) clearTimeout(searchTimer.current) + searchTimer.current = setTimeout(() => pushRef.current({ search: value }), 400) + } function reset() { setSearch('') @@ -107,7 +111,7 @@ export function TransactionFilters({ accounts }: { accounts: AccountOption[] }) className="h-8 text-sm" placeholder="Search descriptions…" value={search} - onChange={(e) => setSearch(e.target.value)} + onChange={(e) => handleSearchChange(e.target.value)} />