The two stores look similar from the outside — submit a build, write release notes, ship to users — but the underlying workflows diverge in ways that bite first-time cross-platform teams. Most release calendars treat 'submit to both stores' as a single step. It almost never is. Here are the seven structural differences worth planning around.
1 — Review time
Apple's median review time is 24–48 hours. Google's review for a stable production update is usually 2–4 hours, often faster. That gap matters: if you submit both stores Friday at 5pm hoping for a Monday launch, Play will likely be live Friday night and iOS by Sunday at the earliest.
2 — Version semantics
App Store: marketing version (1.0.0) + build number (1, 2, 3...). The build number must be monotonically increasing per marketing version. Google Play: versionName (display only) + versionCode (integer, must increase forever). Once you ship versionCode 47, you can never go back to 46, even with a different versionName.
- On iOS, 1.0.0 (5) → 1.0.0 (6) is valid, but 1.0.0 (5) → 1.0.1 (1) resets the build counter.
- On Android, versionCode 47 → 48 is mandatory regardless of versionName.
- Use a single monotonic counter (a CI build number) for both to avoid the bookkeeping.
3 — Beta tracks
Apple has TestFlight: internal (up to 100, no review) and external (up to 10,000, one-time Beta App Review). Google has internal testing (up to 100), closed testing (named lists), open testing (anyone with the link), and a separate staged rollout for production. They serve different goals and shouldn't be conflated.
- TestFlight = pre-release QA on iOS.
- Play closed testing = pre-release QA on Android.
- Play open testing = public beta, often used for early-access programs.
- Play staged rollout = production release to 1%, 5%, 20% of users.
4 — Staged rollouts
Google Play offers native staged rollouts on production: ship to 1% of users, watch the crash rate, ramp to 10%, then 50%, then 100%. If something breaks, halt the rollout — existing 1% users keep the broken build, but the remaining 99% never get it. Apple does not have a native equivalent. Phased Release is the closest, but it's all-or-nothing across 7 days and can't be halted mid-rollout (you can only revert by submitting a new build).
5 — Signing model
Apple: you sign with a Distribution Certificate from your Apple Developer account; Apple signs again on its end with a separate certificate before distribution. Google: by default Play App Signing has Google generate and hold the production signing key; you only hold an upload key. The upload key signs what you submit; Google's key signs what users install.
- On iOS, losing the Distribution Certificate is recoverable — generate a new one in the developer portal.
- On Android with Play App Signing, losing the upload key is recoverable via support; losing a self-managed key means a new app listing.
- Always enable Play App Signing unless you have a specific reason not to.
6 — Rejection rates and reasons
Apple rejects roughly 30% of first submissions and ~5% of updates. Common reasons: missing privacy practices, broken sign-in, in-app purchase issues, and metadata claims the app doesn't support. Google's rejection rate is lower but skews toward policy issues: permissions, target SDK, data safety, and content rating.
- Run through App Review Guideline 2.1 (Information Needed) before submitting — half of iOS rejections live there.
- Fill the Play Data Safety section before your first submission — Google blocks updates on missing answers.
- Both stores want a working test account if your app has sign-in. Provide one unprompted.
7 — Metadata constraints
Apple gives you title (30), subtitle (30), keywords (100), description (4,000), promo text (170 — editable without resubmission), and release notes (4,000). Google gives you title (30), short description (80), full description (4,000), and release notes (500). The keyword field is unique to Apple; the short description is unique to Google. Most teams write one and translate to the other, leaving free ASO ranking on the table.
How to plan around the differences
Treat iOS and Android as two parallel release pipelines that share a build artifact but nothing else. Separate timelines, separate listings, separate rollout strategies, separate review windows. Tools that present the two stores as a single workflow are convenient — but the underlying systems are different enough that pretending otherwise creates bugs at the worst moments.