Web Dev → Published Mobile Developer
**A 12-week course for a React/Next.js developer with a Mac.**
---
The Short Version
12 weeks. 10–12 hours per week. ~130 hours total.
You will have your **first app live on the App Store by week 5**, and your **first app live on Google Play by week 7**. Not a good app — a deliberately trivial one. The point is to clear the bureaucracy early, while the stakes are zero, so that when you build something you actually care about, publishing is a Tuesday afternoon instead of a three-week panic.
Everything after that is real app development, which you already mostly know how to do.
**If you're going full-time (40 hrs/week), this compresses to about 4 weeks of work** — but the calendar can't compress below ~6 weeks, because Apple review, Google identity verification, and Google's mandatory 14-day test window are wall-clock waits that don't care how fast you type.
---
Day 0: Do This Before You Write Any Code
These are gated on other people's timelines. Start them today or you'll be blocked in week 4.
| Task | Cost | How long it takes |
|---|---|---|
| Apple Developer Program enrollment | $99/year | 24–48 hrs, sometimes a week |
| Google Play Console account | $25 one-time | Identity verification can take days |
| Install Xcode (App Store) | Free | ~1 hr download, it's enormous |
| Install Node LTS + Git | Free | 15 min |
| Create an Expo account (expo.dev) | Free tier fine | 2 min |
**Critical decision on the Google account:** if you register as a **personal** account, you get hit with the 12-testers-for-14-days rule (explained in Phase 4). If you have a registered business entity, an **organization** account is exempt from that requirement entirely. Think about this now, because you can't easily switch later.
Also: buy a cheap used Android phone if you don't have one, around $80–150. You cannot properly test Android on a Mac simulator alone, and you'll need a real device for the Play closed test.
---
The Map
| Phase | Weeks | Hours | What you get |
|---|---|---|---|
| 1. Fundamentals | 1–2 | 24 | You can build screens and navigate between them |
| 2. The Publishing Lap | 3–5 | 25 | A real (dumb) app, live on the App Store |
| 3. Real App Skills | 6–8 | 36 | Data, storage, auth, forms, lists that don't lag |
| 4. Native Powers | 9–10 | 24 | Camera, notifications, permissions, offline |
| 5. Ship Something Real | 11–12 | 24 | Your own app, on both stores |
---
Phase 1 — Fundamentals (Weeks 1–2, 24 hours)
**Goal:** stop thinking in HTML.
What you read
What you build
The mental shifts (this is the actual work of Phase 1)
Done when
---
Phase 2 — The Publishing Lap (Weeks 3–5, 25 hours)
**This is the most valuable phase in the course, and the one everyone skips.**
Take app #2 from Phase 1. Give it a real name and an icon. Then push it all the way to the App Store. Not to a beta. To the actual store, publicly downloadable.
The steps, in order
What you read
The most common first rejections
Done when
---
Phase 3 — Real App Skills (Weeks 6–8, 36 hours)
Now build something with substance. Suggested project: **a personal library or watchlist app** — search a public API, save items locally, mark them as read/watched, sync to a backend.
Topics, roughly one per 4-hour session
Start your Google Play closed test at the beginning of week 6
---
Phase 4 — Native Powers & the Android Gauntlet (Weeks 9–10, 24 hours)
The native APIs
The Google Play requirement you must plan around
If your personal developer account was created after November 13, 2023, <cite index="16-1">you must run a closed test with a minimum of 12 testers who have been opted in for at least the last 14 days continuously before you can apply for production access.</cite> <cite index="18-1">Organization accounts registered to a legal business entity are exempt.</cite>
Details that catch people out:
- <cite index="18-1">The 12 must be distinct Google accounts that joined via your opt-in link and installed on a real device — emulators and duplicate accounts don't count.</cite>
- The 14 days must be **continuous and the most recent 14 days** at the moment you apply. Dropping below 12 resets the streak.
- <cite index="11-1">Meeting the numbers isn't an automatic unlock — applying for production access is a reviewed form asking how you ran the test, what you learned, and what changed as a result.</cite> Developers who hit the numbers still get rejected on weak answers.
**Practical advice:** recruit 15–18 people, not 12, so dropouts don't reset you. Friends, family, Discord servers, r/AndroidAppTesting where developers test each other's apps reciprocally. Start recruiting in week 5.
Note that iOS has no equivalent requirement. TestFlight is optional. This asymmetry surprises everyone.
---
Phase 5 — Ship Something Real (Weeks 11–12, 24 hours)
Take your Phase 3 app, polish it, and publish it to both stores.
**Polish checklist:**
- App icon and splash screen that don't look default
- Dark mode
- Empty states, loading states, error states for every screen
- Works on a small phone (iPhone SE) and a large one
- No console errors, no yellow warnings
- Crash reporting wired up (Sentry)
- Tested on a real Android device, not just a simulator
Then run the full submission for both stores. It should take you a day, not a week, because you already did the hard version in Phase 2.
---
Your Weekly Rhythm
**10–12 hours/week, realistically:**
- Two weekday evenings, 2 hours each — reading + small focused exercises
- One weekend block, 4–6 hours — building the actual project
**Don't:** watch tutorials passively. **Do:** read docs with the editor open, and type every example rather than copying it. The Expo docs are unusually good; you don't need a paid course.
---
Your Entire Reading List
That's it. Resist buying anything else.
1. **docs.expo.dev** — the tutorial, then the guides, then the SDK reference. 80% of your learning.
2. **reactnative.dev/docs** — for core components and APIs.
3. **Apple's App Store Review Guidelines** — read once, fully.
4. **Apple's Human Interface Guidelines** — reference as needed.
5. **Google Play's Developer Policy Center + the app testing requirements page.**
6. **reactnative.directory** — check any library here before installing it, to confirm it works with the New Architecture.
---
Traps to Avoid
- **Don't start with Xcode and Swift.** You have a Mac, so you *can*, but it's a different career. Expo first.
- **Don't stay in Expo Go forever.** It only supports libraries baked into it. Move to a development build (`eas build --profile development`) as soon as you need a native module — around week 6.
- **Don't build your dream app first.** You will hit the publishing wall six months in, discover a rejection reason that requires re-architecting, and quit.
- **Don't skip the Android device.** Android is where the bugs live.
- **Don't copy your web layout.** Mobile users expect bottom tabs, swipe-back, pull-to-refresh, and thumb-reachable controls. Apps that feel like websites get 4.2-rejected.
---
Where You're Going
At the end of 12 weeks you'll have two published apps and a working knowledge of the whole pipeline. From there, the branches are:
- **Depth in React Native** — writing your own native modules in Swift/Kotlin via the Expo Modules API. This is where you become expensive.
- **Ship for yourself** — you now have a distribution channel most web developers don't.
- **Native fluency** — learn enough Swift/SwiftUI to read Apple's docs and debug native crashes. Not to build apps in it; to stop being helpless when something breaks below the JavaScript layer.
The gap you described closes in about three months of evenings. It's a smaller gap than it feels from where you're standing.