expo
Assists with building, deploying, and updating React Native applications using Expo. Use when setting up file-based routing with Expo Router, configuring EAS Build and Submit, implementing over-the-air updates, or integrating Expo SDK modules for camera, location, and notifications. Trigger words: expo, expo router, eas build, eas update, expo sdk.
Usage
Getting Started
- Install the skill using the command above
- Open your AI coding agent (Claude Code, Codex, Gemini CLI, or Cursor)
- Reference the skill in your prompt
- The AI will use the skill's capabilities automatically
Example Prompts
- "Review the open pull requests and summarize what needs attention"
- "Generate a changelog from the last 20 commits on the main branch"
Documentation
Overview
Expo is a development platform for React Native that provides file-based routing (Expo Router), cloud builds (EAS Build), automated store submissions (EAS Submit), and over-the-air updates (EAS Update). It includes 50+ SDK modules for native device APIs and lets developers ship iOS and Android apps without managing Xcode or Android Studio.
Instructions
- When starting a new app, use
npx create-expo-appwith TypeScript and set up Expo Router for file-based navigation in theapp/directory with layouts, dynamic routes, and route groups. - When building for production, configure EAS Build profiles (
development,preview,production) ineas.jsonand use cloud builds instead of local builds for reproducibility. - When deploying updates, use EAS Update for instant JavaScript-only bug fixes that bypass app store review, with channel-based routing and rollback support.
- When accessing device APIs, use Expo SDK modules (
expo-camera,expo-location,expo-notifications,expo-secure-store) and config plugins to handle native permissions without ejecting. - When testing, use Expo Go for quick iteration on physical devices, and development builds for testing custom native modules.
- When optimizing performance, use
expo-imageover the built-inImagecomponent for caching and modern format support, and configure splash screens and app icons viaapp.config.ts.
Examples
Example 1: Build a mobile app with tab navigation and push notifications
User request: "Create an Expo app with tabs, push notifications, and deep linking"
Actions:
- Scaffold with
npx create-expo-appand set up Expo Router withapp/(tabs)/_layout.tsx - Configure
expo-notificationsfor push notifications (APNs and FCM) with config plugin - Add deep linking via universal links in
app.config.ts - Set up EAS Build profiles and EAS Submit for App Store and Google Play
Output: A tab-based mobile app with push notifications, deep linking, and automated store submission.
Example 2: Ship a bug fix via over-the-air update
User request: "Push an urgent fix to production without going through app store review"
Actions:
- Fix the bug in the JavaScript/TypeScript code
- Run
eas update --channel productionto publish the update - Verify the update fingerprint to ensure no native code changes are required
- Monitor rollout and use rollback if issues are detected
Output: A production fix deployed instantly to all users without waiting for app store review.
Guidelines
- Use Expo Router for navigation since file-based routing is simpler and supports deep linking automatically.
- Use EAS Build instead of local builds for reproducible, cross-platform builds without local Xcode or Android Studio.
- Use
expo-imageoverImagefor better caching, transitions, and modern format support (WebP, AVIF). - Store sensitive data in
expo-secure-store, never in AsyncStorage or MMKV which are unencrypted. - Use config plugins instead of ejecting to keep managed workflow benefits.
- Use development builds for testing native modules since Expo Go does not support custom native code.
Information
- Version
- 1.0.0
- Author
- terminal-skills
- Category
- Development
- License
- Apache-2.0