Compare

Shipvo and Expo, side by side.

Shipvo is built on Expo, not against it: shipvo init writes a complete Expo app. The overlap is in two places, simulating the app so it can be tested, and updating it over the air. This page sets them next to each other, including where Expo is the better choice.

Checked 31 October 2026 against Expo's pricing page and their agent CLI announcement. Expo changes often; if something here is out of date, tell us and we will fix it.

What each one is

Expo and EAS

  • The framework and toolchain for React Native apps.
  • EAS Build compiles your iOS and Android binaries in the cloud.
  • EAS Update ships JavaScript updates over the air, billed by monthly active users.
  • Real native testing: the iOS Simulator, the Android Emulator, Expo Go and development builds.

Shipvo

  • An open-source layer you add to an Expo app (Apache-2.0).
  • A simulator that runs your app headless, with the screen exposed as an accessibility tree that assistants drive over MCP and typed tests drive in CI.
  • A signed over-the-air runtime and a control plane you can use hosted or run on your own Cloudflare account.
  • It does not compile binaries. You still build with EAS or locally.

Testing and simulating

Both let you run your app without holding a phone. They do it differently, and the difference is the whole trade-off.

Expo toolingShipvo simulator
What runs your appThe real native app on the iOS Simulator or Android Emulator.Your app rendered with React Native Web in headless Chromium, with the device simulated.
FidelityNative: catches native crashes, real rendering and OS-specific layout.Logic and flow: screens, navigation, validation, permissions, payments, notifications. Does not catch native crashes or slow-phone performance.
Needs a Mac and Xcode for iOSYes. The iOS Simulator runs only on macOS.No. Runs on a plain Linux runner or your laptop.
SetupXcode, Android Studio and emulator images, or a cloud service.One dependency and Chromium: npm run sim.
How an assistant sees the appExpo's new @expo/agent-cli (experimental) lets coding agents start the app, navigate, reload and run a smoke check. Their announcement does not describe an accessibility-tree interface.A phone-sized session over MCP: the screen as an accessibility tree with refs, plus tap, type, scroll, back and screenshot.
Where it runsLocal by default. Their cloud simulator sessions (Expo Simulators) were in preview with a waitlist at the time of their announcement.Local, or hosted at sim.shipvo.dev with a key from shipvo login.
Camera, location, biometrics, paymentsReal on a device. In simulators, support varies and some features, such as the camera and biometrics, are limited or manual.Scriptable: set the location, put a barcode in front of the camera, approve or fail a payment, deny a permission, go offline.
Typed test API for CIBring your own: Maestro, Detox or similar.@shipvo/test: Playwright-style, in Vitest or any runner.
How closely it matches a phoneIt is a phone, simulated at the OS level.Measured and published. Two full purchases: 100 % actionable parity on Android and iOS across 13 screens. The native-feature flow: 18 of 21 screens at 100 % on Android, with the three gaps listed, and 100 % on iOS. Parity results

The honest summary. If you need to know whether your app crashes on a real iPhone, use the iOS Simulator or a device. If you want to know on every pull request, in seconds, on a Linux runner, whether a customer can still scan, pay and get a confirmation, use the Shipvo simulator. Most teams want both: the simulator on every commit, a real device before a store release.

Updating over the air

EAS UpdateShipvo runtime
HostingHosted by Expo.Hosted free during the beta at api.shipvo.dev, or self-hosted on your own Cloudflare account in about ten minutes.
Trust modelManaged by Expo; code signing is available.Your Ed25519 key is pinned in the app's native shell. Phones verify the signature, hash and size of every release; nothing delivered over the air can change the key.
Update sizeFull bundle or assets that changed.bsdiff patches from the version a phone already has; typically tens of KB.
Rollout and rollbackChannels and staged rollouts.Cohorts at 1 %, 10 %, then everyone; shipvo rollback --to 7; phones discard a release that fails to boot.
PlatformsAndroid and iOS, in production use at scale.Android measured on a 2 GB phone. iOS verified on an iPhone simulator in CI, not yet measured on a physical iPhone.
MaturityYears in production, large user base, paid support on higher plans.Beta. Small and young; the numbers we have are published, including the gaps.
Cost modelPlan fee plus per monthly active user above the included amount. See pricing.No per-user fee in the software. Hosted is free in the beta; self-hosted costs whatever Cloudflare charges you.

Which one to use

Reach for Expo tooling when

  • You need to catch native crashes or test on real hardware.
  • You want a managed, mature update service with paid support.
  • You are building binaries: EAS Build is what you pay for there, and Shipvo does not replace it.

Reach for Shipvo when

  • You want assistants or CI to run your real flows on every change, without a Mac or an emulator.
  • You want the update trust root to be your own key, and the control plane in your own account.
  • You want your app to be openable by any agent, listed on the marketplace.

Use them together

  • Build with EAS or locally; publish updates with shipvo publish.
  • Run the Shipvo simulator on every pull request and a real device before each store release.
  • Keep your free EAS tier for builds and spend nothing extra on testing.

Not affiliated with Expo. Expo, EAS and Expo Go are trademarks of 650 Industries, Inc. What does each cost? See pricing. Want to test the claims? Connect an assistant in four steps.