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 🙏

© 2025 – Pkg Stats / Ryan Hefner

friendly-hooks

v1.0.3

Published

An easy hooks library

Readme

Welcome to easy hooks

A simple hooks library for make your life easier.

hooks example

useDebounce

It usefull when you want to call a api or any kind of callback after a certain time. Image to have a search input that returns some data filtered by the research, u don't want to call at every type your api because it won't be really performance. With useDebounce u can make the call with a delay so for example if the user stop typing after 1s(delay) the callback will be call.

example

const [inputValue, setInputValue] = useState("")
useDebounce(getData, 1000, [inputValue])

In this example getData will be call only after 1s from the last char typed. The dependencies are used for reset the delay while the user is typing.

useUpdateEffect & useStrictUpdateEffect

Have you ever want a useEffect that runs only when you update some data? that is the case where it comes to handy useUpdateEffect and useStrictUpdateEffect. Why 2 hooks that do the same thing? because in React 18 the strick mode cause 2 renders, so if you are in React 18 and using strick mode you need to use useStrictUpdateEffect else useUpdateEffect

example


useUpdateEffect(()=>{
  // your code 
},[dependencies])

The same is for useStrictUpdateEffect, it's like componentWillUpdate in class components. The first time it's call it returns null, then it will return the callback like a normal useEffect.

usePrevious

An easy hooks that let you save and use the previous value of something


const [state, setState] = useState(initState)

const prevState = usePrevious(state);

And that's it!!

useToggle

A simple hook for switch boolean value


const [isVisible, setIsVisible] = useToggle(defaultValue)

return (
  <button onClick={ () => setIsVisible }> set visibility </button>
  {
    isVisible && //some jsx
  }
)

When u click the value of isVisible turn from false to true or opposite.