{"@context":"https://ihatereading.in/roadmap/schema/v1","type":"roadmap-chapter","roadmap":{"slug":"vibe-coding-mobile-app-development","title":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents)","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development.json"},"slug":"build-release-and-updates","title":"Build, Release & Over-the-Air Updates","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/build-release-and-updates","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/build-release-and-updates.json","summary":{"breadcrumb":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents) → Build, Release & Over-the-Air Updates","purpose":"Ship your app with EAS Build and Submit, TestFlight and Google Play testing, store requirements, OTA updates with EAS Update, and a CI pipeline.","prerequisites":["Debugging & Reviewing AI-Generated Code"],"afterThisChapter":["AI App Builders & Other Vibe Coding Tools"]},"agentLens":null,"topics":[{"id":"eas-build","slug":"eas-build","title":"EAS Build","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Expo's cloud service builds iOS and Android binaries with managed signing credentials."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Expo's cloud service builds iOS and Android binaries with managed signing credentials. Profiles in `eas.json` define development, preview and production builds.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is EAS Build and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/build/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"eas-submit","slug":"eas-submit","title":"EAS Submit","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Uploads production builds to App Store Connect and Google Play from the command line or CI."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Uploads production builds to App Store Connect and Google Play from the command line or CI.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is EAS Submit and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/submit/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"internal-and-beta-testing","slug":"internal-and-beta-testing","title":"Internal and beta testing","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Use TestFlight and Google Play internal or closed testing so real people try the build before the public does."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Use TestFlight and Google Play internal or closed testing so real people try the build before the public does.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Internal and beta testing and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://developer.apple.com/testflight/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"store-requirements","slug":"store-requirements","title":"Store requirements","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Prepare icons, screenshots, a privacy policy URL, data-safety and privacy declarations, permission reason strings, age rating, support contact and account deletion."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Prepare icons, screenshots, a privacy policy URL, data-safety and privacy declarations, permission reason strings, age rating, support contact and account deletion.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Store requirements and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://developer.apple.com/app-store/review/guidelines/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"ota-updates","slug":"ota-updates","title":"OTA updates","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["EAS Update ships JavaScript and asset changes without a store review, within the limits of your runtime version."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"EAS Update ships JavaScript and asset changes without a store review, within the limits of your runtime version. Native changes still need a new build.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is OTA updates and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/eas-update/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"versioning-and-channels","slug":"versioning-and-channels","title":"Versioning and channels","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Use semantic versions, auto-increment build numbers, and channels (staging, production) so updates reach the right audience."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Use semantic versions, auto-increment build numbers, and channels (staging, production) so updates reach the right audience.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Versioning and channels and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/eas-update/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"ci-cd","slug":"ci-cd","title":"CI/CD","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Run typecheck, lint and tests on every pull request and build previews on merge, so releases start from a green main branch."],"why":["A smooth pipeline lets you ship small changes often, and a rejection or crash on launch day costs weeks."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Run typecheck, lint and tests on every pull request and build previews on merge, so releases start from a green main branch.","example":null,"mentalModel":"Releasing an app is like opening a restaurant branch: inspections (review), a soft opening (beta), the grand opening (rollout) and daily menu tweaks (OTA).","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is CI/CD and when do you use it in a mobile app?"],"practice":["Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel."],"interview":["What can an over-the-air update change and what can it not?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create eas.json profiles, build a preview for both platforms, distribute to two testers, and ship one OTA fix to a staging channel.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.github.com/actions"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/the-list-is-the-easy-part-393-saas-directories-and-the-agent-that-has-to-use-them","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]}],"updatedAt":"2026-10-23T06:02:26.416Z"}