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
| Flag | Description |
|---|---|
--blocking <level> | Level that exits |
--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 |
--json | Print 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 errorIf 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.