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

framerate-helper

v1.0.1

Published

A lightweight utility for estimating screen refresh rate and calculating frame-safe animation durations.

Readme

FrameRateHelper.js

FrameRateHelper is a lightweight, zero-dependency JavaScript utility that calculates the user's display refresh rate and provides a stable, clamped frame duration. It is ideal for synchronizing animations with screen refresh rates for smoother UI interactions.

Features

  • 🔍 Detects real screen refresh rate using requestAnimationFrame
  • 🧠 Includes fallback to requestIdleCallback and setTimeout
  • 🧱 Clamp logic prevents frame duration spikes on low-power or inactive tabs
  • 💡 Asynchronous, event-driven design
  • 🪶 No dependencies, pure vanilla JS

Installation

✅ CDN

Use directly in HTML via jsDelivr:

<script src="https://cdn.jsdelivr.net/gh/InfinitumForm/[email protected]/dist/FrameRateHelper.js"></script>

Or via unpkg:

<script src="https://unpkg.com/[email protected]/dist/FrameRateHelper.js"></script>

✅ NPM (for modern build environments)

npm install framerate-helper

Then in your module:

import FrameRateHelper from 'framerate-helper';

Usage

Basic Example

const fps = new FrameRateHelper();

fps.onReady((hz) => {
  console.log('Detected refresh rate:', hz.toFixed(2), 'Hz');
  console.log('Adjusted duration:', fps.getDuration(300), 'ms');
});

API

new FrameRateHelper()

Creates an instance and begins measuring refresh rate immediately.

onReady(callback)

Registers a callback to be called when the refresh rate is determined.

Parameters:

  • callback (function): Function that receives the detected refresh rate in Hz.

getDuration(offset = 0)

Returns a calculated duration adjusted for the screen's refresh rate.

Parameters:

  • offset (number): Optional additional duration in milliseconds.

Returns:

  • number: Total adjusted duration in ms

Use Case

Perfect for developers building custom sliders, carousels, animation loops, or precision-based timing utilities where frame-perfect sync matters.


License

MIT License


Author

Developed by INFINITUM FORM®
Author: Ivijan-Stefan Stipić
Copyright © 2025 Ivijan-Stefan Stipić. All rights reserved.