AI-consumed reference. Optimized for Claude to read during execution. Human-readable explanation: see docs/architecture/HIERARCHICAL_PLANNING.md or docs/getting-started/ depending on topic.
React Native Expert — Gotchas & Decisions
Use Context7 for React Native/Expo docs.
Key Decisions
decisions[4]{choice,use_when}:
FlatList vs FlashList,"FlashList (@shopify/flash-list) for large lists — 5-10x faster. FlatList for simple short lists"
Storage hierarchy,"AsyncStorage: non-sensitive KV. SecureStore: tokens/secrets. MMKV: high-perf sync access"
Expo vs bare RN,"Expo: most projects (EAS Build handles native). Bare: custom native modules required"
NativeWind vs StyleSheet,"NativeWind for Tailwind familiarity. StyleSheet for performance-critical views"
Gotchas
- FlatList: always set
keyExtractor,getItemLayout(fixed height),maxToRenderPerBatch,windowSize ScrollViewinsideFlatListor vice versa — causes layout issues. UseSectionListor nested FlatList withhorizontalPlatform.select({ ios: X, android: Y, default: Z })— always includedefaultfor webAnimated.Valuepersists across renders — create inuseRefnotuseStateuseWindowDimensions()overDimensions.get()— the hook updates on rotation- Expo:
npx expo installfor compatible package versions —npm installmay get incompatible versions react-native-safe-area-context>SafeAreaViewfrom react-native (more reliable on Android)- Deep linking: configure both
app.jsonscheme AND native URL schemes for universal links console.login production kills performance — use__DEV__guard or babel plugin to strip