TypeScript

useDebounce — Debounced State

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
A React hook that returns a debounced version of any value. Trigger expensive effects (search, autosave, network fetches) on this value instead of the raw input.
TypeScript
Raw
import { useEffect, useState } from 'react';

export function useDebounce<T>(value: T, delay = 300): T {
  const [debounced, setDebounced] = useState(value);
  useEffect(() => {
    const t = setTimeout(() => setDebounced(value), delay);
    return () => clearTimeout(t);
  }, [value, delay]);
  return debounced;
}

// Usage in a search box:
function SearchBar() {
  const [q, setQ] = useState('');
  const dq = useDebounce(q, 300);
  useEffect(() => {
    if (dq) fetch(`/search?q=${encodeURIComponent(dq)}`);
  }, [dq]);
  return <input value={q} onChange={e => setQ(e.target.value)} />;
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.