Reactopia
BrowseDiscoverSVG toolsAIChangelogAboutContact
BrowseDiscoverSVG toolsAI
Created by

Yash Mahajan


Reactopia

Open React tooling: components, SVG animation, and a growing directory. Built by Yash Mahajan.

Product

  • Components
  • Discover
  • SVG tools
  • AI direction

Legal

  • Privacy Policy
  • Terms of Use
  • Cookie Policy
  • License
  • Credits
  • Contact

Project

  • About
  • Changelog
  • GitHub
  • X

© 2026 Reactopia. All rights reserved.

PrivacyTermsCookies

Getting Started

IntroductionContributing

Components

SeparatorUiButtonBadgeStackUiInputIn devUiSelectIn devUiTextareaIn dev

Hooks

useDebounceuseLocalStorageuseMediaQueryuseMounted

Utilities

cngroupBysleep
Components
useDebounce

useDebounce

Debounce a value for search fields and autosave.

LivehookReact, Web, React NativeUpdated 2026-10-07MIT LicenseSource on GitHubReport Issue
Dependencies:npm install react
StackuseLocalStorage

Introduction

Delay updating a value until the user stops typing (or until a timer elapses). Handy for search inputs and autosave.

Platform: React (web and native). Dependencies: react only.

Hook

import { useEffect, useState } from "react";
export function useDebounce<T>(value: T, delayMs = 300): T {
const [debounced, setDebounced] = useState(value);
useEffect(() => {
const id = window.setTimeout(() => setDebounced(value), delayMs);
return () => window.clearTimeout(id);
}, [value, delayMs]);
return debounced;
}

For React Native, replace window.setTimeout / window.clearTimeout with setTimeout / clearTimeout from the global scope.

Example

tsx
const [query, setQuery] = useState("");
const debouncedQuery = useDebounce(query, 400);
useEffect(() => {
if (!debouncedQuery) return;
fetchResults(debouncedQuery);
}, [debouncedQuery]);

Footer

Tune delayMs per UX: search fields often use 250–500 ms.