# Expo Dev Client

Expo Dev Client allows you to interact with native modules without ejecting or using the base workflow. While developing in the Expo Dev Client, you will still have access to the same hot reload and debugging tools present in Expo Go.

### When to setup

Expo Dev Client is required when using native modules. Specifically, for in-app-purchases. You will need to complete these setup steps again whenever you npm install a new package. Or to see change in app.json reflect

### Setup on device

* To build your app, run `eas build --profile development --platform ios`

  * You will have to register your device using the instructions displayed by Expo
  * View your development builds [here](https://expo.dev/accounts/\[account]/projects/\[projectName]/builds)
    * Press install & scan the QR code to install it to your device
    * Make sure your device has development mode enabled

  <figure><img src="/files/5lPDaxRwh10oH13cRp2b" alt=""><figcaption></figcaption></figure>

  * Install the development build on your client
  * Need more help? View detailed instructions [here](https://www.revenuecat.com/blog/engineering/expo-in-app-purchase-tutorial/)
* To test locally, run `expo start --dev-client`
  * Press `c` in the terminal to reveal the QR code
  * Scan the QR code from your phone

### Setup in simulator

{% hint style="info" %}
Please note, in-app-purchases are not supported in the simulator. You must use a real device
{% endhint %}

* Build dev client for simulator
  * `eas build -p ios --profile simulator`
* Install dev client on simulator
  * `eas build:run -p ios`
* Run the project
  * run `expo start --dev-client`
* Press `i` on the terminal to launch the dev client


---

# 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://shipnative.gitbook.io/shipnative/guides/expo-dev-client.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.
