{"name":"fallow: Analyze TypeScript and JavaScript Codebases","description":"fallow builds a repository graph to find code health issues, complexity hotspots, duplication, architecture violations, styling drift, and unused code. Use it from the CLI, CI, editors, or coding agents, with findings scoped to changed files.","github":"https://github.com/fallow-rs/fallow","url":"https://osrepos.com/repo/fallow-rs-fallow","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/fallow-rs-fallow","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/fallow-rs-fallow.md","json":"https://osrepos.com/repo/fallow-rs-fallow.json","topics":["typescript","javascript","rust","cli","code-analysis","dead-code-analysis","dependency-analysis"],"keywords":["typescript","javascript","rust","cli","code-analysis","dead-code-analysis","dependency-analysis"],"stars":null,"summary":"fallow builds a repository graph to find code health issues, complexity hotspots, duplication, architecture violations, styling drift, and unused code. Use it from the CLI, CI, editors, or coding agents, with findings scoped to changed files.","content":"## Overview\n\nfallow 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.\n\nIt 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.\n\n## Key Features\n\n- Reports code health, complexity hotspots, and refactoring targets.\n- Detects circular dependencies, boundary violations, and architecture drift.\n- Finds duplicated code in JavaScript, TypeScript, CSS, and supported component formats.\n- Identifies unused files, exports, types, members, and dependencies, with fix previews and auto-fixes.\n- Audits changed files in pull requests and can exclude inherited findings from the gate.\n- Analyzes CSS and CSS-in-JS for styling and design-system drift.\n- Provides a CLI, GitHub Action, LSP, VS Code extension, Node API, and MCP server.\n- Offers optional type-aware analysis, runtime-coverage integration, security checks, and similar-code analysis.\n\n## Use Cases\n\n- A frontend team can gate pull requests on new complexity, duplication, unused code, and styling findings without failing on the existing backlog.\n- Maintainers of a TypeScript monorepo can inspect dependency cycles and boundary violations before restructuring packages.\n- A team preparing to remove code can trace whether exports and dependencies are unused, then review proposed fixes before applying them.\n- Engineers improving a mature UI can use health reports and styling analysis to locate difficult-to-change areas and inconsistent tokens.\n- Developers who want feedback in their editor or coding-agent workflow can use the LSP, VS Code extension, or MCP integration alongside the CLI.\n\n## Our Take\n\nfallow is an actively maintained, broad codebase-analysis toolkit, though its recent activity is heavily concentrated in one contributor.\n\n**Good fit if:**\n- You maintain JavaScript or TypeScript projects and want health, architecture, duplication, and dead-code checks from one graph.\n- You want CI to focus on issues introduced by a pull request rather than requiring an immediate cleanup of existing findings.\n- You can use the documented Node.js and Rust versions, and prefer an MIT-licensed tool with local analysis.\n\n**Look elsewhere if:**\n- You need a general-purpose analyzer for languages other than JavaScript and TypeScript.\n- Your environment cannot meet the documented Node.js or Rust requirements.\n- You need a project whose maintenance is not strongly dependent on one contributor.\n\n## Project Health\n\n| Signal | Value |\n|---|---|\n| Status | **Active**: regular commits and releases |\n| Last commit | 2026-10-07 (today) |\n| Commits, last 90 days | 100+ |\n| Releases, last 12 months | 100+ (latest v3.32.0, 2026-10-07) |\n| Contributors | 39 (top contributor: 86% of commits) |\n| Issues closed, last 90 days | 8+ (typically closed in 1 day) |\n| Pull requests merged, last 90 days | 100+ (typically merged in 0 days) |\n| Project age | 7 months |\n\nChecked on 2026-10-07 with the GitHub API.\n\n## Project Facts\n\n- Language: Rust\n- License: MIT\n- Stars: 5k\n- Forks: 170\n- Topics: architecture, circular-dependencies, cli, code-duplication, code-health, code-quality, codebase-intelligence, complexity\n- Archived: no\n\n## What You Need\n\nDetected in the repository:\n\n- Node.js >=22.12.0 (from package.json)\n- Rust 1.96 or newer (from Cargo.toml)\n- A Dockerfile, so it can run in a container\n- A test suite and automated checks on GitHub Actions\n\n## Getting Started\n\nRun fallow from the root of a JavaScript or TypeScript project:\n\n```bash\nnpx fallow\n```\n\nFor installation options, configuration, and CI setup, see the [README](https://github.com/fallow-rs/fallow#readme) and [documentation](https://docs.fallow.tools).\n\n## License in Plain Words\n\n**MIT** (permissive).\n\n- Commercial use: yes\n- Modify and redistribute: yes\n- You must keep: the copyright and license notice\n- Share your changes: no\n\nA summary, not legal advice: the LICENSE file is what applies.\n\n## Alternatives\n\n- [tach](https://osrepos.com/repo/gauge-sh-tach): Tach focuses on enforcing declared Python module boundaries, while fallow analyzes repository health, complexity, duplication, and unused code across JavaScript and TypeScript.\n\n| Project | Language | License | Stars | Status |\n|---|---|---|---|---|\n| **fallow** | Rust | MIT | 5k | Active |\n| [tach](https://osrepos.com/repo/gauge-sh-tach) | Rust | MIT | 2.8k | Not checked yet |\n\n## Considerations\n\nThe 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.","metrics":{"detailViews":4,"githubClicks":4},"dates":{"published":null,"modified":"2026-10-07T16:52:27.000Z"}}