React Native Performance
Priority: P0 (CRITICAL)
FlatList Optimization
- •windowSize: Reduce to 5-10 for long lists (default 21).
- •getItemLayout: Provide for fixed-height items. Skips measurement.
- •removeClippedSubviews: Enable for Android (default true).
- •maxToRenderPerBatch: Limit to 5-10 items per frame.
- •keyExtractor: Use stable unique IDs, never index.
- •Avoid Anonymous Functions: Define
renderItemoutside component or useuseCallback.
React Optimization
- •React.memo: Wrap presentational components to prevent re-renders.
- •useMemo: Cache expensive calculations.
- •useCallback: Stabilize function refs for child props.
- •Avoid Inline Objects: Extract to constants or
useMemo.
Navigation
- •Lazy Screens: Use
lazyprop for stack screens (enabled by default). - •Avoid Listeners: Remove navigation event listeners in cleanup.
Images
- •Image Caching: Use
react-native-fast-imagefor network images. - •Resize: Provide
resizeModeand fixed dimensions. - •Format: Use WebP for smaller size.
Bundle Size
- •Hermes: Enable for faster startup (default in RN 0.70+).
- •Tree Shaking: Remove unused imports.
- •ProGuard/R8: Enable code shrinking on Android.
Anti-Patterns
- •No ScrollView for Large Lists: Use FlatList.
- •No Inline Styles: Use
StyleSheet.create(optimized). - •No console.log in Production: Strip with babel plugin.
Reference & Examples
See references/optimization-guide.md for FlatList configuration, memoization rules, and bundle analysis.
Related Topics
react/performance | common/performance-engineering