> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revyl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Run and Manage App Builds

**Builds** are the foundation of everything in Revyl because tests, reports, and app comparisons all depend on having a concrete app version to run against. Builds are stored in an **App** and can either be built on [Revyl's cloud infrastructure](/remote-builds/index) or uploaded from an external source.

## Creating an App

<Tip>Create separate apps for each platform + environment you need: `iOS Production`, `iOS QA`, `Android Staging`. Don't create a new app for each release, just upload a new build to the existing app.</Tip>

1. Click **Create app**
2. Enter a name, pick **iOS** or **Android**, and optionally add a description
3. Upload a build

## Ways to add builds

Revyl supports four main paths for getting builds into the platform.

* **Add builds manually**: Upload an Android APK or iOS app bundle directly from the Revyl UI. Drag in an `.apk` or `.app` bundle, name it (e.g. `v1.2.0`, `sprint-42`)
* **Import from Expo**: Automatically sync your EAS builds directly with Revyl (see [Expo Auto Sync](/builds/expo-sync)).
* **Remote build**: Build from source in Revyl's cloud environment (see [Remote Builds](/remote-builds/index)).
* **CLI**: Upload builds from your terminal or CI pipeline (see [CLI](/cli)).

Supported formats:

* **Android**: `.apk` (or `.zip` containing `.apk`)
* **iOS**: Simulator `.app` bundle

<Warning>Revyl requires simulator or emulator builds to function. See [Artifact Requirements](/builds/artifact-requirements) and [Framework Guides](/builds/xcode) for more details.</Warning>

## Types of Builds

Depending on the framework being used, builds differ in how much of the app and assets are bundled. Frameworks like Expo enable quick iteration via hot-reload by decoupling JS from native modules during local development.

* **For testing:** Use a `preview` or production-like build that bundles the app binary, JS, and all required assets and native modules.
* **For dev loops:** Use a `dev` build that relies on a local dev server (e.g., Metro) for live JS bundling and hot-reload.

See specific [Framework Guides](/builds/xcode) for further guidance.

<Tip>Name apps by platform + environment (for example, `iOS Production`, `iOS QA`, `Android Staging`) so tests and dev workflows target the correct app. Run tests and CI against preview/release builds; reserve dev/debug builds for local dev loops.</Tip>

## Active Build

Every app has one **active build** that tests run against by default:

* **Latest**: the most recent upload, selected automatically
* **Pinned**: you manually set a build via **Make Current** in the build menu

Upload a new build and every test on that app picks it up, unless the test is pinned to a specific version.

## App Workspace

Click any app to open its workspace:

* **Builds tab**: all uploaded binaries with version, date, package, source, and readiness status
* **Coverage tab**: per-test coverage across builds
* **Stability tab**: health matrix classifying tests as stable, flaky, or broken
* **Trends tab**: pass rate and coverage over time

## Related guides

<CardGroup cols={2}>
  <Card title="Expo Auto Sync" href="/builds/expo-sync">
    Import Expo and EAS builds into Revyl
  </Card>

  <Card title="Remote Builds" href="/remote-builds/quickstart">
    Build from source in Revyl's cloud environment
  </Card>

  <Card title="CLI" href="/cli">
    Upload builds from the terminal or CI
  </Card>

  <Card title="Builds" href="/builds">
    Return to the Builds section overview
  </Card>
</CardGroup>
