revyl dev runs your local app on a cloud iOS simulator or Android emulator. You keep
editing code in your own workspace. Revyl provisions the device, installs your
development build, starts hot reload, and opens a live viewer.
For Expo and React Native, most JavaScript and TypeScript changes hot reload through
Metro. For other stacks, Revyl
rebuilds and reinstalls when a change needs a new binary.
Before you start
- The Revyl CLI, signed in with
revyl auth login. - A development build uploaded to a Revyl app. For iOS that’s a simulator
.appor a zipped.app, not an.ipa. For Android it’s a debuggable APK whose native libraries includex86_64orarm64-v8a. See Artifact requirements. - A terminal in your app’s directory, the one that holds the mobile project.
1
Set up the project
.revyl/config.yaml with a stable project.id. When detection works, it also
writes build.framework and named iOS and Android profiles. If it picked a nested native
project, run revyl init --detect from the app directory, adjust the profile, and run
revyl config validate.2
Start the loop
--profile <name> if your project has more than one
development profile, or --build-version-id <id> to install a specific build.3
Make a change
Save a file. Expo and React Native changes reload through Metro. For native changes,
trigger a rebuild and wait for it:
4
Check the result
Drive the device from a second terminal while the loop runs:Work in small steps: look at the screen, take one action, confirm it did what you expected.
revyl dev stop.
Run the loop in the background
Coding agents and scripts should start the loop detached and read its state as JSON:--detach returns once the device session is ready and prints the handshake with
--json. The build keeps running behind it.
Build native iOS changes remotely
--remote builds native iOS changes on a Revyl build runner instead of your machine.
Add --seed-latest to install your branch’s latest build right away, then swap in the
fresh build when it lands.
Attach to a session someone already started
If a teammate or agent already has the right device state open from the dashboard, attach your local loop to it instead of starting over:Sign in early
If your app needs an account, decide how the loop reaches a signed-in state before you start debugging: a test account with seeded data, a staging-only demo mode, or a test-only auth bypass deep link. If the app logs out mid-session while the boot token is still valid,revyl dev auth refresh fires the deep link again.
Troubleshooting
For framework-specific errors, see Dev loop framework troubleshooting.
Good to know
- Dev contexts are per worktree, so separate worktrees each get their own loop without
--context. - The device stops after 300 seconds idle. Change that with
--timeout. revyl devnever stores an active profile or platform. Explicit flags win; otherwise it uses the only development-like profile it finds.- Every flag is listed in the
revyl devreference.