React

useDebounce Hook

7/25/2025
5 min read

Debouncing is crucial for optimizing performance in scenarios like search inputs or resizing events, where you want to delay execution until the user stops typing or interacting.


import { useState, useEffect } from 'react';

function useDebounce(value, delay) {
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const handler = setTimeout(() => {
      setDebouncedValue(value);
    }, delay);

    return () => {
      clearTimeout(handler);
    };
  }, [value, delay]);

  return debouncedValue;
}

// Usage example:
// const debouncedSearch = useDebounce(searchTerm, 500);
// useEffect(() => { fetchResults(debouncedSearch); }, [debouncedSearch]);