Use Compressed Images in Lists
Use Compressed Images in Lists
Section titled “Use Compressed Images in Lists”Always load compressed, appropriately-sized images in lists. Full-resolution images consume excessive memory and cause scroll jank. Request thumbnails from your server or use an image CDN with resize parameters.
Incorrect (full-resolution images):
function ProductItem({ product }: { product: Product }) { return ( <View> {/* 4000x3000 image loaded for a 100x100 thumbnail */} <Image source={{ uri: product.imageUrl }} style={{ width: 100, height: 100 }} /> <Text>{product.name}</Text> </View> )}Correct (request appropriately-sized image):
function ProductItem({ product }: { product: Product }) { // Request a 200x200 image (2x for retina) const thumbnailUrl = `${product.imageUrl}?w=200&h=200&fit=cover`
return ( <View> <Image source={{ uri: thumbnailUrl }} style={{ width: 100, height: 100 }} contentFit='cover' /> <Text>{product.name}</Text> </View> )}Use an optimized image component with built-in caching and placeholder support,
such as expo-image or SolitoImage (which uses expo-image under the hood).
Request images at 2x the display size for retina screens.