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 |
--scope <value> | Choose |
--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
Generate a gate-only GitLab CI scaffold:
npx react-doctor@latest ci install --provider gitlab-ciYou 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 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.