Aditya Goswami

Aditya Goswami


Do's and Don'ts of React Native Performance From a User Perspective

Performance is the topic of discussion when users use one of the popular frameworks named React Native for development of real-world applications.
You may find React Native a very fast by nature but you might have to face some performance issues.

You never need to worry about that, I am here going to share a few important tips which help you to optimize performance of React Native Development Services while developing React Native applications.

Lets starts

DO: Use an Image Caching Solution

If you work with React Native, you might be aware that React Native offers an Image component with its other core components. The main aim of this component is two display an image, but surprisingly it has no solution for the following issues.

  • low performance in general
  • flickering
  • low-performance loading from cache
  • rendering a lot of images at one screen

Now the wonder is what can be the cause of such an issue with one of the popular frameworks, Image component handles caching images which is the cause here. But there is a way to resolve it, you can use a third-party library named react-native-fast-image. It is efficient when it comes to caching images and can be useful for both Android and iOS.

DO: Use appropriate image size

If your application is having a big number of images then optimizing an image becomes the crucial factor for React Native application’s performance. When you render lots of images, it can use high memory and you do not optimize the image in terms of size. Later on it can be the reason for the app crash.

You can follow the following points to optimize images for your application.

  • It is better if you use WEBP format for images, it will reduce binary size.
  • You should use PNG format, No JPG
  • Use PNG format instead of JPG
  • Use smaller-sized images

DO: Avoid unnecessary renders

React Native handles the rendering components as React.js and it is based on the React library. So, the methods of optimization for the react, can also apply for React Native applications. One of the best practices for optimization is to avoid unnecessary renders, you can do it by using React.memo().

DO: Use nativeDriver with Animated library

You will find various ways to develop animations in a React Native application. React Native developer love to do it with usage of Animated library.

To send the animations over the native bridge, Animated uses nativeDriver before animation starts. You will get a smoother experience here.

If you want to use nativeDriver with the Animated library, you should set the value to true. Lets see in example below where useNativeDriver is used.

[{ nativeEvent: { contentOffset: { y: animatedValue } } }],
{ useNativeDriver: false }

// Component’s content

DO: Use Flipper to debug issues

In the React Native 0.62.0, you will get a tool named flipper. It is used as a debugging platform for React Native applications of iOS and Android.

You do not require remote debugging to debug apps with Flipper. It requires locally connected applications. To check out the props and states of a React component, it has React DevTools.

DO: Use Hermes

It is an open source engine for optimizing applications and it is based on JavaScript. It helps you to reduce the downloading size for an application, reduces the time and reduces memory consumption.

If you want to use the Hermes engine in an Android app, go to build.gradle and follow the command.

def enableHermes = project.ext.react.get(“enableHermes”, true);
For iOS, follow this command.

usereactnative!(:path => config[:reactNativePath], :hermesenabled => true

DON’T: Leave console statements in the source code

You can see in the development process of React Native and JavaScript applications, use of console.log statements is normal for debugging. But you will surely meet with thread if you leave console statements in the source code while react native development.

Best practices to maintain tract of console statements and remove by using babel-plugin-transform-remove-console, which is a third-party package. Use the following command to install it.

yarn add babel-plugin-transform-remove-console

After that you need to modify the .babelrc file. If you want to remove all console statements:

“env”: {
“production”: {
“plugins”: [“transform-remove-console”]

DON’T: Use Scrollview to render a huge list of data items

If you want to develop the scrollable lists in React Native, Various ways are available for that. Out of those two ways are FlatList components and ScrollView.

It is very easy to implement the ScrollView component but it renders all children at the same time. It can be good practice when the number of items is low but for large applications it can have a negative impact on the performance of applications.

For large applications FlatList is more preferable.


So being an open source framework, React native development services aim to develop cross-platform mobile applications. At its core, it uses JavaScript and to develop the interfaces and functionalities it has a primitive API of components. You keep the performance in mind and develop the application, React Native will be the most high-performance framework.

If you want to develop the custom applications from scratch, contact the React Native Development Company and hire experts PMs and developers to manage your React Native Development.

Do's and Don'ts of React Native Performance From a User Perspective