> For the complete documentation index, see [llms.txt](https://docs.runway.team/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.runway.team/integrations/app-stores/expo-eas.md).

# Expo EAS

Teams shipping over-the-air (OTA) releases built with[ Expo](https://expo.dev) can connect Expo Application Services (EAS) to Runway to manage these releases and rollouts directly alongside their binary release process.

### How it works

Runway treats Expo EAS as an app store destination, the same way it treats App Store Connect or Google Play Console for binary releases. Once connected, Runway can read your app's EAS update groups, channels, and branches, and use them to power two release steps:

* Release: Publish an update group to your production channel directly from Runway
* Rollout: Monitor and control the staged rollout of a published update, including adjusting the rollout percentage&#x20;

#### Converting from legacy OTA CI distribution step

If your app was previously configured to publish OTA updates via a CI/CD workflow, connecting Expo EAS automatically converts your existing CI distribution step into an Expo Release step so that you no longer need a dedicated CI step just to ship an OTA update.

{% hint style="info" %}
Existing release and rollout automations you've configured for CI-based OTA distribution carry over to the new Expo Release step. Nothing else about your Flightpath needs to change.
{% endhint %}

#### Expo EAS alongside binary releases

For teams shipping native code and OTA updates together, Expo EAS appears as its own app within your Flightpath, alongside iOS and Android. For example, a React Native app shipping to the App Store, Google Play, and OTA via Expo EAS might have a Flightpath like:

| Step archetype                   | Step configuration                                                                                                                                                             |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Kickoff                          | 1 step for iOS, Android, & Expo                                                                                                                                                |
| <p></p><p>Feature readiness</p>  | 1 step for iOS, Android, & Expo                                                                                                                                                |
| Beta testing                     | <p>3 steps</p><ul><li>iOS step </li><li>Android step </li><li>Expo step (pointing to your Expo EAS beta/staging channel)</li></ul>                                             |
| CI                               | <p>2 steps</p><ul><li>iOS / Android step </li><li>Expo step (publishing the update group to your Expo EAS staging channel that will be selected in the Release step)</li></ul> |
| <p></p><p>Regression testing</p> | 1 step for iOS, Android, & Expo                                                                                                                                                |
| Screenshots                      | <p>2 steps</p><ul><li>iOS app connected to App Store Connect</li><li>Android app connected to Google Play Console</li></ul>                                                    |
| Metadata                         | <p>2 steps</p><ul><li>iOS app connected to App Store Connect</li><li>Android app connected to Google Play Console</li></ul>                                                    |
| Approvals                        | 1 step for iOS, Android, & Expo                                                                                                                                                |
| Submission                       | <p>2 steps</p><ul><li>iOS app submits to App Store Connect</li><li>Android app submits to Google Play Console</li></ul>                                                        |
| Review                           | <p>2 steps</p><ul><li>iOS app reviewed in App Store Connect</li><li>Android app reviewed in Google Play Console</li></ul>                                                      |
| Release                          | <p>3 steps</p><ul><li>iOS app releases in App Store Connect</li><li>Android app releases in Google Play Console</li><li>OTA releases in Expo EAS</li></ul>                     |
| Rollout                          | <p>3 steps</p><ul><li>iOS app rollout in App Store Connect</li><li>Android app rollout in Google Place Console </li><li>OTA rollout in Expo EAS</li></ul>                      |

The Release step for Expo EAS shows a list of eligible update groups for the branch mapped to your configured production channel, so you can pick the right update to publish without leaving Runway.

For each update group, you'll see:

* Group ID
* Branch
* Channel
* Runtime version
* Created time
* Platforms

{% hint style="info" %}
Already-published update groups, along with rollback and republish groups, are excluded from this list, so you're only choosing between new, publishable updates.
{% endhint %}

Once an update is published, the Rollout step lets you monitor and manage its staged rollout the same way you would a phased release on the App Store or Google Play:

* View current rollout percentage
* Manually adjust the rollout percentage
* View key rollout metrics for the update

{% hint style="info" %}
Initial rollout percentage is configured on the Release step or on Settings > Workflow steps.
{% endhint %}

### Set up

#### Navigate to the Integration settings view

1. Select an app in the top left corner from the Switcher
2. Navigate to App Settings by clicking the gear icon (⚙️) at the top of the Timeline sidebar
3. Click on Integrations in the sidebar

#### Connect to Expo EAS

1. Find the Expo EAS integration module under the App store section
2. Click the Connect button
3. Enter your Expo EAS project ID and an EAS access token with permission to read and publish updates for the project

{% hint style="info" %}
Your EAS access token needs read access to update groups, channels, and branches, and permission to publish and roll out updates for the connected project. See[ Expo's documentation on access tokens](https://docs.expo.dev/accounts/programmatic-access/) for how to generate one.
{% endhint %}

<br>
