Skip to main content
Create dev and preview builds for your Expo React Native app.

Build Guidance

To use the Dev Loop, a build is required only on native code changes (new native modules, Podfile/Gradle changes, build configuration). JS/TS changes hot reload via Metro — see Dev Loop: Hot reload and rebuild configuration for the full breakdown.

Build via Revyl CLI

Prerequisites

  • Node.js 18+
  • Expo CLI (npx expo)
  • EAS CLI (npx eas-cli) for local or cloud builds
  • Revyl CLI installed and authenticated (revyl auth login)

Setup

Initialize the project using the Revyl CLI:
This creates iOS and Android Development and Preview apps, generates the necessary Revyl configuration files, runs a build, and uploads it to Revyl. See Types of Builds for more information. Development builds power the dev loop. Preview builds are for testing and starting sessions when the Metro server isn’t needed.

Run Build

Run a build using: revyl build --platform [ios|android|<config-key>] Platform config keys are automatically generated and defined in the .revyl/config.yaml file. See the Configuration page for more details. This command automatically builds and uploads the app to Revyl, where you can use it to start sessions.

Advanced Configuration

When you run revyl init, Revyl makes a best-effort guess at your configuration. This section covers configuration in more detail.

eas.json Setup

Your eas.json needs at least 2 profiles, one that includes the development client and another that does not. See the following eas.json file as reference:
Note that the iOS simulator is enabled for both profiles, and developmentClient is set to true only for the development profile.

Build Commands and Hot Reload Setup

revyl init creates a .revyl/config.yaml file in the root of your project, which holds the Revyl CLI configuration. This includes the build commands used by revyl build and the hot reload settings used by revyl dev. Configure these build settings using the Configuration page. Expo dev-client hot reload needs a URL scheme baked into the native dev build. This is normally set as part of revyl init. The scheme is the custom URL prefix for your app, such as myapp-dev://. Revyl uses that scheme to open the Expo dev client on the cloud device and connect it to Metro. If you use app.json, set expo.scheme before creating the dev build:

Troubleshooting

  • Try running the build in verbose mode: revyl build --platform [ios|android|<config-key>] --verbose
  • Make sure you’re logged into EAS
  • Check EAS build credits
  • Verify package.json dependencies
  • Review logs in EAS dashboard
  • Validate eas.json syntax
  • For iOS, ensure simulator: true is set in eas.json. For Android, ensure the profile builds an apk, not an aab.

Resources