Skip to content

The mobile cookbook holds five recipes for building iOS and Android apps with Claude Code, Codex, or Cursor: Expo, React Native, Flutter, native Swift and Kotlin, and cross-platform UI patterns. Each recipe pins the framework version, installs the vendor’s skills, and proves every change with type checks, tests, and simulator evidence instead of a diff read line by line.

This hub is for developers and tech leads who ship a mobile app with an agent. The agent reports “done”, the code compiles, and the screen still breaks on the Android emulator nobody opened. Pick a recipe and require the same evidence from every change.

Before you start, give the repository an agent instructions file; the prompts below write into it, and AGENTS.md and CLAUDE.md: concise repository context keeps it short. For recipes outside mobile, see the cookbook overview.

Your appStart withWhat the recipe adds
New cross-platform app, or a team on Expo’s build and update servicesExpoExpo skills and MCP, Expo Router auth gates, a fingerprint-gated EAS pipeline, safe over-the-air (OTA) updates
React Native app that has outgrown the demo stageReact NativeOffline-first state, a janky list rebuilt on FlashList, biometric auth, CI to TestFlight and Play, failures the simulator never shows
Dart codebase, or a team that wants one rendering engine on both platformsFlutterRiverpod, go_router, Dio, clean architecture, widget tests
Swift/SwiftUI or Kotlin/ComposeNative iOS and AndroidOne build-and-test script per platform, simulator and emulator loops, UI-test evidence
Any of the above, and you need a screen builtReact Native and Flutter UI recipes12 prompts: adaptive navigation, feed lists, offline-first data, animations, push notifications, store submission

The Expo and React Native recipes are complementary: the Expo recipe covers the platform (routing, EAS builds, OTA updates), and the React Native recipe covers the app code that runs on it. On a new app, read the Expo recipe first.

Give the agent your stack’s official skills first

Section titled “Give the agent your stack’s official skills first”

Install only your stack’s set, because skill descriptions compete for the agent’s attention. The claude, codex mcp and skills commands were checked on 2026-09-26 against claude 2.1.283, codex 0.157.1, and the skills CLI 1.7.0; the Codex Expo commands were rerun on 2026-10-02 with the same versions. Codex’s openai-curated marketplace also lists an Expo plugin, but on 2026-10-02 it shipped 13 skills under older names and no MCP server, so the Codex tab installs Expo’s current set and server directly. With --agent codex or --agent cursor, the skills CLI writes to .agents/skills/ in the project.

Terminal window
# Expo: 24 skills plus Expo's remote MCP server
# If the marketplace is missing: claude plugin marketplace add anthropics/claude-plugins-official
claude plugin install expo@claude-plugins-official
# Flutter and Dart: skills plus the Dart MCP server
claude plugin marketplace add flutter/agent-plugins
claude plugin install dart-flutter@dart-flutter
# React Native (Callstack, community) through the skills CLI
npx skills@latest add callstackincubator/agent-skills --skill '*' --agent claude-code -y
# iOS builds: MobileBuildMCP (needs macOS 14.5+ and Xcode 16+)
claude mcp add mobilebuild -- npx -y mobilebuildmcp@latest mcp
StackSkill or serverPublisherGitHub stars, 2026-09-26
Expoexpo/skillsExpo (official)2,612
Flutter and Dartflutter/agent-plugins (renamed from flutter/skills)Flutter team (official)2,996
React Nativecallstackincubator/agent-skillsCallstack (community, not Meta)1,656
iOS buildsMobileBuildMCP (npm mobilebuildmcp 2.7.1, formerly XcodeBuildMCP)Sentryabout 6,400

Skill or MCP server? See the frontend skills roundup and the dev-server MCP servers.

How do you verify a mobile change without reading every line?

Section titled “How do you verify a mobile change without reading every line?”

Make the agent produce evidence, and review the evidence. Every recipe uses the same four gates, in order:

  1. Static gates. Run npx tsc --noEmit and your linter for React Native, or flutter analyze for Flutter. For Expo, add npx expo install --check to catch dependency versions the agent wrote by hand.
  2. Unit and widget tests. Run flutter test, or your JavaScript test runner with React Native Testing Library. Write the acceptance criteria as tests before the agent writes the feature.
  3. Both platforms, on a simulator or emulator. The agent launches the app on iOS and Android and attaches a screenshot of each changed screen (Maestro in the Expo recipe, XCUITest and Compose UI tests in the native one).
  4. Release safety. A staged rollout in the store, and for Expo a fingerprint check so an OTA update never targets a build that lacks its native code.

The developer who opened the task signs off on the evidence; a tech lead owns the release gate. The evidence bundle carries it into a pull request, and mobile app testing patterns cover device matrices and flaky tests.

What breaks when agents build mobile apps?

Section titled “What breaks when agents build mobile apps?”
  • The agent pins versions from memory, writing APIs and config keys from an older SDK. Put the pinned version in AGENTS.md, and let npx expo install or flutter pub add choose package versions.
  • “Done” without a device run. Reject any summary without a screenshot from each platform, and rerun the second prompt.
  • One platform only. The agent tested whichever simulator was running; layout, permissions, and keyboard behaviour differ on the other. Name both targets in the prompt.
  • Paid cloud builds run unattended. The eas-* skills drive paid Expo Application Services builds. Keep builds, submissions, and OTA publishes behind your approval.
  • Too many tools in context. Each MCP server adds its tool list to every turn. Enable only what the task needs; the native recipe shows how to narrow MobileBuildMCP’s workflows.

Cursor users: see the Cursor mobile development guide. To supervise a long agent run from your phone, see driving agents from your phone.