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)

--diff [base]

Scan only files changed against a base branch instead of everything

--changed-files-from <file>Read the changed-file list from a file, one path per line
--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

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 . --diff "$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.