cloudparts

Fallow

A Rust analyzer for TypeScript and JavaScript repositories that finds unused files, exports and dependencies, circular imports, duplicated code, complexity hotspots and architecture violations from one module graph.

Type
Open source
Made by
Fallow B.V.
License
MIT
Facts checked
23 October 2026

What it is

Most linters look at one file at a time; Fallow looks at the whole repository. It parses every module with Oxc, resolves imports and re-exports across files and workspaces, and builds one graph of modules, exports, dependencies, functions and styling tokens. Analyses run on that graph: fallow dead-code finds unused files, exports, types, enum and class members and package.json dependencies, and fallow fix removes many of them; fallow dupes finds copied code in JS, TS, CSS and Vue, Svelte and Astro components; fallow health scores complexity hotspots from 0 to 100 using git churn and ownership; fallow architecture checks layer boundaries against presets such as layered or hexagonal and finds circular imports. Over 100 framework plugins find entry points (Next.js pages, Vite and Jest configs and so on) so the first run needs no configuration.

fallow audit is the pull-request gate: it compares a branch with its base and fails only on findings the change introduces, with no baseline file. Output comes as text, typed JSON, SARIF, CodeClimate or Markdown, and the same engine runs in a GitHub Action, a GitLab CI template, a language server, a VS Code extension and an MCP server for coding agents. No TypeScript compiler or Node.js runtime is needed, though an optional --type-aware pass uses TypeScript’s checker to remove false positives. The analyzer is MIT-licensed; Fallow B.V. sells a paid runtime-coverage add-on and a hosted Fallow Cloud.

Why teams pick it

  • Finds what file-by-file linters can’t: exports nothing imports, dependencies nothing uses, cycles across modules
  • Fast on large monorepos (the project reports 2.95 s for unused-code analysis of the Next.js repository’s 20,558 files) and deterministic, with a stable fingerprint per finding
  • The audit gate fails only on new findings, so it can be added to an old codebase without a clean-up first
  • One config and engine for CLI, CI, editor and agents, with documented JSON output and exit codes

Watch out for

  • TypeScript and JavaScript only (plus the CSS and component files they reference)
  • Unused-code results depend on knowing every entry point; generated files, dynamic imports or a checkout without node_modules can make used code look dead
  • A young project from a small bootstrapped company, with frequent releases (about 250 in its first seven months) and three major versions in four months
  • Runtime coverage from production is a paid add-on

Alternatives

What all linters have in common →Compare side by side →

How it fits with other technologies

Typical commands (from the README) · bash

npx fallow                  # health, duplication and unused code in one run
npx fallow audit            # only the findings that your change introduces
npx fallow fix --dry-run    # preview the auto-fixes, then run `npx fallow fix`
npx fallow dead-code --trace src/api.ts:client   # prove an export is unused before you delete it
npx fallow migrate          # convert knip, jscpd and stylelint config

See it in a real stack

No architecture uses Fallow yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2026

Bart Waardenburg, a frontend developer and tech lead, saw that costly bugs often came from files that never reference each other: linters check files, type checkers check types, and “nothing checks the codebase as a whole”. He released Fallow in March 2026 as a Rust dead-code analyzer for JavaScript and TypeScript, pitched as a faster alternative to knip built on the Oxc parser.

Within days it reached 1.0, which put the config, JSON output and CLI under semantic versioning, and 2.0 made a bare fallow run dead-code, duplication and complexity analysis together. 3.0 in July 2026 brought CSS and CSS-in-JS styling analysis into the audit gate. He runs it through Fallow B.V., a bootstrapped company in the Netherlands founded in 2026, funded by sponsorship, grants and the paid runtime features.

Why it’s built this way

One repository graph instead of per-file rules
Unused exports, dead dependencies, cycles and boundary violations only show up when every import across the repository is resolved.
Rust and Oxc, no TypeScript compiler
Skipping tsc and Node.js keeps analysis sub-second on large monorepos; type-aware checking is an opt-in pass for the cases syntax can’t settle.
Gate only on what a change introduces
Existing codebases have hundreds of findings; failing only on new ones lets teams adopt it without fixing the backlog first.
Report a confidence level with each verdict
An early run without node_modules flagged nearly everything as dead; the author decided an analyzer that suggests deleting code must say when it isn’t sure.

Timeline

  1. 2026

    March 17: first release (0.1), a dead-code analyzer for JS and TS

  2. 2026

    March 20: 1.0 with semantic versioning for config and output

  3. 2026

    March 25: 2.0 runs dead code, duplication and health together

  4. 2026

    July 4: 3.0 adds styling analysis to the audit gate

  5. 2026

    October 22: 3.35.0

Sources5 · facts checked 23 October 2026

Improve this page on GitHub