Our take
Activeregular commits and releases- Merges more pull requests than 100% of the projects we track
- Releases more often than 93% of the projects we track
fallow is an actively maintained, broad codebase-analysis toolkit, though its recent activity is heavily concentrated in one contributor.
Good fit if
- You maintain JavaScript or TypeScript projects and want health, architecture, duplication, and dead-code checks from one graph.
- You want CI to focus on issues introduced by a pull request rather than requiring an immediate cleanup of existing findings.
- You can use the documented Node.js and Rust versions, and prefer an MIT-licensed tool with local analysis.
Look elsewhere if
- You need a general-purpose analyzer for languages other than JavaScript and TypeScript.
- Your environment cannot meet the documented Node.js or Rust requirements.
- You need a project whose maintenance is not strongly dependent on one contributor.
All health signals
| Last commit | 2026-10-07 (today) |
|---|---|
| Commits, last 90 days | 100+ |
| Releases, last 12 months | 100+ (latest v3.32.0, 2026-10-07) |
| Contributors | 39 (top contributor: 86% of commits) |
| Issues closed, last 90 days | 8+ (typically closed in 1 day) |
| Pull requests merged, last 90 days | 100+ (typically merged in 0 days) |
| Project age | 7 months |
Checked on 2026-10-07 with the GitHub API.
Overview
fallow is a static-analysis tool for TypeScript and JavaScript repositories. It builds a graph of modules, exports, dependencies, functions, and styling tokens, then uses that graph to surface maintainability and architecture problems without requiring the TypeScript compiler.
It is designed for teams that want one analysis engine across local development and CI. Its pull-request audit can focus on findings introduced by a change, helping teams gate new issues without first cleaning up the entire existing backlog.
Key Features
- Reports code health, complexity hotspots, and refactoring targets.
- Detects circular dependencies, boundary violations, and architecture drift.
- Finds duplicated code in JavaScript, TypeScript, CSS, and supported component formats.
- Identifies unused files, exports, types, members, and dependencies, with fix previews and auto-fixes.
- Audits changed files in pull requests and can exclude inherited findings from the gate.
- Analyzes CSS and CSS-in-JS for styling and design-system drift.
- Provides a CLI, GitHub Action, LSP, VS Code extension, Node API, and MCP server.
- Offers optional type-aware analysis, runtime-coverage integration, security checks, and similar-code analysis.
Use Cases
- A frontend team can gate pull requests on new complexity, duplication, unused code, and styling findings without failing on the existing backlog.
- Maintainers of a TypeScript monorepo can inspect dependency cycles and boundary violations before restructuring packages.
- A team preparing to remove code can trace whether exports and dependencies are unused, then review proposed fixes before applying them.
- Engineers improving a mature UI can use health reports and styling analysis to locate difficult-to-change areas and inconsistent tokens.
- Developers who want feedback in their editor or coding-agent workflow can use the LSP, VS Code extension, or MCP integration alongside the CLI.
What you need
Detected in the repository
- Node.js >=22.12.0 (from package.json)
- Rust 1.96 or newer (from Cargo.toml)
- A Dockerfile, so it can run in a container
- A test suite and automated checks on GitHub Actions
License in plain words
MITpermissive
- Commercial use: yes
- Modify and redistribute: yes
- You must keep: the copyright and license notice
- Share your changes: no
A summary, not legal advice: the LICENSE file is what applies.
Getting Started
Run fallow from the root of a JavaScript or TypeScript project:
npx fallow
For installation options, configuration, and CI setup, see the README and documentation.
Alternatives
- tach: Tach focuses on enforcing declared Python module boundaries, while fallow analyzes repository health, complexity, duplication, and unused code across JavaScript and TypeScript.
| Project | Language | License | Stars | Status |
|---|---|---|---|---|
| fallow | Rust | MIT | 5k | Active |
| tach | Rust | MIT | 2.8k | Active |
Considerations
The project is young, despite frequent recent commits and releases. Its measured activity is strong, with issues and pull requests handled quickly, but most contributions come from one person, which is a maintenance concentration risk. The documented runtime requirements are Node.js 22.12.0 or later and Rust 1.96. The analyzer is static, so type-aware analysis and production runtime coverage are optional additions rather than requirements for the basic run.
Found this useful?
Share it with someone who would like fallow.