Agentic Testing
for React Native
An MCP that lets your coding agent drive and test your React Native app end-to-end.
Stop wasting time debugging. We got you.
Stop wasting time debugging. We got you.
Ceraph helps your agent certify every code change works as intended.
Ceraph initializes a React Native project, starts it, and drives a complete test on the simulator.
Paused demo chapterWhat we support
Frameworks
Bare React Native apps
Dev clients and prebuilt apps
Operating Systems
iOS and Android, with physical and virtual targets.
Real devices and simulators
Real devices and emulators
AI Tools
Each tool below is automatically configured by npx @ceraph/react-native-mcp@latest init — manual setup available for Cline, Roo Code, and JetBrains IDEs.
Configured via .mcp.json

Configured via .cursor/mcp.json

Configured via .codex/config.toml
Configured via .vscode/mcp.json

Configured via .agents/mcp_config.json
Simple, transparent pricing
Start free for high-quality automation tools. Upgrade for full agentic E2E testing.
For trying it out on a personal project.
- ✓Works with any MCP client
- ✓Runtime errors surfaced in your chat automatically
- ✓Understands what's on screen and what it can interact with
- ✓Your agent can bring up and drive the app — tap, type, swipe, screenshot, deep links
- ✓Mock camera and gallery flows with test media
- ✓Works for both iOS and Android
One plan for individual developers and teams.
- ✓Everything in Starter
- ✓PR-quality recordings of code changes being tested end-to-end
- ✓Execution trace and screenshots accompany every recording for deeper code review
- ✓Agent hooks to automate test user setup and resolve
- ✓Your agent can inspect live UI styling for superior design execution
Frequently asked questions
What Ceraph is, what it needs, and how to get going.
What is Ceraph?
Ceraph is an MCP server that lets your AI coding agent drive and test your React Native or Expo app end-to-end on real devices and virtual runtimes. Your agent can tap, type, swipe, deep-link, take screenshots, read a structured accessibility snapshot of the current screen, and pull runtime errors, so a code change is verified against the running app, not just the type checker.
How is it different from Detox, Appium, or Maestro?
Those tools have you author a test — an Appium script, a Detox flow, a Maestro YAML — and keep it green as the UI moves. Ceraph is MCP-native and lives in your edit loop: your coding agent drives the running app directly, reasoning over a deterministic accessibility snapshot instead of a script bound to brittle selectors.
It is Expo-first and runs on your own agent's tokens. Under the hood Ceraph uses WebDriverAgent on iOS and UiAutomator2 on Android, so the edge is the agentic, React-Native-native layer above the platform driver. Full breakdown: Ceraph vs Detox, Appium & Maestro.
How is it different from agent-device and mobile-mcp?
Ceraph brings React Native and Expo testing into one workflow: managed startup, PR-quality recordings with execution traces and screenshots, hooks to automate test user setup and resolve test blockers, repeatable camera inputs, and live screen and style inspection.
See Mobile Testing MCPs Compared for the capability-by-capability comparison.
Does it support iOS and Android?
Yes. Ceraph supports iOS devices and the iOS Simulator on macOS, plus Android devices and emulators on macOS, Windows, and Linux. Both platforms support the same core workflow, including snapshots, interactions, runtime errors, camera and gallery testing, hooks, recordings, and live style inspection.
Does it work with Expo?
Yes. Ceraph is Expo-first and also works with bare React Native. It needs an Expo dev client or a prebuilt app — Expo Go is not supported. There is no config plugin to add and no prebuild step: see Expo E2E Testing With an AI Coding Agent.
Expo also offers an official MCP for project guidance, EAS workflows, and basic iOS Simulator interaction. Its local controls are not a replacement for Ceraph's deeper iOS and Android app testing. See Expo MCP vs Ceraph.
Which coding agents work with it?
Any MCP client. ceraph init auto-configures the ones it detects — Claude Code, Cursor, Codex, VS Code, and Antigravity — and Cline, Roo Code, and JetBrains IDEs can be set up manually. Your agent supplies its own model tokens; Ceraph hands it the driving and testing primitives.
What do I need to run it?
Node.js 20.19+, 22.12+, or 24+, plus the native toolchain for your target: macOS with Xcode for iOS, or the Android SDK/JDK with adb on macOS, Windows, or Linux for Android. Use an unlocked USB device or a booted simulator/emulator. Expo Go is not supported, so use a dev client or a prebuilt app.
How do I get started?
From your project root, run npx @ceraph/react-native-mcp@latest init to configure your MCP client. init also sets up the ceraph command on your PATH, so you can bring the app up with ceraph start.
You usually don't run ceraph start yourself, though — your coding agent runs the same bring-up through the MCP. Manual ceraph start works with every target, but it is especially useful for priming a physical device ahead of testing: start it while your agent is still implementing, unlock the phone and complete any passcode or trust prompts, then step away knowing Ceraph will be ready when testing begins. If ceraph isn't found — some locked-down machines can't install globally — use npx @ceraph/react-native-mcp@latest start instead.
What does it cost?
The Starter plan is free and works with any MCP client. It surfaces runtime errors in your chat and lets your agent bring up and drive your app on iOS and Android, including camera and gallery flows with test images and videos.
Pro is $9 per user per month or $90 per user per year. One seat works for an individual; additional seats cover a team. It adds PR-quality recordings with execution traces and screenshots for deeper code review, agent hooks to automate test user setup and resolve test blockers, and live UI styling inspection.
Agents are currently blind.
Ceraph lets them finally see.
Your coding agent drives and tests your app autonomously.
So you don't have to.