Performant image component for React Native. Powered by Nuke and Coil
- Support New Architecture. see the example
- Support authorization headers
- Support thumbhash, blurhash and memoryCacheKey for placeholder
- Memory cache, aggressive LRU disk cache and HTTP disk cache
- Prefetch, dispose, cleanMemoryCache and cleanDiskCache
- Written in TypeScript, Swift and Kotlin
- Support special formats (SVG, Gif, APNG)
npm install react-native-turbo-image
cd ios && pod install
import TurboImage from 'react-native-turbo-image';
<TurboImage
source={{ uri: "https://github.com/duguyihou/react-native-turbo-image/assets/9347790/7955aa00-0b53-44d1-88bd-9b5e320db21e" }}
style={{ width: 300, height: 300 }}
/>;
Name |
Type |
Description |
Default |
source |
Source |
(Required) an object containing a uri string |
- |
style |
ImageStyle |
Styles to be applied to the image. |
- |
placeholder |
Placeholder |
show placeholder while loading |
- |
cachePolicy |
CachePolicy |
Determines how to cache the image |
urlCache |
resizeMode |
String |
Resize the image with one of the options: contain cover stretch center |
contain |
indicator |
object |
style : medium (default) or large . color : number / ColorValue |
- |
fadeDuration |
number |
The transition duration of the image. Note: To avoid flicking, it will be set to 0 when a placeholder is provided |
300(iOS) / 100(Android) |
resize |
number |
Scales an image to the given width preserving aspect ratio |
- |
blur |
number |
The blur radius of the blur filter added to the image |
- |
monochrome |
number / ColorValue |
The color applied to the image. note: For iOS and Android Q+, it works with any color. For Android Q-, it only supports grayscale |
- |
tint |
number / ColorValue |
The color is applied to every non-transparent pixel, causing the image’s shape to adopt that color. This effect is not applied to placeholders |
- |
showPlaceholderOnFailure |
boolean |
Show the placeholder image in the case of a failure |
false |
rounded |
boolean |
Round the image into a circle |
false |
enableLiveTextInteraction |
boolean |
Enables Live Text interaction with the image (iOS 16+ only) |
false |
allowHardware |
boolean |
Setting this to false will reduce performance on API 26 and above. Only disable this if necessary. Coil's docs (Android only) |
true |
format |
string |
Specify the format for special image, e.g. svg , gif and apng . In general, TurboImage will determine the decoder automatically. |
- |
onStart |
Function |
Gets called when the request is started. |
- |
onProgress |
Function |
Gets called when the request progress is updated. |
- |
onSuccess |
Function |
Gets called when the requests finished successfully. |
- |
onFailure |
Function |
Gets called when the requests fails. |
- |
onCompletion |
Function |
Gets called when the request is completed. |
- |
await TurboImage.prefetch([Source]);
await TurboImage.dispose([Source]);
await TurboImage.clearMemoryCache();
await TurboImage.clearDiskCache();
Name |
Type |
Description |
uri |
string |
the url of the image |
headers |
Record<string, string> |
An object representing the HTTP headers to send along with the request for a remote image |
cacheKey |
string |
The cache key used to query and store this specific image. If not provided, the uri is used also as the cache key |
Name |
Type |
Description |
thumbhash |
string |
A string used to generate the image placeholder. For more information, see thumbhash |
blurhash |
string |
A string used to generate the image placeholder. For more information, see woltapp/blurhash. |
memoryCacheKey |
string |
Using the key of previous request as placeholder. For more information, see Memory Cache Key |
thumbhash |
blurhash |
memoryCacheKey |
|
|
|
Name |
Type |
Description |
urlCache |
string |
Allows the server to manage caching precisely through cache-control HTTP headers. You can determine which images to cache and caching duration |
dataCache |
string |
Ignores HTTP cache control |
See the contributing guide to learn how to contribute to the repository and the development workflow.
TurboImage is released under the MIT license. Some of the dependencies are licensed differently, with the Apache-2.0 license, for example.