Repository navigation
v1.0.0 — The Codebase Analyzer for JavaScript
Fallow 1.0 is a stability milestone. The config format, JSON output schema, CLI interface, and plugin format are now covered by semantic versioning — breaking changes only happen in major version bumps.
What's in 1.0
Fallow is a Rust-native codebase analyzer for JavaScript and TypeScript. It finds unused code, detects circular dependencies, and identifies code duplication in a single sub-second tool. 84 framework plugins, zero configuration required.
npx fallow check # Dead code analysis
npx fallow dupes # Duplication detection
npx fallow fix # Auto-remove unused exports and deps12 issue types
Unused files, exports, types, dependencies, devDependencies, enum members, class members, unresolved imports, unlisted dependencies, duplicate exports, circular dependencies, and type-only dependencies.
Performance
- 3-36x faster than knip v5, 2-14x faster than knip v6 for dead code analysis
- 20-33x faster than jscpd for duplication detection
- 10-15x less memory than knip v5, 3-8x less than knip v6
- Sub-second on most projects, even at 5,000+ files
Framework support
84 built-in plugins with auto-detection. 31 plugins have deep AST-based config parsing (ESLint, Vite, Jest, Storybook, Tailwind, Webpack, TypeScript, Babel, Rollup, PostCSS, Nuxt). Covers Next.js, Nuxt, Remix, SvelteKit, Angular, NestJS, React Native, Expo, and 70+ more.
Workspace support
npm, yarn, pnpm workspaces (including pnpm-workspace.yaml and content-addressable store detection). TypeScript project references (tsconfig.json references) are also discovered as workspaces. Cross-workspace imports resolve through package.json exports field subpaths with output-to-source fallback.
Integrations
- LSP server with diagnostics, code actions, Code Lens (reference counts), and hover info
- VS Code extension with tree views, status bar, and auto-download
- MCP server for AI agent integration (Claude Code, Cursor, etc.)
- GitHub Action with SARIF upload, PR comments, and job summaries
- External plugin system for custom framework support
New since v0.3.0
Features
- TypeScript project references — workspace discovery from tsconfig.json references field, additive with npm/pnpm workspaces, deduplicated by canonical path
- Elementary cycle enumeration — circular dependency detection now reports individual cycles within SCCs (max 20 per SCC) instead of raw strongly connected components
- CSS Modules — .module.css/.module.scss class names extracted as named exports with styles.className member access resolution
- fallow migrate — convert knip and jscpd configs to fallow format automatically
- Nuxt deep config parsing — resolve_config() for modules, css, plugins, extends, postcss, and path aliases
- Code Lens — export reference counts above declarations with click-to-navigate in the LSP
- Duplication diagnostics in LSP with "Extract duplicate into function" code action
- Cross-workspace exports field resolution with output-to-source directory fallback
- Pnpm content-addressable store detection for injected dependencies
- Cache-aware incremental parsing with --performance cache hit/miss stats
- Inline suppression for circular dependencies (fallow-ignore-file circular-dependency)
Full Changelog: v0.3.0...v1.0.0