# React Native Expo

**Using Expo Go**

To use Expo Go in Moropo, upload the Expo Go .app and .apk in place of your release build files.

**Using an Expo Dev Client**

If you wish to test using an Expo Dev Client, follow Expo's instructions on producing an [iOS Simulator build](https://docs.expo.dev/build-reference/simulators/) or [Android APK](https://docs.expo.dev/build-reference/apk/). Once you have the build files (.app and .apk), you can upload them to Moropo in the usual way.

**Launch your app via an Expo URL**

*These examples assume you're working with an Expo Dev Client.*

Grab your Expo URL and use the `openLink` command to launch your app:

```yaml
appId: ${BUNDLEID}
---
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=https://u.expo.dev/cx1e344b-8011-4434-91a6-dec36deb68c0?channel-name=moropo-452&runtime-version=exposdk:47.0.0&platform=ios"
```

If you're using the Moropo GitHub Expo Integration then the Expo Release Channel URL can be auto-populated for you via the [${EXPORELEASECHANNEL}](/creating-tests/environment-variables/usd-exporeleasechannel.md) variable.

```yaml
appId: ${BUNDLEID}
---
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}"
```

#### Disabling Onboarding

{% hint style="warning" %}
Disable Onboarding isn't working in Expo SDK 51
{% endhint %}

If it's the first time opening Expo (as it always the case on Moropo clean devices) then you will be presented with the Expo onboarding flow:

> Hello there, friend! :wave:\
> \
> Since this is your first time opening this development build, we wanted to show you this menu...

<figure><img src="/files/3thvmEQgjKsAYrCOCoZG" alt="" width="188"><figcaption><p>Expo onboarding flow appearing during a test run</p></figcaption></figure>

It's easy to bypass this menu by adding the `disableOnboarding` parameter to the end of your Expo URL. This parameter will instruct Expo to skip this screen so you don't need to include it in your test flow.\
\
Note, due to differences between Android & iOS this has to be formatted slightly differently for each.

* Android - `%26disableOnboarding%3D1`
* iOS - `&disableOnboarding=1`

```yaml
appId: ${BUNDLEID}
---
#Android Example
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}%26disableOnboarding%3D1"
#iOS Example
- openLink:
    link: "${BUNDLEID}://expo-development-client/?url=${EXPORELEASECHANNEL}&disableOnboarding=1"
```

Alternatively, you can manage the difference between the two by using [Conditionals](/creating-tests/advanced-use-cases/conditionals.md)&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.moropo.com/guides/react-native-expo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
