> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchtoday.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile Deployment with EAS

> Build and distribute your app with Expo Application Services

## Overview

Expo Application Services (EAS) handles building and submitting your app to the App Store and Google Play.

For most apps, EAS is the only deployment workflow you need.

## Prerequisites

* Expo account ([expo.dev](https://expo.dev))
* EAS CLI installed: `npm install -g eas-cli`
* Apple Developer account (for iOS)
* Google Play Developer account (for Android)

## Steps

## 1. Configure EAS

```bash theme={null}
cd apps/mobile

# Login to Expo
eas login

# Configure EAS for your project
eas build:configure
```

This creates `eas.json`:

```json theme={null}
{
  "cli": {
    "version": ">= 5.0.0"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}
```

## Development Builds (Required for Native SDKs)

Some integrations (RevenueCat, push notifications, background uploads) require
a development build and will not work in Expo Go.

Create a dev client:

```bash theme={null}
eas build --platform ios --profile development
eas build --platform android --profile development
```

## 2. Build for iOS

```bash theme={null}
# Development build (with dev client)
eas build --platform ios --profile development

# Production build (for App Store)
eas build --platform ios --profile production
```

## 3. Build for Android

```bash theme={null}
# Development build
eas build --platform android --profile development

# Production build (for Play Store)
eas build --platform android --profile production
```

## 4. Submit to Stores

```bash theme={null}
# Submit iOS build to App Store Connect
eas submit --platform ios

# Submit Android build to Google Play
eas submit --platform android
```

## Environment Variables

For production builds, configure environment variables in `eas.json`:

```json theme={null}
{
  "build": {
    "production": {
      "env": {
        "EXPO_PUBLIC_API_URL": "https://your-api.railway.app"
      }
    }
  }
}
```

## Troubleshooting

<AccordionGroup>
  <Accordion title="Build fails with signing error">
    **iOS**: Run `eas credentials` to manage certificates **Android**: Ensure
    keystore is properly configured
  </Accordion>

  <Accordion title="Build takes too long">
    EAS builds typically take 10-20 minutes. Check build logs for specific
    steps.
  </Accordion>

  <Accordion title="App crashes on production build">
    Check that all environment variables are set correctly for production.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="App Store Submission" icon="apple" href="/app-stores/index">
    Submission checklist and required assets
  </Card>

  <Card title="Security Checklist" icon="check" href="/security/checklist">
    Final pre-launch review
  </Card>
</CardGroup>
