use-debounce
Tiny, tree-shakeable React hooks for debouncing and throttling values and callbacks.
Repository Health
Technical Analysis
use-debounce is a sub-kilobyte collection of React hooks that bring debouncing and throttling to values and callbacks without ceremony. Its API is intentionally modeled on the lodash/underscore debounce and throttle functions, so the mental model transfers directly, while adapting cleanly to React’s render and effect lifecycle.
The library exposes three hooks — useDebounce for values, useDebouncedCallback for functions, and useThrottledCallback for rate-limiting — each returning control helpers such as cancel, flush, and isPending. It is fully typed, server-rendering friendly, and ships with support for maxWait, leading, and trailing edge behavior.
What You Get
- Three focused hooks:
useDebounce(values),useDebouncedCallback(functions), anduseThrottledCallback(rate limiting). - Control helpers on every debounced function —
cancel,flush, andisPending— to manage in-flight invocations. - Configurable timing via
maxWait,leading, andtrailingoptions, matching the lodash debounce semantics developers already know. - First-class TypeScript types and a tree-shakeable, sub-1 KB bundle that is safe for server-side rendering.
Common Use Cases
- Debouncing a search input so a network request only fires after the user stops typing.
- Throttling scroll or resize handlers to avoid excessive re-renders and layout work.
- Flushing a pending debounced save on component unmount so unsaved changes are persisted.
Under The Hood
Architecture — The library is layered around a single core hook. useDebouncedCallback.ts holds all timing logic (timers, maxWait accounting, leading/trailing edges, and the cancel/flush/isPending control functions), memoized with useMemo and kept current across renders via refs. useDebounce.ts builds on it by storing the latest value in a ref and forcing a re-render when the debounced setter fires, while useThrottledCallback.ts is a thin wrapper that simply calls useDebouncedCallback with maxWait equal to the wait interval. index.ts re-exports the three hooks plus their shared TypeScript types, so all public surface derives from one well-tested engine.
Tech Stack — Written entirely in TypeScript targeting React (declared only as a peer dependency, react: '*', with zero runtime dependencies of its own). It builds with microbundle into CommonJS, ESM, and UMD outputs, is tested with Jest and Testing Library under a jsdom environment, and enforces a strict sub-1 KB budget per entry point using size-limit. Linting is handled by ESLint with the standard config and Prettier.
Code Quality — Quality is high for a micro-library. Three substantial test files (useDebounce.test.tsx, useDebouncedCallback.test.tsx, useThrottledCallback.test.tsx, together over 40 KB) cover timing edges, cancellation, flushing, pending state, and server rendering. The public interfaces are fully typed and documented with JSDoc, naming mirrors the familiar lodash vocabulary, and the ref-based implementation carefully avoids stale closures across renders.
API Design — Developer experience is a core strength. Adopting lodash’s debounce/throttle naming and options (maxWait, leading, trailing) means the API is instantly familiar, and returning [value, controls] or a callable augmented with cancel/flush/isPending keeps usage terse. Getting started requires a single import and one hook call, and the README is dense with runnable CodeSandbox examples for each scenario.
Used by 40 apps in this directory
Rowy
Databases · Low Code Platforms
Manage Firestore data in an Airtable-like spreadsheet UI and build Cloud Functions workflows directly in your browser—on your own GCP project.
shaper
Analytics · Data Engineering
Build analytics dashboards, reports, and customer-facing analytics by writing pure SQL — powered by DuckDB and designed for self-hosted deployment.
Skyvern
AI Agents · Automation
Skyvern (YC S2023) automates browser-based workflows by pairing LLMs with computer vision, letting agents click, fill, and extract data on sites they've never seen, without brittle XPath selectors that break on every layout change.
Hexclave
Authentication · Developer Tools
The open-source user infrastructure platform — authentication, teams, payments, emails, analytics, and more on a single unified user model.
Supabase
Authentication · Databases · Developer Tools
The open-source Postgres development platform that replaces Firebase with authentication, real-time APIs, edge functions, storage, and vector embeddings — all built on PostgreSQL.
supermemory
AI Development · AI Memory · Note Taking
The state-of-the-art memory and context engine for AI agents — ranked #1 on all three major AI memory benchmarks.
Tersa
AI Agents · AI Development
An open-source visual canvas for building AI workflows by connecting nodes across 35+ model providers with drag-and-drop simplicity.
Tolgee
Developer Tools
In-context localization platform that lets developers and translators edit app strings directly in the running application, with AI-powered machine translation and framework SDKs for React, Angular, Vue, and Svelte.
twenty
CRM
The open-source CRM you build, ship, and version like the rest of your stack — with customizable objects, AI agents, and a TypeScript SDK.