react-use

Over 100 ready-made React Hooks covering sensors, UI, animations, side effects, lifecycles, and state — batteries included.

Library
npm
v17.6.1
44,017stars
Unlicense

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
66/100Good
Development Activity36
Maintenance60
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
78/100Good
Architecture74
Code Quality78
Innovation76
Learning Curve85

react-use is a large, community-maintained library of more than 100 custom React Hooks that cover almost everything a typical application needs beyond React’s built-in useState and useEffect — device sensors like battery and geolocation, UI helpers like click-away and hover detection, animation hooks like useRaf and useSpring, side-effect utilities like debounce, throttle, and local/session storage, and state-management factories like createReducer and createStateContext.

Rather than reinventing common hook patterns in every project, teams pull in exactly the hooks they need — the library is organized by category (Sensors, UI, Animations, Side-effects, Lifecycles, State) with individual documentation pages and live demos for each hook, making it a reliable substitute for dozens of small bespoke hooks that would otherwise be hand-rolled and maintained per project.

What You Get

  • 100+ individually documented React Hooks spanning sensors, UI, animations, side-effects, lifecycles, and state management
  • Zero-config imports — pull in only the specific hooks you use via import { useToggle } from 'react-use'
  • TypeScript-first source with full type declarations shipped in both CommonJS (lib/) and ES module (esm/) builds
  • Storybook-powered live demos and per-hook markdown docs under docs/ for nearly every export
  • State-sharing factories (createReducerContext, createStateContext, createGlobalState) for cross-component state without pulling in a full state library

Common Use Cases

  • Tracking device/browser sensors (battery, geolocation, network state, window size) in dashboards and PWAs
  • Debouncing/throttling user input and async calls with useDebounce, useThrottle, and useAsyncFn
  • Persisting and syncing component state to localStorage/sessionStorage with useLocalStorage/useSessionStorage
  • Building UI interactions like click-away dismissal, hover tracking, and long-press gestures without new dependencies
  • Sharing state across components via factory hooks instead of adopting Redux or another global store

Under The Hood

Architecture react-use is a flat collection of ~115 independent hook modules under src/, each exporting a single default hook (e.g. src/useLocalStorage.ts, src/useDebounce.ts) plus a src/factory/ directory (createReducer.ts, createStateContext.ts, createGlobalState.ts, createHTMLMediaHook.ts) for hooks that need to be parameterized before use, and a src/misc/ directory (util.ts, hookState.ts, isDeepEqual.ts) holding shared internals like the isBrowser guard and noop. Everything is re-exported through a single flat barrel file, src/index.ts, so consumers get one import surface (import { useX } from 'react-use') regardless of how the implementation is organized internally — there is no internal dependency graph between hooks beyond a handful that compose smaller hooks (useDebounce wraps useTimeoutFn, for instance).

Tech Stack The library targets ES5/CommonJS via tsc (tsconfig.json: target: es5, strict: true, noUnusedLocals/noUnusedParameters enforced) and additionally emits an ES module build (esm/) with a second tsc -m esNext pass, so consumers can pick whichever module format their bundler prefers. react and react-dom are declared as peer dependencies ("*"), keeping the package usable across a wide range of React versions, while runtime dependencies are kept deliberately small and single-purpose (js-cookie, screenfull, fast-deep-equal, throttle-debounce, nano-css, resize-observer-polyfill). Builds, linting, and releases are automated with semantic-release, husky pre-push hooks (lint && clean && build && test), and Storybook for interactive documentation.

Code Quality The tests/ directory mirrors src/ closely with 77 test files, one per hook or factory (e.g. useAsync.test.tsx, createReducer.test.ts), run through Jest with both a browser and an SSR/Node config (jest.config.ts / jest.config.node.ts) to catch server-rendering regressions in browser-only hooks. TypeScript strict mode plus ESLint with eslint-plugin-react-hooks enforces rules-of-hooks compliance, though a number of hooks carry explicit eslint-disable-next-line react-hooks/rules-of-hooks comments where conditional early-returns (e.g. the isBrowser guard in useLocalStorage) are intentional and safe. Error handling favors silent, documented fallbacks over throwing — useLocalStorage’s localStorage calls are wrapped in try/catch with comments explaining private-mode/quota failure cases — a defensible pattern for a browser-utility library, though it does mean failures are swallowed rather than surfaced to the caller.

API Design The library’s core design choice is one hook per concern with a small, predictable signature — most hooks return either a single value, a [state, setState] tuple mirroring useState, or a [state, actions] pair, which keeps the learning curve low once a developer has used two or three hooks from the set. Naming is consistent and discoverable (use + noun/verb, create + noun for factories), and nearly every hook has a matching doc page under docs/ with a live CodeSandbox/Storybook demo, which meaningfully lowers the cost of evaluating whether a given hook fits a specific need before adopting it.

Used by 30 apps in this directory

TypeScript
99%
Other

Activepieces

Automation · AI Assistants

23,887

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
65
Dependency
Built with
TypeScript99%
Updated today
TypeScript
97%
AGPL 3.0

Bigcapital

Invoicing Finance

3,846

Self-hostable double-entry accounting platform with invoicing, inventory, multi-currency, and real-time financial reporting for small and medium businesses.

View details
91
Repo Health
77
Technical
64
Dependency
Built with
TypeScript97%
Updated yesterday
TypeScript
96%
Other

Cal.diy

Scheduling

47,796

The 100% MIT-licensed, community-driven scheduling platform — self-host your own booking infrastructure with no enterprise strings attached.

View details
93
Repo Health
86
Technical
66
Dependency
Built with
TypeScript96%
Updated 1 weeks ago
JavaScript
99%
Other

ChartBrew

Analytics · Databases

4,041

Open-source reporting platform to build live dashboards from SQL, NoSQL, APIs, and SaaS tools with an AI assistant that creates charts from natural language.

View details
90
Repo Health
83
Technical
65
Dependency
Built with
JavaScript99%
Updated 6 days ago
TypeScript
97%
Apache 2.0

Cline

AI Code Assistants

66,453

An open-source AI coding agent that lives in your editor and terminal — reads and edits your codebase, runs commands, browses the web, and requires human approval for every action by default.

View details
90
Repo Health
74
Technical
67
Dependency
Built with
TypeScript97%
Updated today
JavaScript
90%
Other

CodeSandbox

Code Editors · Developer Tools

13,633

Instantly ready browser-based IDE that runs full npm dependency resolution and transpilation entirely client-side, with no server needed.

View details
65
Repo Health
76
Technical
63
Dependency
Built with
JavaScript90%
Updated 1 months ago
TypeScript
45%
Other

Convex Backend

Developer Tools · Databases

12,394

Open-source reactive database that lets developers build live-updating apps with pure TypeScript, strong consistency, and real-time subscriptions—no separate API layer required.

View details
88
Repo Health
82
Technical
70
Dependency
Built with
TypeScript45%
Rust43%
Updated today
TypeScript
98%
Other

Formbricks

Forms Surveys · Marketing · Analytics

12,790

Open-source experience management platform for in-app, website, email, and link surveys — privacy-first and fully self-hostable.

View details
93
Repo Health
81
Technical
73
Dependency
Built with
TypeScript98%
Updated today
TypeScript
99%
AGPL 3.0

fountain-ink

Blogging

64

A self-hostable, decentralized blogging platform built on Lens Protocol — own your content, audience, and distribution forever.

View details
26
Repo Health
66
Technical
69
Dependency
Built with
TypeScript99%
Updated 6 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search