New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

use-web-kit

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

use-web-kit

A highly optimized, zero-dependency, lightweight npm library for React custom hooks focusing on performance and Browser APIs.

Source
npmnpm
Version
1.0.0
Version published
Weekly downloads
9
125%
Maintainers
1
Weekly downloads
 
Created
Source

use-web-kit

npm version Build Status License: MIT TypeScript

A compact collection of zero-runtime-dependency, TypeScript-first React hooks for common browser interactions.

Installation

npm install use-web-kit

Quick Example

import { useStorage, usePermission, useMediaControls } from "use-web-kit";

function App() {
  const [theme, setTheme] = useStorage("theme", "light");
  const { state: camState } = usePermission("camera");
  const { ref, state, controls } = useMediaControls();

  return (
    <>
      <button
        onClick={() => setTheme((t) => (t === "light" ? "dark" : "light"))}
      >
        Theme: {theme}
      </button>
      <p>Camera permission: {camState}</p>
      <video ref={ref} src="/clip.mp4" />
      <button onClick={state.paused ? controls.play : controls.pause}>
        {state.paused ? "Play" : "Pause"}
      </button>
    </>
  );
}

Hooks

Utility

HookDescriptionDocs
useIdleQueueSchedule non-critical tasks during browser idle timeAPI →
useBroadcastStateSync state across browser tabs via BroadcastChannelAPI →
useAdaptivePollingRun a callback at an interval; slows/pauses when backgroundedAPI →
useNetworkStatusReactive navigator.onLine + Network Information APIAPI →
useIntersectionPooled IntersectionObserver with a ref-callback interfaceAPI →
usePageLifecycleTrack page visibility, focus, and freeze stateAPI →

Browser API

HookDescriptionDocs
useStoragelocalStorage / sessionStorage with cross-tab syncAPI →
usePermissionQuery and watch Web Permissions API stateAPI →
useMediaControlsAttach to <audio>/<video> with reactive state + controlsAPI →

Full API reference:

Features

  • Zero runtime dependencies
  • Tree-shakeable named exports — import only what you use
  • Strict TypeScript typings included
  • SSR-safe — all hooks guard window / navigator access
  • Graceful fallbacks for unsupported browser APIs

SSR Compatibility

Every hook tests for window, navigator, and the relevant API before accessing it. In a server render:

  • useStorage returns initialValue
  • usePermission returns { state: "unavailable", loading: false }
  • useNetworkStatus returns { online: true }
  • useIntersection returns { isIntersecting: false, entry: undefined }
  • usePageLifecycle returns { visible: false, focused: false, frozen: false }
  • useMediaControls returns default state with a no-op ref

Bundle / Tree-shaking

All hooks are named exports at the package root:

import { useIdleQueue } from "use-web-kit"; // only useIdleQueue bundled
import { useStorage, usePermission } from "use-web-kit"; // two hooks bundled

The package ships both ESM (dist/index.mjs) and CJS (dist/index.js) builds via tsup.

Testing

npm test            # run all tests once
npm test -- --watch # watch mode

All hooks are thoroughly tested with Jest and @testing-library/react.

Contributing

  • Fork the repo and create a feature branch.
  • npm install to set up dependencies.
  • Write tests alongside your changes.
  • Ensure npm test passes with no failures.
  • Open a pull request with a clear description.

License

MIT

Keywords

react

FAQs

Package last updated on 10 Mar 2026

Related posts