From Idea to App Store in 21 Days: A Mobile Case

May 19, 202610 mins
Idea to App Store in 21 days — phone with apps — Unsplash
Three weeks from spec to live in App Store and Google Play. One senior engineer, React Native via Expo, $14K flat price. Day-by-day below. What we cut, what we'd do differently.

Names anonymized — the founder asked. The timeline is what matters, not the niche.

The product

A consumer mobile app in a category we'd never built in. Founder had 200 waitlist signups from a landing page and a three-month window before a related event where they wanted live.

Web-first wasn't an option. Use case was mobile-native — location, camera, push notifications.

Hard requirements: both stores at launch, email + Apple + Google auth, two-tier IAP subscription, push notifications with segmentation, offline cached content, one social feature (following).

Nice-to-haves cut from v1: in-app messaging, AI summaries, premium analytics. All shipped weeks 5–8.

Day 1 — spec freeze

90-minute call. Whiteboard mapping. Founder picked which one social feature shipped (following) and which got cut (in-app messaging). Two-page spec in a shared doc by 6 PM.

Flat price quoted same day: $14K. Founder signed.

Day 2 — repo and infra

Expo project bootstrapped, managed workflow first. Supabase for auth + Postgres + storage. GitHub repo in founder's org. Apple Developer + Google Play console set up using founder's accounts. Sentry + PostHog + RevenueCat provisioned. Bare-bones EAS Build CI with internal distribution to TestFlight.

By end of day 2: "hello world" build installable on the founder's phone via TestFlight.

Days 3–5 — auth, navigation, core models

Email + Apple + Google sign-in via Supabase. Tab navigation with the four primary tabs. User, content, subscription state models in Postgres with RLS. Skeleton screens with mock data.

Day 5 internal demo: founder clicked through every screen, nothing real yet. Deliberate. Shape it before you fill it — catching layout problems before real data shows up is much cheaper.

Days 6–10 — real data, real flows

Content feed wired to Postgres. The one core action wired end to end. In-app subscription flow via RevenueCat (sandbox testing on day 8). Push notification permission flow plus token capture. Follow/unfollow.

Day 6 we switched from managed Expo to Expo prebuild — needed a native module not in the managed runtime. Added four hours of work. We'd planned a full day. Less painful than expected.

Day 10 internal demo: founder used the app for 20 minutes with real data. Found 7 things. Five went into "fix before launch", two into post-launch backlog.

Days 11–14 — the boring parts that decide everything

Empty states (no follows yet, no content yet, no notifications yet). Error states (no network, expired session, payment failed). Pull-to-refresh, infinite scroll on the feed. Skeleton loaders. Image caching with proper sizing. Offline-first cache for the content feed. Accessibility pass — VoiceOver, Dynamic Type, color contrast.

This is where mobile apps die. The happy path was done on day 10. Days 11–14 separate "shipped" from "shippable". Founders who don't budget for this stage ship apps that get one-star reviews on day three.

Day 15 — beta to 20 users

Pushed to TestFlight and internal Play Store. Founder invited 20 of the warmest 200 waitlist users.

Within 48 hours: 16 installs, 14 active for >5 minutes, 3 paid subscriptions in sandbox, 0 crashes in Sentry, 4 small UX issues.

All four issues closed by end of day 17.

Days 16–19 — store submission

App Store screenshots (6 per device size, generated from real screens with status bar mocked). Play Store screenshots. Privacy policy + terms (founder's lawyer had drafts, we hosted them on a static page). App Store privacy nutrition labels. IAP product setup in App Store Connect + Google Play. Final IAP testing in production (paid 99¢ ourselves to validate). Submitted both stores day 19.

Days 20–21 — review window

Google Play: approved in 14 hours. App Store: approved in 28 hours on first submission.

App Store rejections we've had before were always for: missing demo credentials, unclear IAP descriptions, references to "beta" in store copy. This one was clean because store-submission prep ran in parallel with the build, not after.

Day 21: live in both stores. Founder posted to their list. Day-1 installs: 84. Day-7 installs: 312.

Can your mobile MVP fit a three-week window?

Ask ChatGPT to map your scope onto our playbook. It'll surface what fits, what gets cut, and where the timeline breaks if you keep certain features.

|

What we cut

In-app messaging. Hard. Known on day 1 it couldn't fit. Founder agreed. Week-5 backlog.

AI content summaries. Nice. Prompt engineering plus eval setup would have eaten a week. Shipped week 8 with proper evals.

Web companion. Mobile-only at launch. Web shipped week 6 once the data model was stable.

Onboarding tutorial. Skipped in favor of "tooltip on first use" — much cheaper to build, almost as effective. Tutorial-style onboarding has a known completion-rate problem anyway.

Analytics dashboards beyond PostHog defaults. PostHog free tier has enough to run v1 of a consumer product.

What we'd do differently

Start the store submission paperwork on day 1, not day 16. Apple Developer enrollment can take 48 hours. IAP product setup is fiddly. The privacy questionnaire takes longer than you think. Doing this upfront would have saved two days at the end.

Hosted privacy policy template in our project starter. We re-do this every project. Should be templated.

Pre-build screenshot generation. We did screenshots manually. There's a tool for this. We just haven't standardized. Next time.

What worked

Expo, managed-first then prebuild when blocked. No mistake on the Expo side cost more than half a day.

Supabase for auth + DB + storage. Day-1 productive. Schema migrations clean.

RevenueCat for IAP. Saved at least two days of Apple/Google IAP plumbing.

EAS Build + internal distribution from day 2. Founder could install the build the day after we started. Continuous deployment habit set early.

PostHog for analytics from day 2. When beta opened, real funnels were already there.

What the founder did right

Brought a tight two-page spec to the first call. Made decisions in under 24 hours when we asked. Used the app for 20 minutes on day 10 — caught issues early feedback couldn't have caught. Trusted us on stack choices, fought hard on UX choices. Correct division of labor.

Three-week mobile window on your end?

Send your email — we'll set up a 30-minute call within 24 hours. After the call you get a written quote and an honest read on whether your window holds.

Cost

$14K flat. Founder's spend on App Store fees + RevenueCat + Supabase + Apple Developer Program + Play Console: about $220. Tools we used (Claude Code, EAS Build credits): on us.

Per-city pages for mobile

  • Mobile app development in Miami
  • Los Angeles
  • Atlanta
  • New York
  • Engagement model: Why we don't take equity.

    Workflow that makes this timeline possible: How we use Claude Code in production.

    Enjoyed this article? Share it with others

    Related Posts