{"@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":"mobile-storage-and-memory","title":"Mobile Storage & Memory","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/mobile-storage-and-memory","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/mobile-storage-and-memory.json","summary":{"breadcrumb":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents) → Mobile Storage & Memory","purpose":"Understand on-device storage (key-value, SecureStore, SQLite, files), offline-first design, and app memory so your AI-built app is fast, private and does not crash.","prerequisites":["State Management"],"afterThisChapter":["Databases & Backends: Supabase, PostgreSQL, Firebase & Turso"]},"agentLens":null,"topics":[{"id":"key-value-storage","slug":"key-value-storage","title":"Key-value storage","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["AsyncStorage and MMKV save small values like settings and flags."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"AsyncStorage and MMKV save small values like settings and flags. MMKV is much faster and synchronous but needs a development build.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Key-value storage and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://react-native-async-storage.github.io/async-storage/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"secure-storage","slug":"secure-storage","title":"Secure storage","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Tokens and secrets go in the platform keychain/keystore through `expo-secure-store`, never in AsyncStorage or plain files."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Tokens and secrets go in the platform keychain/keystore through `expo-secure-store`, never in AsyncStorage or plain files.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Secure storage and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/versions/latest/sdk/securestore/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"on-device-sqlite","slug":"on-device-sqlite","title":"On-device SQLite","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["`expo-sqlite` gives a real relational database on the phone for structured, queryable offline data such as notes, workouts or inventory."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"`expo-sqlite` gives a real relational database on the phone for structured, queryable offline data such as notes, workouts or inventory.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is On-device SQLite and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/versions/latest/sdk/sqlite/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"files-and-media","slug":"files-and-media","title":"Files and media","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Store large files in the app's document or cache directory, keep only paths in your database, and clean the cache when it grows."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Store large files in the app's document or cache directory, keep only paths in your database, and clean the cache when it grows.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Files and media and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/versions/latest/sdk/filesystem/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"offline-first-design","slug":"offline-first-design","title":"Offline-first design","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Read from local storage first, write locally, then sync with the server in the background and resolve conflicts with a clear rule (last write wins, or merge)."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Read from local storage first, write locally, then sync with the server in the background and resolve conflicts with a clear rule (last write wins, or merge).","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Offline-first design and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/guides/local-first/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"app-memory-ram","slug":"app-memory-ram","title":"App memory (RAM)","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Large images, unbounded lists and leaked listeners increase memory use until the OS kills the app."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Large images, unbounded lists and leaked listeners increase memory use until the OS kills the app. Virtualise lists, resize images and clean up effects.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is App memory (RAM) and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://reactnative.dev/docs/performance"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"hermes-and-profiling","slug":"hermes-and-profiling","title":"Hermes and profiling","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Expo apps use the Hermes engine."],"why":["Fast startup, offline use and privacy all depend on choosing the right store, and crashes from memory pressure are a common reason for bad reviews."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Expo apps use the Hermes engine. Profile with React Native DevTools, Xcode Instruments and Android Studio's profiler to find slow renders and memory growth.","example":null,"mentalModel":"Storage is your filing cabinet at home; memory is the desk you work on. The desk is small and gets cleared when someone needs the room, so anything important must be filed.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Hermes and profiling and when do you use it in a mobile app?"],"practice":["Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode."],"interview":["Where should an access token be stored on a phone, and why?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a notes app that stores notes in expo-sqlite, saves a theme flag in key-value storage, and works fully in airplane mode.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://reactnative.dev/docs/hermes"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/vector-search-using-vector-embeddings","/blogs/agent-harnessing-what-is-an-agent-harness"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]}],"updatedAt":"2026-10-23T06:01:35.402Z"}