For a conceptual overview of how Expo Auto Sync works, see Expo Auto Sync in the Apps section.
How It Works
- You give Revyl an Expo access token (stored encrypted)
- You link an EAS project to one or more Revyl apps (one Android, one iOS, or both)
- Revyl automatically registers a webhook on your EAS project using the token
- EAS fires the webhook to Revyl on every completed build
- Revyl filters the build, downloads the artifact, and creates a new Build inside the linked app
source: expo and an auto-generated version like expo-1.2.0-ios-a1b2c3d4. Native changes get a -native suffix so you can tell at a glance what changed.
Requirements
Expo access token
Create a Robot User access token at expo.dev/settings/access-tokens. Robot users are the recommended pattern for CI/integration tokens. Personal tokens work but aren’t ideal.The Robot User needs Developer role or higher on the EAS project. Read-only tokens can’t create webhooks and will fail at registration.
EAS project ID
Grab your project’s UUID from the Expo Dashboard or
app.json. It must be a valid UUID. The human-readable @owner/slug form is not accepted.Simulator/emulator builds
Revyl runs on cloud simulators and emulators — your EAS profile must produce compatible binaries. See Artifact Requirements for the full rules.
- iOS:
"simulator": trueon the profile ineas.json - Android:
.apk(not.aab) that includesx86_64and is debuggable
Setup
1. Create an Expo Robot User Token
- Sign in to expo.dev
- Go to Access Tokens
- Click Create Token
- Give it a descriptive name like
revyl-auto-sync - Make sure the Robot has Developer role or higher on the EAS project
- Copy the token immediately (it won’t be shown again)
2. Configure Expo in Revyl
- In Revyl, go to Integrations > Expo
- Paste your Robot User access token and save
- Click Add EAS Project
- Enter the EAS Project ID (UUID), a display name, and pick which Revyl Android and/or iOS apps it maps to
- Enable Auto-sync and save
Alternative: From the App Creation Flow
When creating an app, click Connect to Expo instead of uploading a file. The flow prompts for the token if you don’t have one, then shows a project picker. Revyl auto-selects the latest compatible build (non-production, non-expired, matching platform) and imports it as your first build. Future builds sync automatically.What Gets Synced
On each EASBUILD event with status=finished, Revyl:
- Verifies the webhook signature (HMAC-SHA1
expo-signature) - Matches the build to an org via the signature
- Filters out:
- Production profiles (filtered by name)
- Expired artifact URLs
- iOS builds without
"simulator": true .aabAndroid builds
- Downloads the artifact using your Expo token
- Creates a new build in the linked Revyl app, comparing its
fingerprintHashto the previous build to detect native changes
Managing the Integration
- Update the token: go to Integrations > Expo, paste a new token, save. Existing builds stay; future syncs use the new token.
- Disconnect: clear the token field and save. Revyl stops syncing and removes the webhook from EAS. Existing builds remain and can still be run against.
- Remap a project: connecting an EAS project to a new app reassigns the platform binding. The old app stops auto-syncing.
Gotchas
- One EAS project maps to one app per platform. Remapping reassigns the binding.
- Production profiles are filtered on purpose. Revyl doesn’t import production builds via auto-sync. Upload them manually if you need to test production artifacts.
- If webhook registration fails, the Robot User probably has read-only access. The Robot needs Developer role or higher on the EAS project.
- If builds aren’t showing up: check
simulator: trueis set on your iOS profile, that you’re building.apknot.aabon Android, and that the artifact URL hasn’t expired. - Auto-sync stops if the token is removed. Disabling auto-sync also deletes the webhook from EAS automatically.
Recommended eas.json
Use a dedicated profile that produces simulator-compatible builds for Revyl:
Related
- Apps: create apps and manage builds
- Expo Auto Sync: conceptual overview