New
Introducing React Bench, see how different models perform on React code

Other CI providers

The GitHub Action handles comments and commit statuses, so it only runs on GitHub. The scanner itself is a CLI, so it runs on any provider: GitLab CI, CircleCI, Jenkins, Buildkite, or a plain script.

Exit codes

React Doctor exits 1 when it finds blocking issues and 0 when it doesn't. Every CI system reads that to decide pass or fail, so no extra wiring is needed.

# Scan the whole project. Fails the job on error-level issues (the default).
npx react-doctor@latest .

Useful flags

FlagDescription
--blocking <level>

Level that exits 1: error (default), warning, or none (report only, always exit 0)

--scope <value>

Choose full, files, changed, or lines. Add --base <ref> for a specific base

--project <name>In a monorepo, scan only certain project(s), comma-separated
--jsonPrint a JSON report instead of text, for processing

See the CLI reference for the full list.

GitLab CI

Generate a gate-only GitLab CI scaffold:

npx react-doctor@latest ci install --provider gitlab-ci

You can also add the job manually:

react-doctor:
  image: node:24
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  script:
    # Only scan files changed against the target branch.
    - npx react-doctor@latest . --scope changed --base "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" --blocking error

If the job exits non-zero, the pipeline fails. That is the same gate as the GitHub Action, without the comments.

CircleCI, Jenkins, and Buildkite follow the same shape: run npx react-doctor@latest in a Node 24 step and let the exit code decide the result.