Skip to content

v1.0.0 — The Codebase Analyzer for JavaScript

Choose a tag to compare

@BartWaardenburg BartWaardenburg released this 20 Mar 18:12
· 5036 commits to main since this release
v1.0.0
553716b

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 deps

12 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