---
title: Getting started
---

import { Terminal } from '~/ui/components/Snippet';

Setting up EAS Update allows you to push critical bug fixes and improvements that your users need right away.

## Prerequisites

EAS Update requires the following versions or greater:

- Expo CLI >= 5.3.0
- EAS CLI >= 0.50.0
- Expo SDK >= 45.0.0
- expo-updates >= 0.13.0

## Install Expo CLI and EAS CLI

Install EAS and Expo CLIs by running:

<Terminal cmd={['$ npm install --global eas-cli expo-cli']} />

## Create an Expo account

1. Create an account at [https://expo.dev/signup](https://expo.dev/signup)
2. Then, log in with EAS CLI:

   <Terminal cmd={['$ eas login']} />

3. After logging in, you can verify the logged-in account with `eas whoami`.

## Create a project

Create a project by running:

<Terminal cmd={['$ npx create-expo-app']} />

## Configure your project

To configure your project, run the following commands in the order they are specified:

<Terminal
  cmd={[
    '# Install the latest `expo-updates` library',
    '$ npx expo install expo-updates',
    '',
    '# Initialize your project with EAS Update',
    '$ eas update:configure',
    '',
    '# Set up the configuration file for builds',
    '$ eas build:configure',
  ]}
  cmdCopy="expo install expo-updates && eas update:configure && eas build:configure"
/>

After running these commands, **eas.json** file will be created in the root directory of your project.

Inside the `preview` and `production` build profiles in **eas.json**, add a `channel` property for each:

```json
{
  "build": {
    "preview": {
      "channel": "preview"
      // ...
    },
    "production": {
      "channel": "production"
      // ...
    }
  }
}
```

The `channel` allows you to point updates at builds. For example, if we set up a GitHub Action to publish changes on merge, it will make it so that we can merge code into the "production" Git branch. Then, each commit will trigger a GitHub Action that will publish an update that will be available to builds with the channel "production".

**Optional**: If your project is a bare React Native project, see [Updating bare app](/bare/updating-your-app) for any additional configuration.

## Create a build for the project

Next, we'll need to create a build for Android or iOS. [Learn more](/build/setup).

We recommend creating a build with the `preview` build profile first. [Learn more](/build/internal-distribution) about setting up your devices for internal distribution.

Once you have a build running on your device or in a simulator, we'll be ready to send it an update.

## Make changes locally

Once we've created a build, we're ready to iterate on our project. Start a local development server with:

<Terminal cmd={['$ yarn start', '# or', '$ npx expo start']} />

Then, make any desired changes to your project's JavaScript, styling, or image assets.

## Publish an update

Now we're ready to publish an update to the build created in the previous step.

Then publish an update with the following command:

```bash
eas update --branch [branch] --message [message]

# Example
eas update --branch preview --message "Updating the app"
```

Once the update is built and uploaded to EAS and the command completes, force close and reopen your app up to two times to download and view the update.

## Next

You can publish updates continuously with GitHub Actions. Learn more: [Using GitHub Actions with EAS Update](/eas-update/github-actions)
