We built a faster alternative to Maestro that works on real iPhones
We've been running device labs for 12+ years — on-prem setups for teams like Disney+Hotstar, Swiggy, Airtel. So we see what breaks for people daily.
The one thing that kept coming up with React Native teams: E2E testing sucks.
Maestro is the closest thing to a good answer. The YAML syntax is great, the DX is solid. But three things kill it:
It doesn't work on real iOS devices. Apple gates all automation through WebDriverAgent, which needs per-device code signing, drops sessions randomly, and was never designed for external tools to control a phone. Maestro's answer is "use simulators." Fine for CI, terrible for anything else.
It's slow. A JVM process sits in the background eating 350 MB doing nothing. Every command goes through multiple hops before it actually touches the UI.
The React Native view hierarchy problem. You write tapOn: "Login" and nothing happens. Because the text lives inside a <Text> nested in a non-clickable <View>. You end up debugging accessibility trees instead of writing tests.
We spent the last few months building a runner that fixes all three.
Real iOS devices — we got WebDriverAgent stable on actual hardware. Code signing, session persistence, the whole mess. It works now.
Speed — no JVM. Same test, 34s → 14s. We wrote our own element resolution instead of going through Appium's chain.
View hierarchy — we walk up the tree automatically to find the nearest tappable ancestor. tapOn: "Login" just works whether you're using text matching or testID.
The syntax is the same YAML you already know from Maestro. We didn't reinvent that — it's good. We just made the engine behind it faster and got it running where it couldn't before.
Works with cloud providers too — BrowserStack, Sauce Labs, LambdaTest. Any Appium grid. But with our own element logic sitting on top, so you skip the usual Appium tax on speed.
Open source:
Happy to answer questions about the iOS real device stuff especially — that rabbit hole was deep.