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

@jonasjuhl/devtools

v0.8.0

Published

Generic development overlay tools — grid inspector, typography inspector, spacing checker, accessibility scanner, z-index map

Readme

@jonasjuhl/devtools

A comprehensive development overlay toolkit for React applications. 14 tools covering layout, typography, accessibility, performance, SEO, brand compliance, and more — all from a floating panel or keyboard shortcuts.

Install

npm install @jonasjuhl/devtools

Setup

Wrap your app with DevToolsProvider, then render GridOverlay and DevTools. No "use client" wrapper needed — the package handles it. Both components portal to document.body, so they work inside any overflow container.

import { DevToolsProvider, GridOverlay, DevTools } from "@jonasjuhl/devtools";

export default function Layout({ children }) {
  return (
    <DevToolsProvider>
      {children}
      <GridOverlay />
      <DevTools />
    </DevToolsProvider>
  );
}

Brand Audit Config (optional)

Pass a brand config to enable brand compliance checking:

import { DevToolsProvider, type BrandAuditConfig } from "@jonasjuhl/devtools";

const brand: BrandAuditConfig = {
  colors: ["#141413", "#E2DEDC", "#8897ED"],
  fonts: ["jetbrains mono", "noto sans mono"],
  sizes: [8, 10, 12, 14, 16, 24, 32, 48, 64],
  weights: [200, 300, 400, 700, 800, 900],
  spacingBase: 8,
};

<DevToolsProvider brand={brand}>

Or auto-discover tokens from CSS custom properties:

<DevToolsProvider brand={{ cssPrefix: "--brand" }}>

Usage

Press ` (backtick / ½ / §) to enable devtools. A floating wrench button appears in the bottom-left corner.

Tools

| Key | Tool | Description | |-----|------|-------------| | G | Grid | Visualizes CSS grid columns, margins, gutters from --grid-* custom properties | | C | Containers | Highlights grid parents, max-width containers, grid children, media elements, semantic elements. Shows off-grid alignment when G+C are both active | | B | Breakpoint | Shows current breakpoint name, viewport width, column count | | T | Typography | Hover text to inspect font-family, size, weight, tracking, leading, color | | S | Spacing | Hover elements to see margin (orange), padding (green), gap, display, flex/grid props | | A | Accessibility | Scans text for WCAG contrast issues with ratio badges (AAA/AA/AA-LG/FAIL) | | Z | Z-Index | Maps all positioned elements with their z-index values | | F | Performance | FPS graph, frame time, memory, DOM nodes, CLS, long tasks, network transfer. Tracks session min/max/avg FPS | | R | Brand Audit | Flags colors, fonts, sizes, weights, spacing that don't match brand tokens | | P | Paint Flasher | Flashes elements that mutate (DOM changes, style/class mutations). Tracks mutation count | | I | Image Audit | Flags missing alt, over/under-scaled images, missing lazy loading, missing width/height. Also audits videos for missing poster, autoplay+muted, missing captions | | X | Focus Order | Numbered badges showing keyboard tab order. Red flags for tabindex > 0 | | N | Render Count | Heatmap of most-mutated DOM elements with mutation count badges | | M | Scroll Depth | Fold lines at current viewport, iPhone SE, iPhone Pro Max, iPad heights | | L | Light/Dark Diff | Flags elements where color+background don't change when switching data-theme | | E | SEO Audit | Meta tags, heading hierarchy, link issues, structured data, content signals, LCP candidate | | D | Dump to Console | Logs structured JSON snapshot of all active tools to console |

AI Agent Integration

Press D to dump a structured JSON snapshot to the browser console, prefixed with [DevTools Snapshot]. Designed for AI agents to read via browser automation:

  1. Press ` to activate devtools
  2. Press tool keys to enable desired tools (e.g., F + A + E + R)
  3. Wait a few seconds for data collection
  4. Press D to dump
  5. Read console with pattern [DevTools Snapshot]

The dump includes session-tracked performance data (min/max/avg FPS, peak frame time) so the agent captures the full story even if the page is static when reading.

CSS Custom Properties

The grid overlay reads these (define them in your design system):

  • --grid-columns — number of columns (e.g. 12)
  • --grid-margin — page margin (e.g. 40px)
  • --grid-gutter — column gap (e.g. 24px)
  • --grid-max-width — max container width (e.g. 1920px)

Zero dependencies

All styling is inline — no Tailwind or external CSS required. Both overlay components portal to document.body via createPortal. The only peer dependency is React 18+.