FlatList renders long lists efficiently by only drawing what's on screen (unlike mapping inside a ScrollView, which renders everything).
<FlatList
data={products}
keyExtractor={(item) => item.id.toString()}
renderItem={({ item }) => (
<View style={styles.row}>
<Text>{item.title}</Text>
</View>
)}
ItemSeparatorComponent={() => <View style={styles.sep} />}
/>
keyExtractorgives each row a stable key.- Add
onEndReachedfor infinite scroll / pagination. - Add
refreshing+onRefreshfor pull-to-refresh.
Tip: Avoid mapping huge arrays inside ScrollView — it renders every item and gets slow. Use FlatList.
Summary
FlatList efficiently renders large lists with keyExtractor, renderItem, and built-in pagination/refresh support.