When React Native is not a Good Choice for a Mobile Application Development
React Native has been hailed as the next big thing in mobile app development.
It has been praised for its ease of learning (compared to platforms native to Android and iOS) and for serious advantages over established hybrid tools like e.g. Ionic, Cordova or Phone Gap.
But can React Native be successfully used for building any kind of app? In this article, we will describe the three types of apps that React Native is not the best choice for, and much more.
What you will learn from this article?
- What is React Native?
- When to choose React Native?
- What are the benefits of using React Native?
- What to consider if you decide to develop in React Native?
- When is native mobile development better?
- Why did Airbnb drop React Native?
- Is React Native the right solution for my mobile app?
What is React Native?
When to choose React Native?
A lot of big companies like Tesla, Walmart, and Uber Eats are developing apps using this technology. Facebook, Instagram and Zynga also integrated some React Native features into their existing apps. It means that RN, despite some opinions, is a good choice not only for simple apps, but also for more advanced ones. Still, it’s true that RN is the best solution for small/medium apps targeted at both platforms where heavy computations are moved to the server side.
What are the benefits of using React Native?
In general, building cross-platform applications provides a number of benefits. Creating apps with one codebase can save a lot of money and time, as fewer developers are involved in the creation process. There is also no difference in terms of application release and update time on both platforms. React Native is open source - that means that if you are facing issues, there is a high chance of getting help from other developers and the community. Fast Refresh allows you to immediately visualize what you create, which makes mobile app development a lot more productive.
What to consider if you decide to develop in React Native?
If you plan to build an app with React Native and maintain it over a longer period of time, you need to prepare for more frequent updates than in native technologies (you need to update your app both when the platform has been updated and when new components have been added to RN). This is not a disadvantage, as React Native is regularly updated and new useful components are created (reportedly, a new version comes out monthly)! But you have to remember about making more regular updates to your app.
In the past developers struggled with the update process, but since version 0.59 you can make updates without any concern. Also share your plans with your mobile development partner to minimise potential risks (a mismatch between the technology and the development plans).
When is native mobile development better?
Apps with complex user interfaces with a lot of background processing
Apps that are designed for a single OS
There’s a number of apps that you can only download on your iPhone or Android device.
Tasker is an application which performs tasks based on context (time, location, gesture etc.) in user-defined profiles. Created by João Dias, the app is exclusively available on Android devices.
On the other hand, there’s Bear, a simple app designed for notetaking and writing. It has several functions that your typical built-in notepad doesn’t have, such as iCloud sync or tying several connected pieces of text (and some other useful stuff!). Built by Shiny Frog, it uses a solution native to iOS.
One of the biggest benefits of React Native is the fact that it allows for building a single app and releasing it for both Android and iOS. However, the performance really depends on the app you’re developing, and for more complex apps (especially when it comes to the UI), you might be better off sticking to native languages.
Although native languages are the default choice if you’re developing a single-OS app, there is a company that has broken this rule - Discord. Their iOS app uses React Native under the hood, while the Android one is native. You can read about the reasons behind this decision and about the “Start with iOS, try Android later” idea in their blog post.
Utilities and media players
Apps like battery monitors, antivirus software, brightness controllers, and media players can be coded much more easily using native languages. Applications from that category almost always use native features and APIs provided by the underlying platform. Writing native wrappers for APIs and components in those types of apps would take much more time than using native components.
Why did Airbnb drop React Native?
You probably heard that some time ago Airbnb decided to drop React Native, because it did not meet their expectations. The main reason was the cumbersome process of maintaining the language, as Airbnb created their own fork of React Native (they interfered directly with the framework's code). As a result they could not move as fast as they planned with their development process. Also, they found upgrading and debugging React Native difficult and they needed some native components. These difficulties led AirBnB to transition their apps to native technologies.
Does that mean that React Native will fail in your next project too? Absolutely not. First of all, Airbnb started its journey with React Native in 2016, when React Native wasn’t mature as it is today. Second, Airbnb with their really big budget could afford to experiment and switch technology at any time when their needs and business objectives changed.
Last but not least, even Airbnb admitted in a blog post that RN can be a good choice for many applications and that they have mostly good impressions about Facebook's framework.
Nowadays more companies like Microsoft, Shopify or Zynga are building apps using React Native.
So is React Native a solution for my mobile app development?
Despite it not being a one-size-fits-all kind of platform, React Native is still a great and promising framework. The key thing about it is that it’s still in development and we are yet to see its full potential. The community and the team behind it are great and are working hard to fix bugs and implement updates. On top of that, there’s a plethora of courses on React Native that cover it extensively. With such a strong commitment to improving the platform, it’s quite likely that the above issues won’t be relevant before you know it!