--- title: Use expo-image for Optimized Images impact: HIGH impactDescription: memory efficiency, caching, blurhash placeholders, progressive loading tags: images, performance, expo-image, ui --- ## Use expo-image for Optimized Images Use `expo-image` instead of React Native's `Image`. It provides memory-efficient caching, blurhash placeholders, progressive loading, and better performance for lists. **Incorrect (React Native Image):** ```tsx import { Image } from 'react-native' function Avatar({ url }: { url: string }) { return } ``` **Correct (expo-image):** ```tsx import { Image } from 'expo-image' function Avatar({ url }: { url: string }) { return } ``` **With blurhash placeholder:** ```tsx ``` **With priority and caching:** ```tsx ``` **Key props:** - `placeholder` — Blurhash or thumbnail while loading - `contentFit` — `cover`, `contain`, `fill`, `scale-down` - `transition` — Fade-in duration (ms) - `priority` — `low`, `normal`, `high` - `cachePolicy` — `memory`, `disk`, `memory-disk`, `none` - `recyclingKey` — Unique key for list recycling For cross-platform (web + native), use `SolitoImage` from `solito/image` which uses `expo-image` under the hood. Reference: [expo-image](https://docs.expo.dev/versions/latest/sdk/image/)