• Stars
    star
    142
  • Rank 258,495 (Top 6 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

WebP image integration for React Native apps.

React Native WebP Format

Save tens of megabytes with this simple trick...

The library is released under the MIT license. NPM monthly downloads Current npm package version. PRs welcome! Follow @aleksefo

WebP image integration for React Native apps.

By utilizing WebP instead of png/jpg you can significantly reduce the size of your app without quality loss.

Works with both Image and ImageBackground React Native components.

iOS uses SDWebImage implementation and Android utilizes Fresco to boost the gained performance even more.

Here's a detailed article with extra details and information on what is the best way to convert your regular images to WebP.

Prerequisites:

  • React Native version 0.61 or higher (last tested on 0.71.6). Older versions might work too, but that's not guaranteed.

Installation

yarn add react-native-webp-format

iOS

cd ios && pod install

Android

Add the following dependencies to android/app/build.gradle:

dependencies {
  ...
    implementation 'com.facebook.fresco:webpsupport:2.5.0'
    // Optionally, to display animated WebP images, you have to add:
    implementation 'com.facebook.fresco:animated-webp:2.5.0'
  ...
}

Check the example app if you have any issues. Remember to restart your packager to see the changes. If you still have any issues, try resetting the cache.

Usage

Simply replace .png or .jpg with .webp after you've converted your files <Image source={require('../../assets/close.webp')} />

Known issues

  1. If you use Expo try this

  2. .getSize() doesn't work on WebP images. Use instead:

const {width, height} = Image.resolveAssetSource(require('./assets/1.sm.webp'));
  1. Multiple animated images of too large size (~5MB) may crash iOS app due to running out of memory. Possible solution

PRs are welcomed ❀️