# Expo Deployment

Production deployment discipline for Expo applications.

## Rules

1. **EAS Build for store binaries.** Production iOS and Android builds through EAS, not local Xcode archives ad hoc. Credentials managed by EAS.

2. **OTA for JS, binary for native.** `eas update` ships JavaScript and asset changes. Native module changes require a new build and store submission.

3. **Environment-specific config.** `app.config.js` reads from EAS secrets and build profiles. Don't hardcode API URLs for production in source.

4. **TestFlight and internal tracks first.** Ship to internal testers before production store release. Store rejection is slower than TestFlight feedback.

5. **Version and build numbers increment.** Every store submission bumps `version` or `ios.buildNumber` / `android.versionCode`. Stores reject duplicate build numbers.

## What This Replaces

Local-only builds, OTA updates that change native code, and store rejections from version collisions.

## Official Source

Distilled from Expo's official agent skills.
Full upstream: https://officialskills.sh/expo/skills/expo-deployment
