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

scrollen

v0.0.2

Published

A performant utility scroll hook for React

Readme

Scrollen

A performant utility scroll hook for React.

Install

npm install scrollen

Getting Started

To start using the scrollen you need import and call the useScroller hook

import { useScroller } from 'scrollen'

const scroller = useScroller()

And that's it! By default the hook will listen to scroll on document.

If you want to use a different scroll container, you can use the setScrollerElement function

import { useScroller } from 'scrollen'

const scroller = useScroller()

<div ref={scroller.setScrollerElement}>
  ...
</div>

Example

See this small example of how you can use the hook.

Documentation

First of all, a huge thanks to @diegohaz as this library uses the Ariakit Component Stores API, so refer to the Ariakit Component Stores Guide to learn the core of the hook.

Props

| Prop | Description | | ------------------- | -------------------------------------------------------------- | | initialScrollTop | The initial scrollTop value to the scroller element. | | initialScrollLeft | The initial scrollLeft value to the scroller element. | | startScrollAt | Where the scroll should start. You can pass bottom \| right. |

State

| State | Description | | ------------------ | ------------------------------------------------------------------- | | element | The scroller element. | | scrollTop | The scrollTop value for the scroller element. | | scrollLeft | The scrollLeft value for the scroller element. | | scrollWidth | The scrollWidth value for the scroller element. | | scrollHeight | The scrollHeight value for the scroller element. | | scrollY | The progress of the vertical scroll. (between 0 and 1) | | scrollX | The progress of the horizontal scroll. (between 0 and 1) | | scrollLengthY | The length of the vertical scroll. | | scrollLengthX | The length of the horizontal scroll. | | scrollDirectionY | The direction of the vertical scroll. (static \| up \| down) | | scrollDirectionX | The direction of the horizontal scroll. (static \| left \| right) | | isAtTop | A boolean to check if the scroll reached the top. | | isAtBottom | A boolean to check if the scroll reached the bottom. | | isAtLeft | A boolean to check if the scroll reached the left. | | isAtRight | A boolean to check if the scroll reached the right. |

Functions

| Function | Description | | -------------------- | --------------------------------------------------------------------------------------- | | setScrollerElement | Function to set the scroller element. | | scrollToTop | Function to scroll programatically to top. | | scrollToLeft | Function to scroll programatically to left. | | scrollToBottom | Function to scroll programatically to bottom. | | scrollToRight | Function to scroll programtically to right. | | useOnScrollTop | A custom hook to register a callback that is called when the scroll reached the top. | | useOnScrollBottom | A custom hook to register a callback that is called when the scroll reached the bottom. |

Acknowledgements

  • Ariakit - Thanks to @diegohaz for the Component Stores API that made it possible to create a performant hook.
  • react-virtuoso - Where did I get ideas for utilities.