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]);