expo-ci-doctor logoexpo-ci-doctor
100% Free & Open Source

Detect Expo CI failures before they happen.

A free CLI utility that analyzes Expo and React Native projects to prevent EAS and CI build failures. Catch configuration drift and native module errors locally.

See it in action

Without Doctor: 20 minutes later in CI

$ eas build --platform ios

Waiting for build to complete...

❌ Build failed

Error: Phase Script Execution failed with a nonzero exit code.

Check your build logs on Expo dev dash for more details.

error Command failed with exit code 1.

With Doctor: Instantly locally

$ npx expo-ci-doctor check

FAIL: Native Module Version Mismatch

File: package.json

Cause: `react-native-reanimated` v3.6.0 requires `react-native` v0.73.0+, but found v0.72.6.

Fix: Update `react-native` to ^0.73.0 or downgrade `react-native-reanimated`.

Risk Score: 98/100 (Critical)

Installation

Get started in seconds. No login required.

INSTALL GLOBALLY:

$ npm install -g expo-ci-doctor

RUN CHECK:

$ expo-ci-doctor check

OR RUN WITH NPX:

$ npx expo-ci-doctor check

About the Project

Expo CI Doctor was built to solve a specific, painful problem in the React Native ecosystem: wasted CI runs.

Every day, developers push code, trigger GitHub Actions or an EAS Build, and wait 20 minutes only to watch it fail due to a configuration mismatch, a mismatched native dependency, or a poorly handled environment variable. These issues are often predictable and catchable locally.

Our goal is to provide a fast, deterministic CLI tool that analyzes your project's state before it ever leaves your machine, ensuring that when your build starts, it finishes successfully.

Wasted Build Minutes

EAS builds take 10-25 minutes. A failed build means you wait again after fixing. That's 30+ minutes wasted on something catchable.

Hidden Config Issues

Mismatched SDK versions, wrong native module configs, missing env vars — these only surface during the build.

"Works Locally"

The classic. It builds fine on your machine but fails in CI because of subtle environment differences.

Everything you need to ship with confidence

Deep analysis, smart prediction, and actionable diagnostics.

Dependency Compatibility Checks

Cross-references package.json versions against a known database of breaking React Native/Expo incompatibilities.

CI Failure Diagnostics

Detects 50+ common failure patterns with high confidence scoring before they ever break your build.

Upgrade Safety Checks

Finds mismatches between your Expo SDK version and installed local dependencies.

Expo SDK Validation

Statically parses app.json and eas.json to catch malformed structures and missing environments.

Build Readiness Score

A weighted verdict that combines all checks into a clear PASS / WARN / FAIL with actionable fix suggestions.

Noise Filtering for CI Logs

Isolates the actual cause of a failure from the thousands of lines of output generated by Xcode or Gradle.

Add to your GitHub Actions CI pipeline in 2 minutes

Drop a single step into your GitHub Actions or Bitrise workflow. Fail fast before wasting cloud builder minutes on EAS.

  • Runs before EAS Build
  • Machine-readable exit codes
  • JSON output for custom integrations
  • Caches results for speed
.github/workflows/build.yml
name: EAS Build
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4

      - name: Install dependencies
        run: npm ci

      # Run expo-ci-doctor before building
      - name: Pre-build diagnostics
        run: npx expo-ci-doctor check

      - name: Build with EAS
        run: npx eas-cli build --platform all

Stop guessing. Start shipping.

Completely free and open source. No tracking, no cloud telemetry.