Now on Android: why we got iOS right first

Semaloop now tests Android apps, alongside iOS. The same natural language specs, the same agents, and the same verdict on every build, now on both platforms.
People have asked why we didn't do both from day one. The short answer is that we wanted to get one platform right before spreading ourselves across two, and we picked the harder one first.
Why we started with iOS
iOS is the harder platform to automate. Apple keeps the platform locked down, and the tooling for driving an iPhone from the outside is thin. Getting an agent to use an iPhone the way a person does meant building much of that tooling ourselves.
It's also where our first customers were. Teams like Granola and Gopuff ship iOS-first, and the bugs that hurt them most were the ones that are hardest to script: audio that didn't play, a permission prompt that blocked a flow, a layout that broke on one screen size.
If our agents could handle an iPhone reliably, we'd have solved the hard part.
Why the same agents carried over
We made one decision early that turned out to matter a lot here. Our agents work from pixels only, with no accessibility tree and no per-app instrumentation. We wrote about why in Why we don't trust the accessibility tree.
A side effect of that choice is that every platform looks the same to us. An Android screen is still a screen. The actor still looks, decides and taps. The judge still decides whether the goal in your spec was met. None of that needed rebuilding for Android, and tests are written the same way on both.
What we did have to build was the plumbing around the agent: getting builds in, provisioning devices, and capturing video, logs and network traffic on a different operating system.
What's the same, and what's different
The model is identical on both platforms. You describe what should happen in natural language, Semaloop runs every test against every new build, and you get a pass or fail with the video, system logs and network trace behind it.
What differs is mostly how builds reach us. On iOS, we ingest builds from TestFlight. On Android, your CI pushes the APK to us with an API key. Either way, nothing needs triggering by hand and there's no SDK to add to your app. See connecting your app for the setup on each platform.
A few agent capabilities are also iOS-only for now, such as voice input and phone numbers for SMS codes. Our docs keep a full comparison of what works where, and we update it as Android coverage grows.
Try it on your app
If you ship on Android, iOS or both, we'd love to show you Semaloop running against your own app. Book a demo and we'll walk you through it.