test your app on a real iPhone.

Put the build on your phone the way you already do. Your coding agent taps through it and sends back what broke, with a screenshot.

no test runner to sign

UI test tools need a signed runner on the device, developer mode and a rebuild when the signature expires. Zeptap works from the screen and a Bluetooth pointer instead, so it drives any build: TestFlight, App Store or one you just ran from Xcode.

open_app("Loop")tap_text("Get started")screenshot()

the flows a simulator can't do

Push notifications, sign-in codes that arrive by SMS or email, permission prompts, the share sheet, widgets, and hand-offs to Settings, Mail or Messages and back. Your agent can leave your app to fetch the code and come back to finish signing in.

open_app("Messages")find_text("code")open_app("Loop")

right in your coding loop

Claude Code changes the code, you rebuild, and it checks the result on the phone in the same session. Every action returns a screenshot once the screen settles, and on-device text recognition lets it confirm a label is really there.

tap_text("Save")wait(1500)find_text("Saved")

what it sees, and what it doesn't.

Zeptap sees what's on the screen: screenshots and the text in them. It doesn't read your app's view hierarchy. For large regression suites across dozens of devices in CI, a device farm is still the better tool. Zeptap is for checking your real flows on your real phone while you build.