Reading Time: 9 mins

How to Get Better Performance out of Your React Native App

How to Get Better Performance out of Your React Native App

Fast to build, easy-to-use, incredible user experience and impressive user interface – React Native is the future of Hybrid apps. While it’s cheaper than building a Native app, it’s ahead in terms of speed, agility and performance. It’s also cost efficient in many ways including the fact that a single codebase can be shared across multiple platforms, making maintenance easy. No wonder it is adopted by successful companies like Facebook, Instagram, Tesla and Discord to name a few.  

Even with all this, there are multiple ways by which the performance of a React Native app can be further optimized. We will look at what those steps are in this article.  

 

1. Stay Updated 

It is important to always run the latest version of React Native because it not only improves the performance and enhances the security of your app but also makes it compatible on the mobile software being used by the customers by making the necessary adjustments to any changes in both iOS and Android. Though it requires some amount of effort, upgrading gives you access to more APIs and developer tools. 

You can follow this quick guide for updating React Native major version. 

 

2. Upgrade Libraries 

React Native comes with a set of built-in components and APIs ready for your use. However sometimes they may not have the functionalities you’re looking for. Not to worry, because you can always search for and install a library from the community. It is well known that React Native’s community comprises of thousands of developers capable of actively supporting your project needs.  

Get more details about installing and using libraries for React Native here. 

 

3. Use Slowlog for high performance 

Known as a high-performance timer based profiler for React Native, Slowlog has been the go-to for many developers when it comes to view rendering performance. This tool lets you add a custom threshold, making it easier to use. All you have to do is add the following single line of code and be off to profiling: 

slowlog(this, /.*/) 

This tool can be used as a defense against major performance problems because it notifies you if any operations in your app are slow.  

 

Watch this Tech Nugget video that takes on the Flutter vs React Native conundrum -

4. Debugging with Flipper 

You can usually debug your React Native app using console.log but using Flipper will show you why you’re getting an error right away. Not only that, but Flipper also gives you access to native logs as well as helps you track bugs on network requests and then debug them. You can also use Flipper to debug Logs, React dev tools, Crash reports, Images and more. All in all, it is an effective tool to have for your React Native app.  

 

5. Find Memory Leaks 

Android Studio Profiler is a tool that can be used to identify the memory leaks induced in your React Native app. Memory Profiler is a component in the Studio Profiler that identifies the leaks that cause app freezes and crashes. It also shows a real-time graph of your app’s memory usage. 

 

Memory Profiler should be used to take care of the following: 

  • Identify undesirable memory allocation patterns that could be causing performance issues 
  • Keep a constant check on objects which are using up memory. Several heap dumps over an extended period can help pick out the memory leaks. 
  • Keep a check on object allocations with respect to what type of objects were allocated, space they use, trace the allocation and if the objects were deallocated. Most of all it keeps note if the allocated objects are causing memory leaks. 

 

7. Use Native Driver 

In any app loaded with graphics and animations, optimizing these animations is of utmost importance. The Animated library in React Native can design powerful and fluid animations that are easy to build and maintain. By using Native Driver the animation elements are sent to native therefore enabling the animation to perform on UI thread. This ensures that the framerate of your app never goes below 60fps. You can then block the JavaScript thread without any hindrance to the animation.  Use Native driver by specifying useNativeDriver: true in your animation configuration.  

 

8. Improve App Launch Time 

App launch is a detrimental factor in converting users on your app. Delay in launch time on React Native app can be attributed to default implementation of React Native. The only thing to do here is to ensure Object.finalize element is taken care of. The finalizers run on a single thread which creates huge dependencies because all objects must wait until all finalizers pass through.  

 

9. Image Optimization 

One of the other steps is to reduce the size of the images using an image optimizer tool. It is also important to use responsive images as well for optimum results. A couple of other tips you can follow in this regard are: 

  • Use smaller images 
  • Convert your images to WebMP format. This can speed up your image loading time to a great extent 
  • Use JPG instead of PNG to reduce the risk of memory leaks 

 

10. Track Renders 

Unnecessary rendering can slow down your application. Using React Redux you can pass a render count to your view. This will give you an insight into how many times your view is rendering. This can be helpful in tracking down unnecessary renders by keeping a log.  

 

 

Conclusion: 

We have listed a few tools and actions you can adopt to deal with the problematic components of your React Native app. As you can see these can be dealt with by using tools that will ensure your app is optimized in terms of performance. Also be sure to track the results after putting these into action. As long as you keep the performance in mind, your React Native app can deliver an impeccable performance and delightful user experience.
 

 

Sharon Mariam Koshy

Loves getting creative with mundane topics in addition to geeking out over books and movies.