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
1
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.Read access is enough to browse projects and import builds manually. The Robot User needs Developer role or higher only when you enable auto-sync, because Revyl must create a webhook.
2
EAS project
Choose from the EAS projects visible to your token. If your project isn’t listed, use Enter 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.3
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: a debuggable
.apk(not.aab) whose native libraries includex86_64orarm64-v8a
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 - To use 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 project and choose an EAS project from the list
- Expand the EAS project, turn on Auto-sync builds, and choose the destination Revyl Android and/or iOS app
- Click Save changes
app.json.
When you enable auto-sync, Revyl registers the webhook on your EAS project in the background. Nothing else to do.
Alternative: From the App Creation Flow
When creating an app, click Import from 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 only if you explicitly enable auto-sync and choose the destination Revyl app.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
See EAS JSON Setup for more info on the EAS profiles that should be configured
Related
- Apps: create apps and manage builds
- Expo Auto Sync: conceptual overview