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

react-perflens

v0.2.1

Published

React performance toolkit — track renders, surface insights, fix bottlenecks

Readme

perflens

React performance toolkit. Track renders, surface insights, fix bottlenecks.

Install

npm install react-perflens

Quick Start

import { PerfLensProvider, PerfLensTrack, useRenderTracker } from 'react-perflens';
import { PerfLensPanel } from 'react-perflens/panel';

function App() {
  return (
    <PerfLensProvider enabled={process.env.NODE_ENV === 'development'}>
      <YourApp />
      <PerfLensPanel />
    </PerfLensProvider>
  );
}

// option 1: wrapper — gives you render timing via Profiler
function Dashboard() {
  return (
    <PerfLensTrack name="UserList">
      <UserList />
    </PerfLensTrack>
  );
}

// option 2: hook — gives you render count + mount/unmount tracking
function UserList({ users }) {
  useRenderTracker('UserList');
  return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

PerfLensTrack wraps a subtree with its own Profiler — you get actual render durations. useRenderTracker is a hook — counts renders and tracks mount/unmount but can't measure timing (React limitation). Use both if you want the full picture.

What It Does

Sits between React DevTools and Lighthouse. Neither can tell you which component is causing your LCP to spike or why your sidebar re-renders 40 times a second.

perflens tracks render count and duration per component, unnecessary re-renders, render cascades, memoization effectiveness, and mount/unmount churn. Each issue comes with a plain-language explanation and a fix.

API

<PerfLensProvider>

| Prop | Type | Default | |------|------|---------| | enabled | boolean | true | | config | PerfLensConfig | — |

When enabled is false, renders children with zero overhead.

<PerfLensTrack name="...">

Wraps a subtree with its own React Profiler. This is how you get per-component timing data.

useRenderTracker(name, options?)

Hook for render counting and mount/unmount tracking. No timing data (React Profiler is a component, not a hook).

| Option | Type | Default | |--------|------|---------| | trackProps | boolean | false | | warnAfterRenders | number | 20 | | slowThreshold | number | 16 | | ignore | boolean | false |

usePerfLensStore()

Returns the store directly. Build custom UIs or pipe data externally.

<PerfLensPanel />

Floating overlay. Toggle with Ctrl+Shift+P. Import from react-perflens/panel — separated so the UI code doesn't bloat your core bundle.

import { PerfLensPanel } from 'react-perflens/panel';

Constraints

  • Zero runtime dependencies
  • < 1ms tracking overhead per component per render
  • Never crashes your app
  • Tree-shakeable
  • React 18+

Development

git clone https://github.com/vmvenkatesh78/perflens.git
cd perflens
npm install
npm test
npm run build

License

MIT