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:
development— includesexpo-dev-client, used the moment a native module (Lesson 6's ads/IAP) is added and Expo Go can no longer load the app.preview— internal distribution for testers, still requires Apple Developer Program enrollment.production— store-ready, submitted viaeas submit.
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.