Search code examples
react-native

How do I display an animated gif in React Native?


How can I display an animated gif in react native. This is what I've tried.

<Image source={{uri: "loading"}} />

It works fine with a .png file but when I use a .gif file it's blank. I read somewhere to try renaming the .gif to a .png but that just displays one frame of the animated gif with no animation. Any ideas?


Solution

  • For RN < 0.60

    By default the Gif images are not supported in android react native app. You need to set use Fresco to display the gif images. The code:

    Edit your android/app/build.gradle file and add the following code:

    dependencies: { 
    
        ...
    
        compile 'com.facebook.fresco:fresco:1.+'
    
        // For animated GIF support
        compile 'com.facebook.fresco:animated-gif:1.+'
    
        // For WebP support, including animated WebP
        compile 'com.facebook.fresco:animated-webp:1.+'
        compile 'com.facebook.fresco:webpsupport:1.+' 
    }
    

    then you need to bundle the app again, You can display the gif images in two ways like this.

    1-> <Image 
            source={require('./../images/load.gif')}  
            style={{width: 100, height: 100 }}
        />
    
    2-> <Image 
            source={{uri: 'http://www.clicktorelease.com/code/gif/1.gif'}}  
            style={{width: 100, height:100 }} 
        />
    

    For RN >= 0.60

    implementation 'com.facebook.fresco:animated-gif:1.12.0' //instead of
    
    implementation 'com.facebook.fresco:animated-gif:2.0.0'   //use
    

    I hope it is helpful to others,