Use FlatList rather than rendering all 1000 rows in a ScrollView. Give each item a stable unique key through keyExtractor; memoize an item component; and keep renderItem, callbacks, and derived props stable where useful. Tune windowSize to about 5–10 for memory-heavy lists, set initialNumToRender to the first viewport, and limit maxToRenderPerBatch to about 5–10. For fixed-height rows, provide getItemLayout, and enable removeClippedSubviews on Android. Profile before and after to confirm whet...
Installs into .claude/skills of the current project.
Are you the author of React Native Performance?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-react-native-performance-agent-skills-standard)
Use FlatList rather than rendering all 1000 rows in a ScrollView. Give each item a stable unique key through keyExtractor; memoize an item component; and keep renderItem, callbacks, and derived props stable where useful.
Tune windowSize to about 5–10 for memory-heavy lists, set initialNumToRender to the first viewport, and limit maxToRenderPerBatch to about 5–10. For fixed-height rows, provide getItemLayout, and enable removeClippedSubviews on Android. Profile before and after to confirm whether the JS or UI thread is the bottleneck.