DEV Community

Cover image for useDebounce — Stop Unnecessary API Calls in React Native
Ars Dev
Ars Dev

Posted on

useDebounce — Stop Unnecessary API Calls in React Native

From the author of the Telegram channel REACT NATIVE HUB

Join a growing community of React Native Devs! 👆


When handling search inputs or live updates, debouncing prevents excessive API requests by delaying execution until the user stops typing.

Implementation:

import { useState, useEffect } from "react";

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

  useEffect(() => {
    const handler = setTimeout(() => setDebouncedValue(value), delay);
    return () => clearTimeout(handler);
  }, [value, delay]);

  return debouncedValue;
}

export default useDebounce;
Enter fullscreen mode Exit fullscreen mode

Usage Example:

const [searchTerm, setSearchTerm] = useState("");
const debouncedSearch = useDebounce(searchTerm, 300);

useEffect(() => {
  if (debouncedSearch) {
    fetch(`https://api.example.com/search?q=${debouncedSearch}`)
      .then((res) => res.json())
      .then((data) => console.log(data));
  }
}, [debouncedSearch]);

<TextInput
  placeholder="Search..."
  onChangeText={(text) => setSearchTerm(text)}
/>;
Enter fullscreen mode Exit fullscreen mode

✅ Why Use It?

  • Reduces unnecessary API calls
  • Improves performance in search fields
  • Ensures a smooth user experience

About me: My name is Arsen, and I am a react native developer and owner of the TG channel 👇

🔗 Join TG community for React Native Devs: REACT NATIVE HUB

Top comments (0)