Media Optimization in Apps
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. See the section bibliography for the reference material consulted while preparing these pages. |
Native SDKs often lack a full image pipeline: SwiftUI’s AsyncImage has no dedicated image cache, no prefetching and no
downsampling, and a plain ImageView or Image decodes whatever it is given. This sub-section documents the libraries that
fill the gap on each platform, how to show a BlurHash while an image loads, how to play adaptive video, and how to compress
and upload media from the device. It is current as of 2026-10-07. The server side is in
Media Optimization for the backend.
Pages
| Page | What it covers |
|---|---|
Coil 3 caches and network artifacts, Glide and DiskCacheStrategy, Fresco, and a BlurHash placeholder. |
|
ExoPlayer for HLS and DASH, SimpleCache, Transformer compression and cover frames. |
|
KFImage, DownsamplingImageProcessor, Nuke pipeline and LazyImage, SDWebImage, and the limits of AsyncImage. |
|
AVPlayer with HLS, AVAssetImageGenerator, AVAssetExportSession and background uploads. |
|
expo-image with blurhash and thumbhash, caching, react-native-blurhash, react-native-fast-image and react-native-video. |
|
Coil 3 multiplatform, KMP BlurHash, expect and actual video players, cached_network_image and flutter_blurhash. |
|
When to compress on the phone, HEIC and HEVC from iOS, background and resumable uploads. |
|
A one-page summary of the libraries per platform, placeholder and cache settings. |
Related pages
-
Android: Image Loading with Coil and Glide, Apple: Camera, Media and Photos and React Native: Images and Icons are the platform references this section builds on.
-
BlurHash: The Algorithm explains the placeholder string.
-
Media Optimization for the web is the browser counterpart.
Bibliography
Every source below is the official site, repository or documentation page of the library, service or standard it supports. Links were checked from an authoring environment with restricted outbound access. Entries marked (unverified) could not be opened from there (the site refused or blocked the request), so open them and confirm the content, version and status before you rely on them. Entries without the mark were opened successfully, or, for package pages, confirmed through the package registry.
Android
-
Coil getting started (unverified)
-
Coil, image loaders (unverified)
-
Coil, network (unverified)
-
Fresco (unverified)
-
Glide caching (unverified)
-
Glide Compose integration (unverified)
-
vanniktech/blurhash (unverified)
-
woltapp/blurhash, Kotlin implementation (unverified)
iOS and Apple platforms
-
Kingfisher (unverified)
-
Kingfisher, API documentation (unverified)
-
Kingfisher, cheat sheet (unverified)
-
Nuke (unverified)
-
SDWebImage (unverified)
-
woltapp/blurhash, Swift implementation (unverified)
React Native and Expo
-
Expo, expo-image documentation (unverified)
-
Expo, expo-video documentation (unverified)
-
react-native-blurhash (unverified)
-
react-native-fast-image (unverified)
-
react-native-video (unverified)
Uploads
-
tus, resumable upload protocol (unverified)
Other sources
-
Nuke documentation (unverified)