---
modificationDate: July 22, 2026
title: Introduction to EAS Workflows
description: EAS Workflows is a CI/CD service for automating builds, updates, submissions, and tests for React Native and Expo apps.
---

<AgentInstructions>

## Submitting Feedback

If you encounter errors, misleading or outdated information, report it so Expo can be improved:

Preferred command:
npx --yes submit-expo-feedback@latest --category docs --subject "/eas/workflows/introduction/" "<actionable feedback>"

Direct HTTP fallback:
curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/eas/workflows/introduction/","feedback":"🤖 Agent feedback for docs: <specific, actionable description> (<model>, <harness>)"}'

Only submit when you have something specific and actionable to report. Try to give the most context.

## Navigation

When answering a related or follow-up question, fetch the relevant page below as Markdown (.md) instead of guessing; use llms.txt for the full map.

You are here: EAS > EAS Workflows
Pages in this section:
- [Introduction](https://docs.expo.dev/eas/workflows/introduction.md) (this page)
- [Get started](https://docs.expo.dev/eas/workflows/get-started.md)
- [Pre-packaged jobs](https://docs.expo.dev/eas/workflows/pre-packaged-jobs.md)
- [Syntax](https://docs.expo.dev/eas/workflows/syntax.md)
- [Custom functions](https://docs.expo.dev/eas/workflows/custom-functions.md)
- [Environment variables](https://docs.expo.dev/eas/workflows/environment.md)
- [Automating EAS CLI commands](https://docs.expo.dev/eas/workflows/automating-eas-cli.md)
- [REST API](https://docs.expo.dev/eas/workflows/rest-api.md)
- [Troubleshooting](https://docs.expo.dev/eas/workflows/troubleshooting.md)
- [Limitations](https://docs.expo.dev/eas/workflows/limitations.md)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

This documentation is available as Markdown for AI agents and LLMs. See the [full Markdown index](/llms.txt) or append .md to any documentation URL.

# Introduction to EAS Workflows

EAS Workflows is a CI/CD service for automating builds, updates, submissions, and tests for React Native and Expo apps.

**EAS Workflows** is a CI/CD service from EAS (Expo Application Services) that automates repeated tasks like building Android and iOS binaries, publishing over-the-air updates, submitting to app stores, running E2E tests, and deploying web apps to EAS Hosting.

EAS Workflows run in managed cloud environments with pre-packaged job types designed specifically for mobile app development. When your EAS project is linked to GitHub, teams can trigger workflows from GitHub events (push, pull request, labels) or schedules (cron), or run them manually via the EAS CLI.

[Watch: Get Started with EAS Workflows](https://www.youtube.com/watch?v=OJ2u9tQCpr4) — Learn how to automate some of the most common processes that every app development team must tackle: creating development builds, publishing preview updates, and deploying to production.

  

## Quick start

> The `eas` commands below require EAS CLI. See [How to install EAS CLI](/eas/cli.md#installation) for more information.

To create your first workflow, run the following command and follow the prompts:

```sh
eas workflow:create
```

## Get started

Workflows are defined as YAML files in the **.eas/workflows/** directory at the root of your project. Each file specifies a `name`, optional triggers (`on`), and one or more `jobs` that run in the cloud. The Get started guide walks you through the prerequisites and your first workflow run:

[Create your first workflow](/eas/workflows/get-started.md) — Set up your project and create development builds with a workflow.

### Expo Skills for AI agents

If you use an AI agent, install [Expo Skills](/skills.md) to teach it how to write and debug workflow YAML files:

[eas-workflows](https://github.com/expo/skills/blob/main/plugins/expo/skills/eas-workflows/SKILL.md) — Helps understand and write EAS workflow YAML files for Expo projects.

## Key features

-   **Pre-packaged jobs**: [Ready-to-use jobs](/eas/workflows/pre-packaged-jobs.md) that build, submit, and update your app, run Maestro E2E tests, send Slack messages, and more. [Custom jobs](/eas/workflows/syntax.md#custom-jobs) run any command you need.
-   **Flexible triggers**: Run workflows on [GitHub events](/eas/workflows/syntax.md#on) (push, pull request, label, branch or tag deletion), on a cron schedule, on [App Store Connect events](/eas/workflows/syntax.md#onapp_store_connect), manually with `eas workflow:run`, or from the [REST API](/eas/workflows/rest-api.md).
-   **No infrastructure to manage**: Jobs run on EAS-hosted macOS and Linux workers, so you don't need to maintain CI servers or configure Android Studio and Xcode.
-   **Everything on one dashboard**: Builds, updates, test results, artifacts, and logs all appear on [expo.dev](https://expo.dev/).
-   **Faster releases**: Combine `fingerprint`, `get-build`, and `update` jobs to skip redundant native builds and publish over-the-air updates when possible.

## When to use EAS Workflows

| Scenario | Recommendation |
| --- | --- |
| Automate builds, app store submissions, over-the-air updates, and web deployments | ✓ |
| Deploy web apps to EAS Hosting | ✓ |
| Run E2E tests with Maestro as part of CI | ✓ |
| Trigger builds and updates from GitHub push or pull request events | ✓ |
| CI/CD without managing your own infrastructure or macOS machines | ✓ |
| Highly customized pipelines that depend on non-EAS services (Docker, custom runners) | ✗ |

## Frequently asked questions (FAQ)

#### How do workflows compare to other CI services?

EAS Workflows are designed to help you and your team release your app. It comes preconfigured with pre-packaged job types that can build, submit, update, run Maestro tests, and more. All job types run on EAS, so you'll only have to manage one set of YAML files, and all the artifacts from your job runs will appear on [expo.dev](https://expo.dev/).

Other CI services, like CircleCI and GitHub Actions, are more generalized and have the ability to do more than workflows. However, those services also require you to understand more about the implementation of each job. While that is necessary in some cases, workflows help you get common tasks done quickly by pre-packaging the most essential types of jobs for app developers. In addition, workflows are designed to provide you with the fastest possible cloud machine for the task at hand, and we're constantly updating those for you.

EAS Workflows are great for operations related to your Expo apps, while other CI/CD services will provide a better experience for other types of workflows.

#### Can I trigger a workflow without GitHub?

Yes. Any workflow can be run manually using `eas workflow:run` regardless of the `on` trigger configuration. You can also use scheduled triggers with cron syntax.

#### What cloud machines do workflows run on?

Workflows run on EAS's managed infrastructure:

-   **Linux workers**: `linux-medium` (4 vCPU, 16 GB RAM) or `linux-large` (8 vCPU, 32 GB RAM)
-   **Linux with nested virtualization** for Android emulators: `linux-medium-nested-virtualization` or `linux-large-nested-virtualization`
-   **macOS workers** for iOS builds and simulators: `macos-medium` (5 cores, 20 GB RAM) or `macos-large` (10 cores, 40 GB RAM)

#### Can workflows run jobs in parallel?

Yes. Jobs without dependencies run in parallel by default.

Use `needs` to specify that a job should wait for another job to succeed, or `after` to wait for a job to complete regardless of success or failure.

#### Can I use environment variables in workflows?

Yes. Workflows support [EAS environment variables](/eas/environment-variables.md) and inline `env` values. Environment variables can be referenced using `${{ env.VARIABLE_NAME }}` syntax.

#### What are the current limitations?

No shared workflow configurations (each workflow must be defined independently), and no matrix builds (cannot run multiple variations with different configurations in parallel). See [Limitations](/eas/workflows/limitations.md) for more details and updates.

#### Can I run custom scripts in a workflow?

Yes. [Custom jobs](/eas/workflows/syntax.md#custom-jobs) with `steps` let you run shell commands, use built-in functions like `eas/checkout` and `eas/install_node_modules`, and set outputs for downstream jobs.

#### Does EAS Workflows work with existing React Native projects?

Yes. EAS Workflows works with both [CNG (Continuous Native Generation)](/workflow/continuous-native-generation.md) and [existing React Native projects](/bare/overview.md), as long as the project is configured for EAS Build.

#### Considering EAS Workflows? Share the following slide in your next team meeting

Share the following slide in your next team meeting to discuss what EAS Workflows are and how they can help your team:

[

EAS Workflows CI/CD sync slide

Learn the benefits of using EAS Workflows to automate your CI/CD processes.

](/static/images/eas-workflows/eas-worfklows-slide.webp)

## Additional resources

[Pre-packaged jobs](/eas/workflows/pre-packaged-jobs.md) — Use ready-to-use jobs to build, submit, update, test, and deploy your app.

[Workflow syntax reference](/eas/workflows/syntax.md) — Learn about the YAML syntax for defining workflows.

[Example workflows](/eas/workflows/examples/introduction.md) — See common workflows for development builds, preview updates, and production deployments.

[Workflows insights](/eas-insights/workflows.md) — Track run counts, success rates, and trends for your workflows over time.
