npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@altalyst/hookify

v0.8.2

Published

A lightweight, dependency-free collection of framework-agnostic React hooks for debouncing, data fetching, toggling state, syncing state to storage, detecting outside clicks, and more.

Readme


Hookify is a lightweight, dependency-free collection of React hooks for everyday problems: debouncing, data fetching, toggling state, syncing state to storage, detecting outside clicks, and more. Every hook is written in TypeScript, fully typed, tree-shakeable, and documented with a live, editable demo.

Table of contents

Features

  • 🪝 A growing collection of focused hooks covering the most common React state, effect, and side-effect patterns.
  • 📦 Tiny and tree-shakeable — import only what you use; no runtime dependencies beyond React. Ships ESM and CommonJS builds.
  • 🔒 Fully typed — written in TypeScript with generated .d.ts files included.
  • ⚡ Zero config — works out of the box with any React 18 or 19 project (CRA, Vite, Next.js, Remix, etc.).
  • 📚 Live docs — every hook has a runnable, editable demo and full API reference generated straight from the source.

Installation

Hookify has react and react-dom as peer dependencies (v18+).

npm install @altalyst/hookify
yarn add @altalyst/hookify
pnpm add @altalyst/hookify

Quick start

Import any hook directly from the package root:

import { useToggleState } from "@altalyst/hookify";

export const Example = () => {
  const [isVisible, toggleVisibility] = useToggleState(false);

  return (
    <div>
      <button onClick={toggleVisibility}>
        {isVisible ? "Hide" : "Show"} content
      </button>
      {isVisible && <p>This is some toggleable content!</p>}
    </div>
  );
};

Available hooks

| Hook | Description | | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | useApi | Declarative hook for making HTTP requests with built-in loading, error, and data state. | | useAutofillSubmit | Submit a form as soon as a password manager fills it, with typed, extensible options. | | useControlledState | Manage a value that works in both controlled and uncontrolled modes, like native inputs. | | useDebounce | Debounce a callback so it only runs after a delay has passed since its last invocation. | | useDocVisible | Track whether the current document/tab is visible via the Page Visibility API. | | useEffectAfterMount | Run an effect only after the initial mount, skipping the first render. | | useMounted | Track whether a component is currently mounted to guard async state updates. | | useOutsideClick | Fire a callback when a click or touch happens outside a given element. | | usePersistedState | Persist state to localStorage and sync it across browser tabs. | | useSequentialRequest | Ensure only the latest of several in-flight async requests resolves; stale ones are ignored. | | useToggleState | Toggle a boolean state with a simple, memoized setter. |

Browse the hooks documentation for live, editable demos and the full API of each hook.

Documentation

Full guides, live demos, and the generated API reference live at altalyst-solutions.github.io/hookify.

Local development

# Install library dependencies
npm run setup

# Run the test suite
npm test

# Lint and format
npm run lint
npm run format

# Build the library
npm run build

To preview documentation changes locally (including new hooks) without waiting for a deploy:

npm run docs:install   # first time only
npm run docs:dev       # starts Docusaurus with hot reload at localhost:3000

Live demos run the published npm release, so new or changed hooks only show up in them after a release. To see unreleased changes in the demos, use npm run docs:dev:local (and npm run watch in a second terminal to rebuild the library as you edit). See CONTRIBUTING.md.

Contributing

Contributions, issues, and feature requests are welcome! See CONTRIBUTING.md for local setup, how to add a new hook, and our commit/versioning conventions. Please also read our Code of Conduct. See CHANGELOG.md for release history.

Community

License

MIT © Altalyst Solutions. See LICENSE for details.