> ## 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.

# Quickstart

> Run your first cloud build and test against it

## Prerequisites

* A Revyl account
* Your mobile app project

<Steps>
  <Step title="Install the CLI">
    ```bash theme={null}
    curl -fsSL https://revyl.com/install.sh | sh
    revyl auth login
    ```
  </Step>

  <Step title="Run init">
    ```bash theme={null}
    revyl init
    ```

    `revyl init` creates `.revyl/config.yaml` and helps you connect the project to
    the right Revyl app.
  </Step>

  <Step title="Configure the build">
    Configure the build commands in `.revyl/config.yaml`:

    <Tabs>
      <Tab title="Expo">
        ```yaml theme={null}
        build:
          platforms:
            ios:
              commands:
                - bun install
                - bunx expo prebuild --platform ios
                - cd ios && pod install
                - cd ios && xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -configuration Release -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build ARCHS=arm64
              output: ios/build/Build/Products/Release-iphonesimulator/*.app
              app_id: "<your-ios-app-uuid>"
            android:
              commands:
                - bun install
                - bunx expo prebuild --platform android
                - cd android && ./gradlew assembleRelease
              output: android/app/build/outputs/apk/release/*.apk
              app_id: "<your-android-app-uuid>"
        ```
      </Tab>

      <Tab title="React Native">
        ```yaml theme={null}
        build:
          platforms:
            ios:
              commands:
                - npm install
                - cd ios && pod install
                - cd ios && xcodebuild -workspace YourApp.xcworkspace -scheme YourApp -configuration Release -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build ARCHS=arm64
              output: ios/build/Build/Products/Release-iphonesimulator/*.app
              app_id: "<your-ios-app-uuid>"
            android:
              commands:
                - npm install
                - cd android && ./gradlew assembleRelease
              output: android/app/build/outputs/apk/release/*.apk
              app_id: "<your-android-app-uuid>"
        ```
      </Tab>

      <Tab title="iOS">
        ```yaml theme={null}
        build:
          platforms:
            ios:
              commands:
                - xcodebuild -project YourApp.xcodeproj -scheme YourApp -configuration Release -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath build ARCHS=arm64
              output: build/Build/Products/Release-iphonesimulator/*.app
              app_id: "<your-ios-app-uuid>"
        ```
      </Tab>

      <Tab title="Android">
        ```yaml theme={null}
        build:
          platforms:
            android:
              commands:
                - ./gradlew assembleRelease
              output: app/build/outputs/apk/release/*.apk
              app_id: "<your-android-app-uuid>"
        ```
      </Tab>
    </Tabs>

    For the full set of build options — artifact requirements, environment variables, toolchain images, and more — see [Configuration](/remote-builds/configuration).
  </Step>

  <Step title="Run the build">
    ```bash theme={null}
    revyl build --remote --platform ios
    ```

    Useful variations:

    ```bash theme={null}
    revyl build --remote --platform ios --debug     # stream full build logs
    revyl build --remote --platform android --json  # machine-readable result
    revyl build --remote --platform ios --detach    # queue and return a build ID
    ```

    For a detached build:

    ```bash theme={null}
    revyl build status <build-job-id> --follow
    revyl build cancel <build-job-id>
    ```
  </Step>

  <Step title="Use the build">
    The new version is registered on your app and set as current. Boot a device
    with it and run a test:

    ```bash theme={null}
    revyl device start --platform ios --app-id <your-ios-app-uuid>
    revyl test run <test-alias>
    ```
  </Step>
</Steps>

## If the build fails

Check the log tail printed by `revyl build`. You can also run:

```bash theme={null}
revyl build status <build-id>
```

That shows where the build failed and the most recent logs.

## Next steps

<CardGroup cols={2}>
  <Card title="Configuration" href="/remote-builds/configuration">
    Multiple build streams, env vars, repo-backed source, all CLI flags.
  </Card>

  <Card title="Caching" href="/remote-builds/caching">
    Make the second build much faster than the first.
  </Card>

  <Card title="Toolchain Images" href="/remote-builds/toolchains">
    Pin the Xcode or Android toolchain version.
  </Card>

  <Card title="GitHub Integration" href="/integrations/github">
    Build every pull request automatically.
  </Card>
</CardGroup>
