Learn how to reduce API calls by 95% using a custom useDebounce hook for search functionality. Stop hammering your server with every keystroke!
Picture this: a user types "javascript" in your search bar. That's 10 characters = 10 API calls in under 2 seconds. Multiply by 1000 users and your server is crying.
// DON'T DO THIS
const SearchBar = () => {
const [query, setQuery] = useState('');
useEffect(() => {
if (query) {
fetchResults(query); // API call on every keystroke!
}
}, [query]);
return <input onChange={(e) => setQuery(e.target.value)} />;
};
const useDebounce = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const timer = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(timer);
}, [value, delay]);
return debouncedValue;
};
// Usage
const SearchBar = () => {
const [query, setQuery] = useState('');
const debouncedQuery = useDebounce(query, 500);
useEffect(() => {
if (debouncedQuery) {
fetchResults(debouncedQuery); // Only calls API after user stops typing
}
}, [debouncedQuery]);
return <input onChange={(e) => setQuery(e.target.value)} />;
};
Result: 95% fewer API calls, happier servers, smoother UX. Your infrastructure team will thank you!