2 min read

Shipping to the App Store and Google Play Simultaneously: What Breaks, What Holds

Not a tutorial. A survival guide for doing both platforms at once with no dedicated mobile team.

We shipped Trendoline to both the App Store and Google Play last week. One engineer, both platforms, at the same time. Here is what I learned.

The review process difference is significant

Apple's review took nine days. Google's took three hours. This asymmetry matters for planning. If you discover a critical bug after submission, you can patch the Android version in a day. The iOS version will be broken for a week while the fix works through review.

Submit to both as early as possible and assume the Apple review will find something to reject. It did, twice. Once for a minor UI issue they deemed inconsistent with their guidelines, once for a missing privacy policy link. Neither was a real problem but both cost us days.

The Xamarin shared code held up

Most of the shared business logic worked across both platforms without modification. The places where it broke were around threading, specifically around UI updates that needed to happen on the main thread. Android is more forgiving about this than iOS. Code that ran fine during Android testing would crash on iOS until I added explicit main-thread dispatching.

The platforms expect different things from users

This is less about code and more about product. The back button on Android is a hardware affordance that users rely on constantly. iOS users navigate with gestures and the navigation bar. Designing one flow and mapping it to both platforms doesn't work well. You end up with an experience that feels slightly wrong on both.

I underestimated this and it shows in the current version. Something to fix in the next update.

What I'd do differently

Start the App Store submission process two weeks before you think you need to. Buffer for rejection and resubmission. It is not optional time, it is just hidden time that you either plan for or get surprised by.

Also: test on real devices, not just simulators. The simulator lies about performance, memory, and a handful of rendering edge cases that only show up on actual hardware.

The app is live. That part feels good. The list of things to fix is long but that's always true.

With gusto, Fatih.