← All phases
8

Lesson 8 — Publishing

Maps to: SYSTEM.md Phases 8-9 (eas-build-and-submit, app-store-publishing) Goal: understand exactly what happens when an app goes from "done" to "live" — no Mac, no Xcode, at any point.

The build profiles

This system's eas-build-and-submit skill (skills/local/eas-build-and-submit/SKILL.md) defines three eas.json profiles:

For a plain, no-monetization Habit Tracker, you may never need any of these — Expo Go alone is enough to demo it forever. This lesson is a walkthrough of what publishing looks like when you're ready, not a requirement for course completion.

How Apple credentials work — no Mac required

eas build -p ios asks for your Apple Developer login the first time; EAS itself generates and encrypts the distribution certificate and provisioning profile on its own servers. You never touch a .p12 file or Keychain Access (a Mac-only tool) at any point — this is the exact mechanism that makes this whole pipeline Mac-free even at the publish step.

Walkthrough: building the Habit Tracker

eas build --profile development -p ios

The build runs in the cloud (not on your machine) and queues — free tier gets 15 iOS builds/month with a lower-priority queue that can run 30-60+ minutes at peak. This is why Lesson 5 emphasized testing in Expo Go first: a wasted cloud build costs real time.

Common beginner failures to know about before you hit them (from eas-build-and-submit's own notes): files listed in .gitignore but still imported by your code silently fail the upload, case-sensitivity mismatches between git and your filesystem, and forgetting to run npx expo install <package> (which pins Expo-compatible versions) after adding a new package by hand.

Submitting — still no Mac

eas submit -p ios

This needs an App Store Connect API key (a .p8 file, generated in App Store Connect → Users and Access → Integrations) and your app's ASC app ID. It works identically whether you're on Windows, WSL, macOS, or Linux.

For a class setting

Per 04-workflow-course-overview.md Module 8, this is usually a walkthrough/demo rather than every student submitting for real — real App Store submission costs $99/year per developer account, the same Apple Developer Program cost this whole course has been flagging since Lesson 6. Understanding the path matters more than everyone personally publishing.

Deliverable

Understand the path from "done" to "live," even if you don't personally publish — the exact deliverable 04-workflow-course-overview.md Module 8 asks for.

Apply to your own idea

If you and your instructor decide to actually publish a project for real, this is the exact sequence to follow: eas build on the right profile, confirm it shows valid in App Store Connect, then eas submit. If not, you've still seen exactly what it involves — which is the point.

Prompts

Maps to: courses/react-native-course/lessons/08-publishing.md (SYSTEM.md Phases 8-9) Note: most course apps never need this — Expo Go alone demos the app forever. Only run this if you and the student are actually publishing for real.

Prompt 1 — Build

eas build --profile development -p ios

Free tier: 15 iOS builds/month, lower-priority queue (can be 30-60+ min at peak) — test in Expo Go as far as possible first.

Prompt 2 — Submit

eas submit -p ios

Needs an App Store Connect API key (.p8 file + issuer ID + key ID from App Store Connect → Users and Access → Integrations) and the app's ASC app ID. Works from Windows/WSL/macOS/Linux identically — no Mac needed even here.

Optional shortcut

If you're running Claude Code from inside the React Native app builder system repo, /build runs the build step.

Full lesson

courses/react-native-course/lessons/08-publishing.md