> ## 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 with cloud-build credits and available capacity
* Your mobile app project in a Git worktree
* A Revyl app for the selected platform, with its UUID configured in the recipe's `app_id` before submission

<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` with a stable project ID and detected
    named build profiles. Use `revyl app list --platform ios` (or `android`) to
    find your app UUID, or `revyl app create` to create one.
  </Step>

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

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

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

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

      <Tab title="Android">
        ```yaml theme={null}
        build:
          framework: android
          profiles:
            development:
              android:
                app_id: "<your-android-app-uuid>"
                build_commands:
                  - ./gradlew assembleRelease
                output_path: app/build/outputs/apk/release/*.apk
        ```
      </Tab>
    </Tabs>

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

    Replace the `app_id` placeholders with your app UUIDs and validate the config:

    ```bash theme={null}
    revyl config validate
    ```
  </Step>

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

    The profile and platform select one recipe, which runs in the cloud by default.
    When an omitted value has exactly one eligible choice, the CLI resolves it.
    Otherwise, interactive use prompts and non-interactive use fails with the
    available choices. No profile is stored as active or default.

    Cloud builds upload your working tree. Keep secrets out of source and use
    [encrypted build secrets](/remote-builds/configuration#build-secrets) instead.

    Useful variations:

    ```bash theme={null}
    revyl build --profile development --platform ios --debug     # stream full build logs
    revyl build --profile development --platform android --json  # machine-readable result
    revyl build --profile development --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">
    Named profiles, inherited recipe values, and all CLI flags.
  </Card>

  <Card title="Caching" href="/remote-builds/caching">
    Speed up repeat builds with compilation and configured path caches.
  </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>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.