iOS Simulator panel stuck in infinite crash-loop — sidecar startVideo always times out after 10s
Environment
- macOS 26.5.2 (build 25F84)
- Xcode 26.5 (build 17F42)
- Claude Desktop app: v1.24012.1
- Affected simulator: iPhone 17e, iOS 26.3 (UDID
EDDB587D-FEA3-4F2E-BC40-5C939E72D14C)
Symptom
The "iOS Simulator" panel gets stuck showing:
"Claude Code iOS Simulator is restarting after a crash. Try again in 1s."
in an infinite loop. Closing/reopening the tab, quitting/reopening the whole Claude app, and killing/reopening macOS's own Simulator.app do not fix it.
Root cause (confirmed via ~/Library/Logs/Claude/main.log)
The app spawns a native helper ("sidecar", Contents/Helpers/Claude iOS Sim.app/Contents/MacOS/claude-ios-sim) responsible for two separate planes:
- Control plane (attach/describe/tap/screenshot) — works perfectly, confirmed repeatedly via the
controltool. - Video plane (H264 stream feeding the panel canvas) — the
startVideocall hangs and times out after 10000ms, every single time, with no exceptions across the captured logs.
Exact cycle, repeating every ~20-30s:
sidecar spawn: claude-ios-sim
attached ios iPhone 17e ... 1170x2532 <- attach (control) OK
failed to open frame stream: Error: sidecar startVideo timed out after 10000ms <- video fails
attach ... follows a sidecar crash — treating as the panel's auto-reattach
sidecar unresponsive (2 consecutive timeouts) — killing so the next call respawns it
sidecar crash — detaching 1 iOS device(s): sidecar detach timed out after 10000ms <- even detach hangs
[loop restarts from spawn]
On the renderer side (claude.ai-web.log), the component drawing the video confirms the symptom:
[SimulatorH264Canvas] stream HTTP 503
i.e. the front-end keeps polling for the video stream and getting 503 (service unavailable), because the sidecar's startVideo never actually comes up.
Steps to reproduce
- Open a session with the iOS Simulator panel attached to an already-booted device.
- Leave it running —
startVideohangs on its own after ~10s, with no user action. - Observe the app attempt to self-recover indefinitely (spawn → attach → timeout → kill → detach timeout → spawn...) without ever keeping the video stream up.
Impact
- Live-view panel 100% unusable in this session — user sees nothing but the "connect" screen.
- Control-plane calls (screenshot, tap, text) keep working via the tool/MCP layer — which masks the problem for anyone only checking "from outside."
- Not fixed by: reopening the tab, quitting/reopening the app, killing/reopening
Simulator.app, switching device.
Suggestion for maintainers
Investigate why startVideo in the sidecar (claude-ios-sim) hangs systematically after ~10s in this environment (macOS 26.5.2 + Xcode 26.5 + iOS 26.3 runtime) — possibly a version mismatch between the streaming helper and this runtime/Xcode combo, since control-plane attach works fine.