For high-level workflows and when to use
revyl dev, start with Dev Loop. This page focuses on provider setup, configuration, and troubleshooting.Overview
When you enable hot reload, the CLI:- Starts your local dev server (e.g., Expo Metro bundler)
- Creates a secure tunnel to expose it to the internet
- Runs tests against your pre-built development client
- Connects the dev client to your local server via deep link
Supported Frameworks
| Framework | Status |
|---|---|
| Expo | Supported today (first provider) |
| Swift/iOS | Planned |
| Android Native | Planned |
Prerequisites
Before using hot reload, ensure you have:-
Authenticated with Revyl:
-
Initialized your project:
-
Built and uploaded a development client to Revyl:
-
Configured hot reload + build mappings in
.revyl/config.yaml:
Quick Start
Setup Guide
Automatic Setup
The easiest way to configure hot reload is through theinit hot reload mode:
- Detect your project type (Expo, Swift, Android)
- Extract configuration from your project files (e.g.,
app.json) - Save the configuration to
.revyl/config.yaml
Manual Configuration
You can also configure hot reload manually in.revyl/config.yaml:
Usage
Running Tests with Hot Reload
Use the--hotreload flag with any test execution command:
Specifying the Build
You must specify which development client build to use. There are two ways: Option 1: Use a build platform (recommended)hotreload.providers.expo.platform_keys) and the
matching build.platforms.<key>.app_id.
By default, Revyl prefers the latest uploaded build whose metadata branch matches your current git branch.
Option 2: Use an explicit build version ID
Branch-first dev build flow
When you switch to a new branch, upload a dev build from that branch first:Direct-file upload flow (--skip-build)
If the artifact already exists on disk:
- Set
build.platforms.<key>.outputto the artifact path. - Upload with
--skip-build. - Start your dev/test hot reload flow.
Overriding the Port
If your dev server runs on a non-default port:--port or config) so the deep-link
URL points to the correct endpoint.
Multiple Providers
If you have multiple hot reload providers configured, specify which one to use:Configuration Reference
Full Schema
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
default | string | - | Default provider when --provider is not specified |
port | number | 8081 | Dev server port |
app_scheme | string | - | URL scheme from app.json (required for Expo) |
use_exp_prefix | boolean | false | Use exp+ prefix in deep links |
The use_exp_prefix Option
Expo development clients can register URL schemes in two formats:
- Base scheme:
myapp://(default, works with most builds) - Prefixed scheme:
exp+myapp://(newer Expo convention)
use_exp_prefix: true:
How It Works
- CLI starts the dev server: Runs
npx expo start --dev-client - Tunnel is created: A Cloudflare quick tunnel exposes your local server
- Deep link is constructed:
{scheme}://expo-development-client/?url={tunnel-url} - Test runs: The dev client opens via deep link and connects to your server
- Live updates: Any code changes are instantly reflected via Metro’s hot reload
Troubleshooting
Deep Link Not Working
Symptom: Error “No application is registered to handle this URL scheme” Solutions:- Verify your
app_schemematches the scheme in yourapp.json - Try setting
use_exp_prefix: truein your config - Ensure your dev client build has the URL scheme registered
Port Already in Use
Symptom: Error “Port 8081 is already in use” Solutions:- Kill any existing Metro processes:
killall nodeorlsof -ti:8081 | xargs kill - Use a different port:
--port 8082 - The CLI attempts to clean up on exit, but interrupted sessions may leave processes running
Tunnel Connection Issues
Symptom: Tunnel fails to start or times out Solutions:- Check your internet connection
- Some corporate networks block tunneling services—try from a different network
- The CLI will show diagnostic information if the tunnel fails
White Screen After Connecting
Symptom: Dev client connects but shows a white screen Solutions:- Check the Metro bundler output for JavaScript errors
- Ensure your dev client build matches your current Expo SDK version
- Try restarting the hot reload session
Build Platform Not Found
Symptom: Error “Build platform ‘ios-dev’ not found” Solution: Add the platform to your.revyl/config.yaml:
app_id from the Revyl dashboard under Builds.
Best Practices
- Use a dedicated dev client build: Create a separate build platform for hot reload testing
- Keep your dev client updated: Rebuild when you update Expo SDK or native dependencies
- Use consistent ports: Stick to the default port (8081) unless you have conflicts
- Clean up sessions: Use Ctrl+C to properly terminate hot reload sessions