Expo Ship Check logo

Expo Ship Check

by Tushar PramanikUpdated May 4, 2026

Performs deterministic audits on Expo and React Native configuration files—app.json, eas.json, and package.json—against pinned Expo and EAS JSON Schemas, plus heuristic checklist rules for ship-readiness. Expo and React Native developers use it to validate setups before EAS builds or app submissions, catching schema violations and common misconfigurations early.

expo
react-native
eas
+2
|

Overview

Expo Ship Check runs deterministic audits on Expo and React Native project files to verify ship-readiness. It validates app.json, eas.json, and package.json using pinned versions of Expo and EAS JSON Schemas, supplemented by heuristic rules that check for common issues like missing fields, deprecated properties, or build blockers.

Key Capabilities

  • Schema Validation: Parses and validates configuration files against fixed Expo SDK and EAS JSON Schemas, ensuring compliance without relying on live schema fetches.
  • Heuristic Checklists: Applies rule-based checks for Expo best practices, such as correct plugin configurations, build profiles, and submission settings.
  • Deterministic Output: Produces consistent audit reports highlighting errors, warnings, and suggestions, independent of external dependencies.

Use Cases

  • Pre-Build Validation: Before running eas build, developers audit configs to fix schema errors in app.json, preventing failed builds.
  • CI/CD Integration: In GitHub Actions or similar pipelines, automate audits on package.json changes to block merges with invalid Expo versions.
  • App Store Prep: Check eas.json submission profiles for completeness, ensuring no heuristic-flagged issues like missing icons delay App Store reviews.
  • Team Onboarding: New developers run audits to verify local setups match project schemas, reducing setup-related bugs.

Who This Is For

Primary users are Expo and React Native developers managing cross-platform mobile apps. It suits teams using EAS CLI for builds and submissions, solo indie devs prepping releases, and CI/CD maintainers enforcing config standards. Ideal for those hitting frequent schema drift or heuristic pitfalls in large codebases.

Raw HTTP

If you call the /mcp URL yourself (e.g. curl or a custom client), send Accept: application/json, text/event-stream or the server returns 406 — required by Streamable HTTP.