{"@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":"faq-and-troubleshooting","title":"FAQ & Troubleshooting for Expo Vibe Coders","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/faq-and-troubleshooting","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/faq-and-troubleshooting.json","summary":{"breadcrumb":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents) → FAQ & Troubleshooting for Expo Vibe Coders","purpose":"Fix the most common Expo, NativeWind, Supabase, EAS and store errors fast, with questions answered the way search and AI assistants ask them.","prerequisites":["Capstone Projects & Launch Plan"],"afterThisChapter":["Ship your app and iterate with real users"]},"agentLens":null,"topics":[{"id":"metro-bundler-and-cache-issues","slug":"metro-bundler-and-cache-issues","title":"Metro bundler and cache issues","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["If changes do not appear or a module cannot be resolved, restart with `npx expo start -c`, check import paths and reinstall dependencies."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"If changes do not appear or a module cannot be resolved, restart with `npx expo start -c`, check import paths and reinstall dependencies.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Metro bundler and cache issues and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"native-module-not-found","slug":"native-module-not-found","title":"Native module not found","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Errors such as 'TurboModuleRegistry.getEnforcing' or 'native module not found' mean the library needs a development build rather than Expo Go, or a rebuild after adding it."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Errors such as 'TurboModuleRegistry.getEnforcing' or 'native module not found' mean the library needs a development build rather than Expo Go, or a rebuild after adding it.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Native module not found and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/develop/development-builds/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"network-request-failed","slug":"network-request-failed","title":"Network request failed","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["On a phone, `localhost` is the phone itself."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"On a phone, `localhost` is the phone itself. Use your computer's LAN IP, a tunnel, or a hosted dev backend; on the Android emulator use `10.0.2.2`.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Network request failed and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://reactnative.dev/docs/debugging"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"nativewind-classes-not-applying","slug":"nativewind-classes-not-applying","title":"NativeWind classes not applying","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Check `global.css` is imported once in the root layout, `content` paths include your folders, Babel and Metro are configured, and restart with a cleared cache."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Check `global.css` is imported once in the root layout, `content` paths include your folders, Babel and Metro are configured, and restart with a cleared cache.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is NativeWind classes not applying and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://www.nativewind.dev/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"supabase-returns-empty-data","slug":"supabase-returns-empty-data","title":"Supabase returns empty data","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Usually Row Level Security with no matching policy, a missing session, or a wrong `user_id`."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Usually Row Level Security with no matching policy, a missing session, or a wrong `user_id`. Test the query as the signed-in user.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Supabase returns empty data and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://supabase.com/docs/guides/database/postgres/row-level-security"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"eas-build-failures","slug":"eas-build-failures","title":"EAS build failures","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Read the first error in the build log; check SDK and dependency compatibility with `npx expo-doctor`, Node version and credentials."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Read the first error in the build log; check SDK and dependency compatibility with `npx expo-doctor`, Node version and credentials.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is EAS build failures and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/build/introduction/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"store-rejections","slug":"store-rejections","title":"Store rejections","level":"advanced","category":null,"importance":null,"difficulty":"advanced","learn":["Common reasons: missing privacy policy, no account deletion, unexplained permissions, crashes on launch, or broken demo accounts."],"why":["Most lost hours come from a few repeat problems; knowing them keeps momentum."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Common reasons: missing privacy policy, no account deletion, unexplained permissions, crashes on launch, or broken demo accounts. Provide test credentials in review notes.","example":null,"mentalModel":"It is a car's dashboard warning-light manual: each light has a known cause and a first check.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Store rejections and when do you use it in a mobile app?"],"practice":["Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md."],"interview":["An app works in the simulator but a feature fails on a physical device; how do you investigate?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Create TROUBLESHOOTING.md in your repo with five errors you hit and their fixes, and link it from AGENTS.md.","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/expo-new-version-sdk-52","/blogs/cursor-codex-claude-code-prompts-collection"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]}],"updatedAt":"2026-10-23T06:02:36.808Z"}