test(mobile): guard the dev-launcher flags that hide dev overlays for agents
Problem
When an agent drives the dev build on an EAS cloud simulator, two Expo dev-client overlays get in the way:
- On a fresh install, the dev-menu onboarding sheet covers the first screen.
- The floating "Tools" gear sits on top of the top-right header button. Automated taps on that button open the dev menu.
Fix
No app change is needed. expo-dev-launcher 57.0.20 (already installed) supports two flags on the expo-development-client deep link (expo/expo#49651):
superset://expo-development-client/?url=http%3A%2F%2Flocalhost%3A8081&disableAutoLaunch=1&disableFab=1
disableAutoLaunch=1marks the dev-menu onboarding as finished and sets "show at launch" to off.disableFab=1hides the floating gear.
The launcher writes both to the dev menu's UserDefaults, so they stay set for later launches of that install. The installed simulator build does not change, so no native rebuild is needed. The dev menu stays available on demand (⌃D, or agent-device).
Only a launch that uses the URL with these flags changes. A person who opens the dev build by hand, or through expo start, gets today's behaviour. scripts/eas-dev.sh turns the flags on in a separate change, owned by another agent (see "Turning it on" below).
This PR adds expo-dev-launcher-agent-flags.test.ts. It fails if an Expo upgrade removes or renames either flag, which would otherwise bring both overlays back without any error. It follows the existing *-patch.test.ts guards, which read the installed native source.
Rejected alternatives
- Info.plist defaults (
EXDevMenuShowsAtLaunch,EXDevMenuShowFloatingActionButton): need a native rebuild and change the build for everyone. -EXDevMenu… NOlaunch arguments:eas simulatorandagent-device openhave no way to pass them.DevMenuPreferences.setPreferencesAsyncfrom JS: runs after launch, and cannot set the onboarding flag, so the sheet still opens on a fresh install.
Turning it on (for eas-dev.sh)
Add &disableAutoLaunch=1&disableFab=1 to DEV_CLIENT_URL. That URL is used for both eas simulator --open-url and the reload after egress connects. Both must carry the flags: a fresh install that first loads without them shows the onboarding sheet.
Verification
Real EAS simulator, build 47f68dac (fingerprint 9245768a665f, matching this checkout), driven with agent-device 0.21.28.
Flags off (today's script URL): fresh session. The dev-menu sheet covers the app; after it is dismissed, the gear covers the top-right voice-mode button.
Flags on: new fresh session, with --open-url and the reload both using the flagged URL. No sheet and no gear (agent-device snapshot -i shows no "Tools", "Continue" or "Close" nodes from the dev menu). A relaunch with the plain URL stays clean, so the preferences persist. This session ended on sign-in because the one-time dev token had already been used by the first session. I did not sign in a second time, so the "on" screenshots show the sign-in screen, not Home.
| Off: sheet on launch | Off: gear over header | On: fresh launch | On: relaunch, plain URL |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Checks: bun test expo-dev-launcher-agent-flags.test.ts (1 pass); bunx biome check --write (clean). Both simulator sessions were stopped.
Summary by cubic
Adds a test that fails if an Expo upgrade removes the disableAutoLaunch and disableFab flags from expo-dev-launcher's URL handling. These flags hide the dev-menu onboarding sheet and floating gear during agent-driven EAS simulator sessions; if an upgrade drops them, both overlays come back without any error.
Summary by CodeRabbit
- Tests
- Added automated checks for how the iOS development launcher handles settings that control the floating action button and automatic app launch in agent-driven sessions.



