Her wellness app was supposed to launch on a Tuesday. The PR firm had booked a feature in Stylist. The influencer line-up was locked. The launch party was paid for.
The build is the easy part. Getting through Apple’s review queue and Google’s Play Console is the engineering discipline most teams underestimate. We ship Flutter, React Native, and native iOS / Android apps that pass review the first time. Review handling is included on every build we sign.
Twenty-seven mobile builds shipped. Same shape every time: the review guidelines treated as part of the spec, not a release-day surprise.
Her wellness app was supposed to launch on a Tuesday. The PR firm had booked a feature in Stylist. The influencer line-up was locked. The launch party was paid for.
On the Friday before, Apple rejected build 24. Then 25 on Saturday. Then 26 on Monday. The launch slipped six weeks. Stylist moved the feature. Two of four influencers dropped out. Her seed runway shrank by £42K of burnt PR and rebooked engineering.
The app worked. It was beautiful. What it didn’t have was anyone whose job had been to read Apple’s review guidelines and design against them from the start. Eight rebuild items later, build 27 passed first time. This page is for the founder who doesn’t want their launch to start with a rejection email.
Apple’s 2024 data shows three categories cause 71% of rejections. The full list, drawn from the rebuilds we’ve done. Open any row.
An app that’s just a web view of your website gets rejected. We design native experiences with at least three platform-specific features.
What you collect vs what you declared in App Store Connect. We build the privacy nutrition label before the code, not after.
Crashes during review. We test on the oldest supported device, not the newest. iPhone SE (2020) is our floor for performance work.
If you sell digital goods, you need IAP. Period. We architect for IAP first and Stripe fallback for physical / service goods second.
If you offer third-party login, you must offer Sign in with Apple. We wire both on day one.
Apps that look like an existing app get rejected. We design original interfaces from the brief, not from a Dribbble screenshot.
“Lorem ipsum” in a release build = instant rejection. We do a placeholder sweep before every submission.
Common in older React Native libraries. We pin clean library versions and audit the bundle before submission.
If users post content, you need: report, block, mute, and a terms-of-service. We build the moderation surface in sprint one.
The build is half the work. Apple’s review queue is the other half. Here’s what the rate buys you, drawn from twenty-seven shipped builds.
Review guidelines treated as part of the spec, not a release-day surprise. Privacy nutrition label mapped before the data-collection code.
We benchmark on the oldest supported device, not the newest. Your three-year-old-phone user notices, and so does the reviewer.
If a reviewer asks for info, we respond inside the hour. No 17-day silence between rejections. Median 2025 turnaround: 47 minutes.
App Store Connect and Play Console configured with you as Owner. 30-day walk-away both ways. IP assigns on every commit.
Each is fixable on day one of the build. None gets cheaper after the first rejection.
“Apple rejected our build five times. The launch date is gone.”
23-point pre-submission audit before any Submit click. 96% first-pass. Privacy nutrition label mapped before data code. Review guidelines pinned to the spec. iPhone SE 2020 is the floor.
“I can’t afford to build the app twice for iOS and Android.”
Flutter as the default, native only when needed. One codebase. Both stores. Flutter ships 95% of our builds. Half the cost. Same store outcome.
“The app feels great on my iPhone 15 and terrible on customer reviews.”
iPhone SE 2020 + Pixel 6a benchmark floor. Cold start under 1.8s on iPhone SE 2020. Bundle under 28MB on Android. We measure on the device three years older than yours.
“Apple asked for clarification and we noticed three days later.”
Active monitoring + within-the-hour response. We watch App Store Connect for you. Average review-info turnaround on our 2025 submissions: 47 minutes.
“The offshore team built it but no senior reviewed Apple’s guidelines.”
Senior engineers named, no bench. The four named engineers on your project ship the app. The same person who signs the audit is at the keyboard.
“The iOS version keeps drifting ahead of Android. Features are inconsistent.”
Single Flutter codebase, paired releases. Both stores ship the same version on the same day. Codebase shared. Tests run on both platforms. No drift.
“We launched and got 30 crash reports in the first hour.”
Sentry + Crashlytics + phased rollout. Apple 7-day phased. Google 10% 50% 100%. Crashes caught at 10%. Median crash-free rate on 2025 launches: 99.6%.
“Apple takes three days to review our patch and a bug is live the whole time.”
Feature flags + over-the-air config. Critical bugs disabled without an App Store update. OTA config lets you disable a screen or swap an endpoint in under five minutes.
Flutter by default for one codebase across both stores. Native modules only where ARKit / CarPlay / BLE demand it.
Zara’s rebuilt wellness app passed first time on both stores, was featured by Apple in Health & Fitness for launch week, and hit 4.8 / 5 with 42K MAU by month six. The rest of the cohort, in numbers.
Pick the shape that fits and Mohit will send your real number inside 24 hours.
5 days. We strip your brief, pick Flutter vs native, write the architecture, hand you a signed scope.
8 to 14 weeks of fixed-scope shipping. Both stores. ASO + submission included. Review handling on us.
App rejected? We rebuild against the 23-point checklist, fix the privacy label, resubmit.
“Apple rejected us. The Empyreal team responded inside the hour with a fix. The contrast with our previous agency wasn’t close.”
— Sarah O., co-founder, UK MarketplacePain-first, soft-second.
Because we treat the review guidelines as part of the spec, not a release-day surprise. We map the privacy nutrition label before writing data-collection code. We use a 23-point pre-submission audit. We test on iPhone SE 2020, not a brand-new device. None of this is clever, it’s just attention. Most mobile app development teams skip it because they think the build is the work. The build is half the work.
Default to Flutter for new mobile app development. React Native if you have a web team in React who will be touching the codebase. Native iOS / Android only if you have a heavy native API need. We decide in audit week with four questions: who maintains it after handover, what platform features matter, what’s the brand expectation, what’s the timeline.
Yes. We’ll get your Apple Developer Program + Google Play Developer accounts open if you don’t have them. We’ll request your Apple D-U-N-S if needed. App Store Connect + Play Console are configured by us with you as Owner. You walk out owning everything.
30-day walk-away both ways. Milestone billing 25/25/25/25. UK VAT registered, listed on Companies House, shipping since 2019. You’re never more than four weeks at risk of paying for nothing.
Every mobile build has two senior engineers paired, not one. Every decision goes into an ADR the same day. Mohit reviews every PR. If one engineer leaves, the other has full context the next morning. In seven years, two engineers have left mid-project. Both handovers were inside 48 hours.
That’s a lot of what we ship. The Flutter UI layer is built against your brand system, not a generic Material design library. We work alongside your design team in week 2 to lock the visual language. The output is an app that looks like your brand, not like every other Flutter app on the store.
Yes, with 14 days’ notice. The engineers move to other projects, your repo stays where it is, your spend pauses. Pick it back up with 14 days’ notice and we restart at the same sprint board, same engineers. No cancellation fee, no restart fee.
You walk away cleanly. We typically stay on a monthly retainer for the first 6 months covering bug fixes, OS upgrades (iOS / Android annual releases), and small feature additions. Major v2 work is scoped separately. Cancellable 30-day notice, any month. Most clients are confident handing to in-house by month 6-9.


Tell us the platforms, the launch date, and what your app needs to do on day one. Mohit replies inside 24 hours: a clear yes, a clear no, or the one question that decides it.
Yes, no, or the deciding question. Straight to your inbox.
We pick Flutter vs native and write the 23-point submission plan.
Both stores, on the day we agreed. We handle the reviewer.