- Add a test-only deep link handler in your app.
- Gate that handler with Revyl launch variables.
- Open one deep link from
revyl device navigateor a YAMLnavigatestep.
Fastest Path For Expo Cloud Agents
Use this path when you already run an Expo development client throughrevyl dev.
Copy This Contract
Use one route shape across every framework:App Checklist
Your app owns four small pieces:- Read
REVYL_AUTH_BYPASS_ENABLEDandREVYL_AUTH_BYPASS_TOKENat app launch. - Register a handler for
myapp://revyl-auth. - Verify the token, role, and redirect before changing app state.
- Create a test-only session and route only to an allowlisted destination.
Framework Recipes
Pick the recipe closest to your app. The session creation and route names are app-specific, but the Revyl contract stays the same.Expo / Expo Router
Expo / Expo Router
Put the handler near your root layout so it catches initial links and links opened while the app is running.In managed Expo apps, JavaScript may not receive native launch values automatically. Use a small native config bridge, verify the token with a staging backend, or follow the Bug Bazaar sample’s demo fallback for a local fixture only.For Expo Router apps, add a route backstop such as
app/revyl-auth.tsx that calls the same handler from route params. Expo Router may treat myapp://revyl-auth?... as a normal app route while the development client is already running; the route backstop keeps rejected links visible instead of landing on an unmatched-route screen.React Native CLI
React Native CLI
Use React Native For iOS, expose Revyl launch variables from
Linking for the deep link and read launch config from your native layer or staging backend.ProcessInfo.processInfo.arguments. For Android, expose them from the launch Intent extras.Native iOS
Native iOS
Revyl injects launch variables into iOS simulator apps as launch arguments:
Call
-REVYL_AUTH_BYPASS_ENABLED true -REVYL_AUTH_BYPASS_TOKEN <token>.handleRevylAuthBypass(_:) from your SwiftUI .onOpenURL handler or your app delegate URL handler.Native Android
Native Android
Revyl injects launch variables into Android as string extras on the app launch intent.Store
revylAuthConfig(launchIntent) when the app starts, then call handleRevylAuthBypass(intent, config) from onCreate and onNewIntent.Flutter
Flutter
Flutter apps usually handle the link in Dart and read launch config through a platform channel or staging backend.Implement the platform channel with the native iOS and Android launch-config snippets above, or verify the token against your staging backend from Dart.
What To Verify
Before relying on the bypass in a test, confirm each case is visible:- Valid token, role, and redirect signs in and routes to the target screen.
- Wrong token is rejected.
- Missing or disabled
REVYL_AUTH_BYPASS_ENABLEDis rejected. - Unknown role is rejected.
- Unknown redirect is rejected.
- The handler is unavailable in production builds.
Bug Bazaar Sample
This repo includes the runnable Expo sample ininternal-apps/bug-bazaar:
REVYL_AUTH_BYPASS_TOKEN into native launch config or verify the token with a staging backend.