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

vite-scan

v0.0.4

Published

A Vite DevTools plugin that scans and highlights high-churn DOM updates in the browser.

Readme

Vite Scan

A Vite DevTools plugin that scans runtime UI churn and highlights hot DOM areas, inspired by react-scan.

Features

  • Adds a Vite Scan action button and settings panel to Vite DevTools.
  • Watches DOM mutations and briefly highlights updated elements with a configurable outline and pulse animation.
  • Persistent state — scan toggle and settings survive page refreshes and dev-server restarts via localStorage. No need to re-enable after every reload.
  • Auto-bootstrap — when scan was active before a refresh, highlighting resumes immediately on page load without opening the DevTools panel.
  • Live settings panel — adjust highlight color, glow color, outline width/offset, pulse duration, and spread at runtime. Changes auto-apply with a short debounce.
  • Color presets — one-click Cyan, Orange, and Green presets in the settings panel.
  • Collects rough runtime signals while scanning:
    • total tracked element updates
    • long task count and duration
    • cumulative layout shift (CLS)
  • Emits a ranked summary of the hottest elements in the DevTools Logs panel when scan stops.

Install

pnpm add -D vite-scan @vitejs/devtools
# or
npm i -D vite-scan @vitejs/devtools
# or
yarn add -D vite-scan @vitejs/devtools

Usage

import { defineConfig } from 'vite'
import { DevTools } from '@vitejs/devtools'
import viteScan from 'vite-scan'

export default defineConfig({
  plugins: [
    DevTools(),
    viteScan(),
  ],
})

Open Vite DevTools, click the Vite Scan action to start scanning, or open the Vite Scan dock page to tweak settings.

Settings are auto-applied at runtime from the dock page (debounced), so you no longer need to edit vite.config.ts for every tweak.

Demo

Vite Scan demo

API

Plugin Options

interface ViteScanPluginOptions {
  inactiveIcon?: string // default: 'ph:scan'
  activeIcon?: string   // default: 'ph:scan-duotone'
}

Runtime Settings

The following settings can be configured live from the DevTools settings panel:

| Setting | Type | Default | Description | |---------|------|---------|-------------| | enabled | boolean | true | Enables or disables scan execution | | highlightColor | string | #A78BFA | Outline color for highlighted mutations | | glowColor | string | rgba(167, 139, 250, 0.50) | Glow color for the pulse animation | | outlineWidthPx | number | 2 | Outline width in pixels | | outlineOffsetPx | number | 1 | Outline offset in pixels | | pulseDurationMs | number | 420 | Pulse animation duration in milliseconds | | pulseSpreadPx | number | 10 | Pulse spread in pixels |

When a scan is active, the dock button switches icon, title, and shows an ON badge.

Local Development

From this directory:

pnpm i
pnpm build
pnpm play:dev

To launch a single hub page with links to all framework demos:

pnpm play:examples

Additional working examples are available for each framework:

pnpm play:vanilla
pnpm play:react
pnpm play:vue
pnpm play:svelte

Each example opens a small high-churn UI so you can run Vite Scan from DevTools and compare how React, Vue, Svelte, and vanilla DOM updates show up.

License

MIT License. See LICENSE for details.