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

fallow

v2.9.2

Published

Codebase analyzer for TypeScript/JavaScript — unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations

Readme

fallow

The codebase analyzer for TypeScript and JavaScript, built in Rust.

CI npm MIT License

Unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations. Found in seconds, not minutes. fallow analyzes your codebase for unused files, exports, dependencies, and types, detects circular dependencies, finds duplicated code blocks, surfaces complexity hotspots, and enforces architecture boundaries. 5-41x faster than knip v5 (2-18x faster than knip v6), 8-29x faster than jscpd for duplication detection, with no Node.js runtime dependency.

Installation

npm install -g fallow

Usage

fallow                           # All analyses -- zero config, sub-second
fallow dead-code                 # Unused code only
fallow dupes                     # Duplication detection -- find copy-paste clones
fallow dupes --mode semantic     # Catch clones with renamed variables
fallow health                    # Complexity metrics -- cyclomatic + cognitive
fallow fix --dry-run             # Preview auto-removal of unused exports and deps

What it finds

  • Unused files -- not reachable from any entry point
  • Unused exports -- exported symbols never imported elsewhere
  • Unused types -- type aliases and interfaces never referenced
  • Unused dependencies -- packages in dependencies never imported
  • Unused devDependencies -- dev packages not referenced
  • Unused enum members -- enum values never referenced
  • Unused class members -- class methods and properties never referenced (tracks instance usage: const svc = new MyService(); svc.greet() counts greet as used)
  • Unresolved imports -- import specifiers that cannot be resolved
  • Unlisted dependencies -- imported packages missing from package.json
  • Duplicate exports -- same symbol exported from multiple modules
  • Circular dependencies -- import cycles in the module graph
  • Type-only dependencies -- production deps only used via import type

Code duplication

fallow dupes                       # Default: mild mode
fallow dupes --mode semantic       # Catch clones with renamed variables
fallow dupes --threshold 5         # Fail CI if duplication exceeds 5%
fallow dupes --save-baseline       # Save current duplication as baseline

4 detection modes (strict, mild, weak, semantic), clone family grouping with refactoring suggestions, baseline tracking, and cross-language TS/JS matching.

Framework support

84 built-in plugins covering Next.js, Nuxt, Remix, SvelteKit, Gatsby, Astro, Angular, NestJS, Vite, Webpack, Vitest, Jest, Playwright, Cypress, Storybook, ESLint, TypeScript, Tailwind, Prisma, Drizzle, Turborepo, and many more. Auto-detected from your package.json.

Configuration

Create a config file in your project root, or run fallow init:

// .fallowrc.json
{
  "$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json",
  "entry": ["src/workers/*.ts", "scripts/*.ts"],
  "ignorePatterns": ["**/*.generated.ts"],
  "rules": {
    "unused-files": "error",
    "unused-exports": "warn",
    "unused-types": "off"
  }
}

Also supports TOML (fallow init --toml creates fallow.toml).

Documentation

License

MIT