Skip to main content
Rules control the severity of each issue type, making it easy to adopt fallow incrementally in CI.
Start with all rules as warn, then promote to error one type at a time as the codebase cleans up.

Severity levels

Most issue types default to error when not configured. The exceptions are private-type-leaks, coverage-gaps, prop-drilling, thin-wrapper, duplicate-prop-shape, and require-suppression-reason (default off), plus stale-suppressions and policy-violation (default warn).

Configuration

Available rule names

circular-dependencies and circular-dependency are interchangeable. Both forms are accepted in rules, overrides[].rules, and inline directives, so the singular/plural slug doesn’t matter.
Adopting fallow in an existing codebase works best gradually:
  1. Start permissive. Set all rules to warn so you see issues without blocking CI.
  2. Fix high-confidence rules first. Promote unresolved-imports and unlisted-dependencies to error. These are almost never false positives.
  3. Tackle unused files. Promote unused-files to error. Unreachable files are safe to remove.
  4. Address unused exports. Usually the largest category. Promote to error once the count is manageable.
  5. Enable remaining rules. Promote unused-types, unused-enum-members, and unused-class-members as you clean up each category. Enable private-type-leaks only for packages where public API or declaration hygiene matters.
Use baselines to avoid blocking CI on pre-existing issues while enforcing rules on new code.
Use --fail-on-issues in CI to temporarily treat all warnings as errors without changing the config file. Good for pre-merge gates on critical branches.

Exit codes

See also

Configuration

Full config file reference with all available fields.

CI Integration

Set up fallow in GitHub Actions, GitLab CI, and more.