Parallax beta.8 Shows a Real iPhone — Agents Can't Tap It
Parallax now streams a plugged-in iPhone beside a Galaxy S24, and beta.7 cut agent taps from 14s to under a second on Android hardware. Here is the catch.

Parallax beta.8 puts a plugged-in iPhone's live screen in the same window as a Galaxy S24 — but your coding agent can only watch the iPhone, not tap it.
Parallax is a desktop app and an MCP server that give a developer and a coding agent the same live view of a running React Native app: the screen, the component tree, logs, network and state. Three betas shipped in one week, and the headline change is latency.
What the three releases changed
- beta.8 — a real iPhone in the window, watch only. Plug the phone in with a data cable and its live screen sits next to the component tree, logs, network requests and state. Point at an element in the picture and the Inspector opens its component. The agent can screenshot the phone; it cannot tap it.
- beta.7 — agent taps 6 to 20 times faster, plus support for physical Android phones. Strict approval mode gained a third button on input cards, "Always allow taps, swipes and typing"; reloads and launches still prompt.
- beta.6 — faster taps with the window closed: the developer measured iOS simulator taps dropping from 5.1 s to 3.3 s via the screen helper.
Why the taps got faster
Every agent tap reads the screen twice — once to find the element and confirm the app is in front, once to report what changed. Until beta.7 both reads came from the platform accessibility dump: AXe on iOS, uiautomator on Android. Those dumps are slow, and uiautomator waits for the screen to go idle, so an animation stalls it.
Parallax now reads the app's React tree through Metro instead, building the same list the dump gives: every view with a testID, label, text or text input, with its frame measured by the app itself. The release notes report these figures, all measured by the developer on their own test app:
| Path | Screen read | Tap, iOS simulator | Tap, Galaxy S24 |
|---|---|---|---|
| Accessibility dump (pre-beta.7) | 0.6–3 s on a still screen; uiautomator gave up after 11 s on a busy animated Android screen | 3.3 s | 14 s |
| React tree via Metro | 5–100 ms | 0.50–0.53 s | 0.60–0.84 s |
The tap numbers were taken over five taps by id and five by point on each platform. The developer also reports that testIDs match between the two paths and that 33 of 34 compared frames matched the dump's to within a point — worth knowing if your selectors are keyed to dump output.
Where the old, slow path still runs
The React read only applies when the app is connected and in front. The dump stays for everything React cannot see: system alerts and permission prompts, the keyboard, another app in front, or an app that is not connected. Lose the Metro connection and every read falls back to the dump, at the old speed. The first tap of a session also still costs about 4.9 s, because it opens the input session and reads the dump once.
The speedup is real but conditional: a suite that lives in permission dialogs will not see it.
The iPhone half that isn't done
Showing an iPhone and controlling one are separate problems. macOS can treat a plugged-in iPhone as a video source, and a capture helper streams that picture into the window — nothing is installed on the phone and no Apple account is needed, though macOS asks once for camera access because it classes the iPhone's picture that way. Sending a tap is the expensive half: it needs a signed test runner on the device. Until that ships, the agent's tap, swipe and type tools answer on an iPhone that the feature needs a later version, and you tap the phone yourself.
One setup trap worth noting: with React Native 0.86 and the prebuilt React Core, an app on a device ignores RCT_METRO_PORT and connects to port 8081 — launch from Xcode with the -RCT_jsLocation argument if Metro runs elsewhere.
Watch for the signed test runner. Until it lands, Parallax gives agents fast control of simulators and Android hardware, and a view-only window onto real iPhones — the gap between those two is where device-specific bugs live.
More from DangMua