When You Need React Native (and When You Don’t)
React Native is a technology that can dramatically decrease the time needed to develop a mobile app for both iOS and Android. Still, like any tool, it is not something that is applicable to all cases. This article will help you understand when you should go for React Native, and when it is better to opt for another technology.
What Is on the Table
In mobile app development, there are three general directions that you can go in terms of technology.
The first option is using native programming languages. This means coding your app in Java or Kotlin if you are building for Android, and Swift/Objective C if you target iOS. These options offer the best performance and compatibility.
The second option is using mobile web technologies: Ionic, PhoneGap, and the like. They allow you to get a website masquerading as an application. As a result, the team can write the code once and have it working on both platforms. This is the cheapest option, however, it is also the most limited in speed and available features.
The third option is tools like React Native (RN). Apps built with it can run on both platforms (like with mobile web apps) but have much better performance and visuals.
React Native in a Nutshell
RN was released by Facebook in 2015 as a technology to build applications that would run on iOS, Android, and Windows Phone under the philosophy of “write once – run anywhere”. Since then it has really matured and got adopted by other high-profile companies: Tesla, Walmart, Bloomberg, Salesforce, Shopify, etc.
This is what’s typically listed as its advantages:
- Code reusability. Airbnb, for example, claimed that in certain features up to 100% code worked on both iOS and Android. Some features, however, need to be adjusted for a specific platform. This constitutes about 5-10% of the code in the case of two mobile apps, and about 20% or more (depending on the specific features and design) if there is also a web app involved.
- Development speed and cost. As most of the code can be reused, the app can be released faster and cheaper. But there is another factor that plays into it: management and team experience. With RN you will need one team instead of two with all the attached overhead. In our experience, developing a React Native app is about 1.5 times faster than two native ones.
- Performance. In most cases, the users won’t see any difference between an app built with React Native and a fully native one.
- Web compatibility. RN is a descendant of React, a framework for making frontend parts of web applications. This means some mobile app code can be reused on the web and vice versa.
- Native support. If the inbuilt functionality of React Native doesn’t allow you to make a certain feature, you can create this feature with native technologies and integrate it. In our experience, though, this rarely comes into play.
- Unified design. RN allows creating apps that look almost identical on iOS and Android. Not only the visuals, but the user experience is very similar as well. This means using React Native for both platforms is preferable, as it is often cheaper.
And this is what’s not so great about this technology:
- Requires native knowledge. Some features can’t be implemented with just RN. To build them the team needs to write some native code for iOS and Android, which means extra strain on the development team. In addition, the speed of quality assurance and debugging largely depends on the experience of the team. If a React Native app uses a mix of languages and technologies, the developers need to know about them all. This includes, for example, nuances of delivery to both PlayMarket and AppStore.
- Upgrades. React Native gets regular updates and improvements. But implementing them in your app can take an awful lot of time and put a strain on the team. This issue was way worse back when RN was only in the early stages of its development but it still persists.
- App size. Apps in React Native tend to take more storage space than their native counterparts.
Use Cases
Here’s when you should look to RN as your mobile development technology.
1. Working with All Platforms
The main competitive advantage of React Native lies in the reusability of the code between web, Android, and iOS. This, in turn, leads to more benefits in the case of simultaneous development for all platforms:
- One technology stack, which simplifies creating the app;
- One cross-functional team that is easier and cheaper to manage than two or three separate crews;
So if you need an app for Android and iOS, let alone web as well, RN is likely the best option.
2. Building an MVP
Startups need to develop their MVP cheap, launch it ASAP, and be able to pivot quickly if such need arises.
React Native fits all three. It allows developing two apps simultaneously with fewer people, dramatically decreases time-to-market, and lets the developers make meaningful changes quicker than with native technologies.
Just so you have an idea of how quickly things can move, take a look at the experience of Pinterest. When they decided to test RN, they built one of their core features – topic picker – in only 12 days. This included both platforms.
3. Rewriting an App
Rewriting an application from scratch is always risky. In some cases, though, you have to do it to make adding new features easier and save money in the long run.
React Native works great for this as it adds to the developers’ productivity, allows sharing large chunks of code between platforms (thus decreasing the time needed for rewriting), and has a large community that would help find optimal solutions to your problems.
For example, Shopify, an eCommerce powerhouse, rewrote their Arrive app with React Native. As a result, the app became much more stable and they achieved 95% of code sharing between platforms.
Another good case is Tableau, data visualization software. After they remade their apps with RN, their usage grew by 60%, and stability improved as well.
4. Reusing Web Elements
If you already have a web application that uses React as its frontend framework, you can gain some major benefits if you use React Native for your mobile app. This will allow sharing code between web, iOS, and Android, thus saving a lot of development time and money.
Airbnb used this benefit for their previous mobile app (they switched to fully native apps later) and found that this is a good way to ensure visual consistency.
Anti-use Cases
And this is when React Native isn’t the best choice.
1. Apps for One Platform
One of the major selling points of RN is the ability to reuse the same code on many platforms: web, iOS, and Android. Developing a single app robs you of this benefit. Although there are cases when this was done successfully (e.g. Vogue) it is usually easier to go with a native app.
2. Utilities
Certain apps (battery checkers, video players, QR-code scanners, etc.) use a lot of low-level functionality that depends on the specific hardware. This requires using native technologies no matter what. As a result, writing such apps with React Native is a bit like hammering the nails with a screwdriver: possible, but not very efficient.
3. Lots of Integrations
Sometimes, an app requires connections to many other systems to function. This can be business software (LMS/CRM/HRM, for example) or any kind of application that relies on third-party libraries. The rapid expansion and improvements of React Native mean that with each update there is a risk of incompatibility. Multiply that by the number of integrations and you will see that in this case, it is better to go native.
Conclusion
React Native generally delivers on the promises of powerful apps with large amounts of shared code. It is supported by one of the largest software companies in the world and has many examples of successful use. Conduct technical and commercial analysis to see whether this technology is worth committing to. And if you decide to go with it, or just need some help in selecting what’s best, drop us a line.