Skip to content

MysticX Release Workflow

1. Local Development

Run the app locally with hot-reload:

PlatformCommand
iOS Simulatornpx expo start --ios
Android Emulatornpx expo start --android
Both + pickernpx expo start

2. Build Locally

Build on your machine — faster feedback, no queue wait.

Prerequisites:

  • iOS: Xcode + CocoaPods (sudo gem install cocoapods)
  • Android: Android SDK + JDK 17
  • Credentials configured via eas credentials

Development builds

bash
eas build --profile development --platform ios --local
eas build --profile development --platform android --local

Preview builds

bash
eas build --profile preview --platform ios --local
eas build --profile preview --platform android --local

Production builds

bash
eas build --profile production --platform ios --local
eas build --profile production --platform android --local

Output files are saved to the project root (.ipa for iOS, .aab/.apk for Android).

3. Submit to Stores

Submit a locally-built artifact:

bash
eas submit --platform ios --path ./build-*.ipa
eas submit --platform android --path ./build-*.aab

This sends:

  • iOS build to App Store Connect → available in TestFlight
  • Android build to Google Play Console → available in internal testing track

First time setup: Run eas credentials to configure your Apple and Google credentials.

4. OTA Updates (quick JS-only fixes)

Push JS-only updates without rebuilding:

bash
eas update --branch production --message "description of change"

This updates both iOS and Android apps simultaneously.

Requires: expo-updates to be installed and configured in your app.

5. Publish to Stores

iOS — App Store

  1. Go to App Store Connect
  2. Select your app → prepare a new version
  3. Choose the build from TestFlight
  4. Fill in release notes, screenshots, etc.
  5. Submit for App Review

Android — Google Play

  1. Go to Google Play Console
  2. Select your app → Production
  3. Create a new release and select the build from internal testing
  4. Fill in release notes, screenshots, etc.
  5. Submit for review

EAS Remote Builds (alternative)

When you prefer to offload builds to EAS servers instead of building locally.

Remote development builds

bash
eas workflow:run .eas/workflows/create-development-builds.yml

Remote preview builds

bash
eas workflow:run .eas/workflows/create-preview-builds.yml

Remote production builds

bash
eas workflow:run .eas/workflows/create-production-builds.yml

Remote build + submit to stores

bash
eas workflow:run .eas/workflows/submit-to-stores.yml

OTA update

bash
eas workflow:run .eas/workflows/ota-update.yml

PR preview

Automatically runs on pull requests — lints, type-checks, and publishes a preview update.

Lint + type-check

bash
eas workflow:run .eas/workflows/lint-and-typecheck.yml

Quick Reference

TaskCommand
Local Development
Run locally (iOS)npx expo start --ios
Run locally (Android)npx expo start --android
Local Builds
Dev build (iOS)eas build --profile development --platform ios --local
Dev build (Android)eas build --profile development --platform android --local
Preview build (iOS)eas build --profile preview --platform ios --local
Preview build (Android)eas build --profile preview --platform android --local
Production build (iOS)eas build --profile production --platform ios --local
Production build (Android)eas build --profile production --platform android --local
Submit
Submit iOS buildeas submit --platform ios --path ./build-*.ipa
Submit Android buildeas submit --platform android --path ./build-*.aab
OTA Update
Push JS updateeas update --branch production --message "fix"
EAS Remote (alternative)
Remote dev buildseas workflow:run .eas/workflows/create-development-builds.yml
Remote preview buildseas workflow:run .eas/workflows/create-preview-builds.yml
Remote production buildseas workflow:run .eas/workflows/create-production-builds.yml
Remote build + submiteas workflow:run .eas/workflows/submit-to-stores.yml
Remote OTA updateeas workflow:run .eas/workflows/ota-update.yml
Remote lint + type-checkeas workflow:run .eas/workflows/lint-and-typecheck.yml

Internal documentation for MysticX team