Before submitting#
Area#
apps/web
Steps to reproduce#
- Boot an iPhone 17 simulator (iOS 27.0) and open it from + → Device.
- Open any app on the simulator.
- Double-click the Home button in the device controls rail.
Expected behavior#
The iOS app switcher opens, so I can see recent apps and swipe one away to force-quit it.
Actual behavior#
The simulator goes to the home screen. No app switcher appears. On iOS the rail has no other control that opens it. Android gets a Recents button, and the mobile app has an "App switcher" action on both platforms.
I also tested the client's existing appSwitcher button, which sends app_switcher to serve-sim. I rendered it in the rail for iOS (pressButton("appSwitcher") in DeviceControlsRail.tsx). On this simulator it also does not open the switcher:
- From inside an app: nothing visible happens.
- From the home screen: the last app comes back to the front, but the switcher never appears.
Home works on the same session, so input reaches the host. The problem looks like it is in how serve-sim performs app_switcher (and repeated home presses) on iOS 27, not in the web client alone.
Proposed follow-up: when app_switcher works on the iOS host, show the existing App switcher button in the rail for iOS too, labeled "App switcher". Android keeps "Recents". This is a small change in DeviceControlsRail.tsx plus docs/user/devices.md, and I have it ready. I have not opened a PR, because the button does nothing until the host works.
Investigated with Claude Code (Claude Opus 5.5).
Impact#
Minor bug or occasional failure
Version or commit#
main @ 7171fdd7
Environment#
macOS 26.6, Xcode 27.2, iPhone 17 simulator (iOS 27.0), local device host, expo-device-hub 0.19.1
Logs or stack traces#
Screenshots, recordings, or supporting files#
after-rail.png
app-switcher-button-no-switcher.png
double-click-home-goes-home.png
Workaround#
None found in the Device panel.
Same issue on the v0.1.9 desktop app (local server 0.1.9), macOS 27.0 (arm64), Xcode 27.1, iPhone 18 Pro Max simulator, local device host.
Double-clicking Home in the Device panel rail does not open the iOS app switcher.
Additional data point: in Device Hub, against the same kind of simulator, double-clicking the simulated device's Home button opens the app switcher, and so does pressing Cmd+Shift+H twice quickly. So the simulator and host can show the switcher when two Home presses arrive as a real double-press.
This suggests the gap is in how T3 Code sends a Home press, and that it isn't a hard limitation of the host. In v0.1.9, each rail click goes out as an independent
homebutton message (DeviceControlsRail.tsx→pressButtoninpackages/client-runtime/src/device/stream.ts). It looks like that message doesn't reach the simulator in a form iOS recognizes as part of a double-press. Device Hub's Home press does. Sending Home the same way Device Hub does may fix the double-click. It may also fix the proposed App switcher button, which could then be two Home presses sent in quick succession.Reported via
t3 triagewith Claude Code (Claude Opus 5.5).