libreact.
npm i react-use
useBattery — tracks device battery state. useGeolocation — tracks geo location state of user's device. useHover and useHoverDirty — tracks mouse hover state of some element. useHash — tracks location hash value. useIdle — tracks whether user is being inactive.useIntersection — tracks an HTML element's intersection. useKey, useKeyPress, useKeyboardJs, and useKeyPressEvent — track keys. useLocation and useSearchParam — tracks page navigation bar location state.useLongPress — tracks long press gesture of some element.useMedia — tracks state of a CSS media query. useMediaDevices — tracks state of connected hardware devices.useMotion — tracks state of device's motion sensor.useMouse and useMouseHovered — tracks state of mouse position. useMouseWheel — tracks deltaY of scrolled mouse wheel. useNetworkState — tracks the state of browser's network connection. useOrientation — tracks state of device's screen orientation.usePageLeave — triggers when mouse leaves page boundaries.useScratch — tracks mouse click-and-scrub state.useScroll — tracks an HTML element's scroll position. useScrolling — tracks whether HTML element is scrolling.useStartTyping — detects when user starts typing.useWindowScroll — tracks Window scroll position. useWindowSize — tracks Window dimensions. useMeasure and useSize — tracks an HTML element's dimensions. createBreakpoint — tracks innerWidthuseScrollbarWidth — detects browser's native scrollbars width. usePinchZoom — tracks pointer events to detect pinch zoom in and out status. useAudio — plays audio and exposes its controls. useClickAway — triggers callback when user clicks outside target area.useCss — dynamically adjusts CSS.useDrop and useDropArea — tracks file, link and copy-paste drops.useFullscreen — display an element or video full-screen. useSlider — provides slide behavior over any HTML element. useSpeech — synthesizes speech from a text string. useVibrate — provide physical feedback using the Vibration API. useVideo — plays video, tracks its state, and exposes playback controls. useRaf — re-renders component on each requestAnimationFrame.useInterval and useHarmonicIntervalFn — re-renders component on a set interval using setInterval.useSpring — interpolates number over time according to spring dynamics.useTimeout — re-renders component after a timeout.useTimeoutFn — calls given function after a timeout. useTween — re-renders component, while tweening a number from 0 to 1. useUpdate — returns a callback, which re-renders component when called.
useAsync, useAsyncFn, and useAsyncRetry — resolves an async function.useBeforeUnload — shows browser alert when user try to reload or close the page.useCookie — provides way to read, update and delete a cookie. useCopyToClipboard — copies text to clipboard.useDebounce — debounces a function. useError — error dispatcher. useFavicon — sets favicon of the page.useLocalStorage — manages a value in localStorage.useLockBodyScroll — lock scrolling of the body element.useRafLoop — calls given function inside the RAF loop.useSessionStorage — manages a value in sessionStorage.useThrottle and useThrottleFn — throttles a function. useTitle — sets title of the page.usePermission — query permission status for browser APIs.
useEffectOnce — a modified useEffect hook that only runs once.useEvent — subscribe to events.useLifecycles — calls mount and unmount callbacks.useMountedState and useUnmountPromise — track if component is mounted.usePromise — resolves promise only while component is mounted.useLogger — logs in console as component goes through life-cycles.useMount — calls mount callbacks.useUnmount — calls unmount callbacks.useUpdateEffect — run an effect only on updates.useIsomorphicLayoutEffect — useLayoutEffect that that works on server.useDeepCompareEffect, useShallowCompareEffect, and useCustomCompareEffect
createMemo — factory of memoized hooks.createReducer — factory of reducer hooks with custom middleware.createReducerContext and createStateContext — factory of hooks for a sharing state between components.useDefault — returns the default value when state is null or undefined.useGetSet — returns state getter get() instead of raw state.useGetSetState — as if useGetSet and useSetState had a baby.useLatest — returns the latest state or propsusePrevious — returns the previous state or props. usePreviousDistinct — like usePrevious but with a predicate to determine if previous should update.useObservable — tracks latest value of an Observable.useRafState — creates setState method which only updates after requestAnimationFrame. useSetState — creates setState method which works like this.setState. useStateList — circularly iterates over an array. useToggle and useBoolean — tracks state of a boolean. useCounter and useNumber — tracks state of a number. useList ~and useUpsert~ — tracks state of an array. useMap — tracks state of an object. useSet — tracks state of a Set. useQueue — implements simple queue.useStateValidator — tracks state of an object. useStateWithHistory — stores previous state values and provides handles to travel through them. useMultiStateValidator — alike the useStateValidator, but tracks multiple states at a time. useMediatedState — like the regular useState but with mediation by custom function. useFirstMountState — check if current render is first. useRendersCount — count component renders. createGlobalState — cross component shared state.useMethods — neat alternative to useReducer. useEnsuredForwardedRef and ensuredForwardRef — use a React.forwardedRef safely.
Usage — how to import.
Unlicense — public domain.
Support — add yourself to backer list below.