This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Share previews with your team

Edit page

Learn how to use EAS Update to send OTA updates and share previews with a team.


Updates generally fix small bugs and push small changes in between app store releases. They allow updating the non-native parts of our example app, such as JavaScript code, styling, and images.

In this chapter, we'll use EAS Update to share changes with our team. This will help us and our team quickly share previews of the change.

Watch: How to share previews with your team
Watch: How to share previews with your team

Set up EAS Update to share preview versions of your app with your team between app store releases.


1

Install expo-updates library

To initialize our project and send an update, we need to use the expo-updates library. Run the following command to install it:

Terminal
- npx expo install expo-updates
- yarn expo install expo-updates
- pnpm expo install expo-updates
- bun expo install expo-updates

2

Configure EAS Update

To initialize our project with EAS Update, run the following command:

Terminal
- eas update:configure

This command adds the updates and runtimeVersion properties to app.json, which our app.config.js reads through config. It also adds a channel to every build profile in eas.json:

eas.json
{ "build": { "development": { %%placeholder-start%%... %%placeholder-end%% "channel": "development" }, "ios-simulator": { %%placeholder-start%%... %%placeholder-end%% }, "preview": { %%placeholder-start%%... %%placeholder-end%% "channel": "preview" }, "production": { %%placeholder-start%%... %%placeholder-end%% "channel": "production" } } %%placeholder-start%%... %%placeholder-end%% }
What if app.config.js doesn't read from app.json?

If your app.config.js doesn't use the config values from app.json, EAS CLI can't add the updates and runtimeVersion properties for you. Instead, it prints their values to add to app.config.js manually. After you add them, run eas update:configure again to finish the setup.

What is a channel?

Channels are used to group builds together. If we have an Android and iOS build, both on the app store, we can give them both a channel of production. Later, we can tell EAS Update to target the production channel, so our update will affect all builds with a production channel.

3

Create a development build

We need to create a new development build since our last build doesn't contain the expo-updates library. Run the following command:

Terminal
- eas build --platform android --profile development

After the new version of the development build is created, make sure to install it on a device.

4

Modify the JavaScript code of the app

Let's modify our example app's JavaScript code. If you are not using Sticker Smash app, you can modify any piece of your code to see the changes in the app.

We'll modify the text of the first button in our example app that says Choose a photo to Select a photo.

src/app/(tabs)/index.tsx
<Button theme="primary" label="Select a photo" onPress={pickImageAsync} />

5

Publish an update

Instead of creating a new build to share this change with our team for testing, let's publish an update:

Terminal
- eas update --channel development --message "Change first button label"

In the command above, we used the development channel. Every update is associated with a channel name. It is similar to every commit that we make with git, which is associated with a git branch.

So, we use the development channel in our build profile and publish an update to it. This tells EAS to deliver the update to builds with the development channel. When we make an EAS Update channel, EAS automatically maps it to a branch with the same name.

After publishing the update, the CLI prints information about it.

Click the EAS Dashboard link to see the update under Over-the-air updates > Update groups:

6

Preview the update live in a development build

To preview the live update in a development build:

  • Log in to your Expo account within the development build.
  • Open the Updates tab.
  • On Android, tap the Branch: development card, and then tap the update. On iOS, tap Open next to the update with Branch: development.

7

Sharing changes with preview or production builds

Updates for non-development builds (preview or production) are automatically downloaded to the device when the app starts up and makes a request for any new updates.

Any team member running the preview or production build will receive the update with the changes we push to those specific branches.

For example, for a preview build, we can run:

Terminal
- eas update --channel preview --message "Change first button label"

Here is an example where we've published an update for the preview build. To test the update, force close and reopen the app twice to download and view the changes:

Summary

Chapter 10: Share previews with your team

We successfully configured EAS Update to manage and publish over-the-air updates across platforms, and explored methods to fetch updates to review.

In the next chapter, learn about the process of triggering builds from a GitHub repository.

Next: Chapter 11: Trigger builds from a GitHub repository