If you want to build a mobile application startup, you may have found a CTO, who will be taking care of the technical aspects of the company, while you focus on building a successful business. Now, you're probably asking yourself whether to opt for cross-platform or native app development, in which case you're likely about to compare React Native vs. native approach.
React Native is a cross-platform technology that allows building mobile applications using only JavaScript. According to StackOverflow’s 2020 Developer Survey, React Native beats other cross-platform frameworks such as Google’s Flutter, Microsoft’s Xamarin or Adobe’s Cordova, by a mile. And not without a reason. Sure, just like any other solution out there, it has its flaws, but the benefits outweigh them in the majority of use cases, thus making it versatile for most startups.
This article is written with non-technical CEOs in mind and should provide you with a general understanding of what a cross-platform development is, how does it compare to the well-known native development, what are the potential pitfalls and whether there are any specific differences between various cross-platform technologies. Read on to find out the following:
- What is native development?
- What is React Native and cross-platform development?
- React native vs native: pros and cons of each
- 5 key benefits of React Native
- React Native app examples
Let's dig in!
What is Native?
Native development usually refers to the development of separate applications for each platform using their native technologies, like Objective-C and Swift for Apple’s iOS, and Java and Kotlin for Google’s Android.
Native apps will work only on the operational systems they were developed for and therefore each time you want to target both iOS and Android users you’ll have to develop the same application twice.
What is React Native?
React Native is a JavaScript-based technology developed and maintained by Facebook that allows to use React Native for building cross-platform mobile applications that have a shared codebase between the platforms i.e. iOS and Android.
If you have had previous experience with technologies like Phonegap or Cordova, which essentially turned web pages into mobile applications, then you have had experience with a cross-platform technology, but not the same kind as RN’s cross-platform, as React Native doesn’t use WebView. Instead, it uses JavaScript to render native components into a JavaScript application, successfully omitting all the drawbacks of simply loading a web page into a mobile app.
React Native vs Native comparison
In order to determine which approach is right for you, let’s look at the pros and cons of each. Hopefully this should be enough to help you decide, but if you’re still not sure whether your specific project is even feasible with React Native, then consider consulting with a React Native dev team.
Native app development pros
Ready to handle resource-intensive cases
Thanks to the full access to their respective devices, native apps are ready to be utilized on a larger scale when data-heavy functionalities like 3D, VR, AR, complicated animations and computations come into play.
Instant access to new features
When Apple releases the new version of their operating system with new functionalities, native developers will have instant access to those features (and won’t have to wait for them to be implemented, which is the case for cross-platform technologies).
Direct integration with a selected device
Because native languages are used in the development of operating systems, it’s much easier for developers to integrate with the implemented software and hardware solutions. It gives developers easy access to devices themselves, i.e. sensors, SDKs or various platform-specific functionalities that otherwise may not be used outside the native environment.
Native app development cons
Higher costs of development
Naturally, when you need to develop 2 separate applications with completely different technologies behind them, you need to hire twice as many experienced developers and that raises the overall development costs. Keep in mind that development itself isn’t the only part of the process — finding, hiring and onboarding new developers is not cheap either.
Higher costs of maintenance
After the app has been released, you need to make sure that if there are any small changes that need to be made or bugs to be fixed — there has to be someone to do that. The issue here is that you need 2 developers, 1 for each platform. That can rack up your monthly costs if the app is being constantly used and new bugs and issues keep appearing.
Longer time to market
This one is particularly important for those companies that need to release their app for multiple platforms simultaneously. It’s going to be slightly less of an issue if you have a big budget, but for a startup working with limited resources this could become a problem, and you’ll be forced to prioritize one platform over another.
If you’ve done accurate market research and have data to back up your decision and know which platform is going to be more profitable to start with — good. But if you’re making a blind guess, then you might blow your chances.
Could be an overkill business-wise
As previously mentioned, native technologies are amazing for really complex applications, but those are the minority among startups. So if you’re building an e-commerce mobile app like Walmart’s Grocery app, for instance, then forming two separate teams for two platforms would plainly be a waste of money. If giants like Walmart are not doing it then I don’t think most startups should.
React Native app development cons
Not suitable for resource-heavy applications
React Native is not made with resource-heavy applications in mind and when considering some of the limitations in the interaction with an internal device’s hardware it is no secret that the performance of complex React Native apps would be inferior to the native ones.
Delayed access to new features
When companies like Apple and Google release updates for their operating systems with new features available to native developers, it takes some time for React Native maintainers to implement those new functionalities into their framework. So if your app is fully reliant on Apple and Google’s updates then React Native apps might not be right for you.
React Native app development pros
Cross-platform solution with native-like user experience
What makes React Native such an amazing technology is that it allows the development of native-like user experiences within cross-platform mobile applications with similar performance and a platform-specific look and feel. What makes it even better is the fact that both iOS and Android apps can run on a shared codebase, sometimes with as much as 99% of the code shared.
Ready to integrate with native modules
Should you want to implement some platform-specific features into your app that are not supported by React Native then you can easily write a native module that covers that functionality and simply integrate it into your React Native-powered application.
Over-the-air (OTA) updates
React Native provides support for over-the-air updates, making it extremely easy to provide to your users a seamless experience when you introduce changes to the application they are using. OTA allows you to update your apps without the need to ask your users to do any manual download. The app will simply update in the background as it is being launched.
Single technology stack for the entire team
By using JavaScript as your main technology, you can have Node.js running the backend and React on the frontend. This way the entire team is using the same language — JavaScript. This makes it easier to manage and add or change your developers as you go. It also means that you’ll always have someone who will be able to help with the maintenance of your React Native applications, if a crisis of any sorts occurs.
And with no need to keep two separate teams for essentially identical applications, you have more of your budget to work with.
Shorter time to market
Last but not least, React Native allows you to release your applications faster on both platforms and then update it just as fast, because once the update is written, it will work on both platforms. But if you don’t believe me then you can check what the giants have to say about it.
React Native - key benefits
When choosing between React Native vs native, it's good to take a look at the business benefits React Native can bring.
Benefit #1: Rapid development and maintenance
It is no surprise that cross-platform development is faster than native, considering that you essentially develop 2 or more applications by writing a shared codebase. In some cases, apps can share as much as up to 99% of their code between the most commonly developed Android and iOS applications. Which, especially for startups, could be a tremendous advantage both time- and budget-wise.
You no longer need to decide whether to start with an iOS or an Android app, since you can start with either and then release the second platform in a matter of days or weeks. That’s what happened with bussr, one of the clients we developed an Android app for. After the MVP finally went live, we were then able to deploy the iOS version within 2 weeks, which wouldn’t have been possible had they decided to develop the Kotlin app for Android instead of React Native.
What makes it even better is React Native’s over-the-air (OTA) updates support, which means that if you made up your mind to change something in your application, it could be done without the need to prompt your current users to download an update. The update will instead be deployed in the background and the next time users open the app, it will be automatically updated without their knowledge (well, besides them seeing the changes).
Benefit #2: Great mobile performance
When React Native was initially released, many companies didn’t want to switch from native development to the cross-platform due to the vast differences in performance. Which was true in most cases for a few years, yes. But, as the time went on and React Native matured, not without constant help of its creators at Facebook and a fantastically dedicated community, it became a powerhouse that not only matches the performance of its native counterparts, but sometimes even surpasses them.
What’s also very important to mention is that React Native can easily handle complex applications. Facebook mobile apps, for example, use React Native on as many as 750+ screens, Wix on 650+ screens, while also showing an extremely low number of crashes, in Wix’s case with only ~0.2% crash rate.
Benefit #3: Can be combined with native code
Developing with React Native is not limited to building separate applications too. Many companies combine it with native code to augment the existing experience for its current users without the need to rebuild already functional mobile applications. Often, companies start re-writing their apps from native to cross-platform technology by changing them piece by piece. And sometimes, companies like Facebook, use React Native to simply enhance their native application with screens written in React Native that bring together the best of both worlds.
It also works in reverse. You can build a React Native application and augment it with native functionality using native code should such a need arise. For instance, if you decide to implement some heavy AR features, there’s a high chance that native solutions provided by Apple or Google will perform better. In this situation, just simply build that functionality into your React Native application and there you have it.
Benefit #4: Community-driven
The developers' community is a very powerful one. Mainly because quite often, if you’re having an issue with something code-wise, someone probably already had that issue before you. It is often memed that developers just copy-paste an already written code from StackOverflow and voilà, their job is done. Obviously, it’s not entirely true. But then, it’s not entirely false either.
One creator can only do so much with their technology and that’s why the majority of the most popular tech is open source. This provides an unlimited potential for the technology to keep developing and cover as many use cases as well as edge cases as possible.
JavaScript's community has been extremely helpful in the development of the technology in general and React Native's community isn’t an exception. Powered by Facebook and backed by thousands if not millions of active supporters, the framework matured over the past 6 years to become the versatile technology it is now.
From the business perspective, the community-driven nature of React Native provides you, as a startup owner, with countless opportunities to save time and money when developing your product. Sure, you won’t be able to cover the entirety of your development by simply using already crafted solutions (although I think it is possible), writing every single feature from scratch wouldn’t be wise too.
Benefit #5: Powered by Facebook, used by many big players
Now, during my career in sales, I had a chance to speak to many founders who were either sceptical or afraid of using new technology like React Native due to their perception that if it’s new, it cannot be as good as its counterparts. And while it was true to some extent a few years back, nowadays, I think it has managed to prove itself on countless battlefields.
Let's take a look at social proof now, shall we?
React Native app examples
To support my claim about the benefits of React Native, let’s first look at some examples. Here’s a few of hugely successful applications that use React Native in their code. You have most likely used at least one of them, perhaps installed on your phone right now.
Facebook's React Native app
Facebook — a technology conglomerate from California, the creator of React Native. Many wonder, why Facebook won’t switch all of their applications to React Native and whether React Native is dying? And while it’s true that Facebook Messenger is a native app that was re-written in 2020, again, as a native app, Facebook still heavily uses their JavaScript-based framework.
‘The main app has 750+ React Native screens, and it’s used for several standalone apps.’
- Dan Abramov, Software Engineer at Facebook
When it comes to standalone apps, Facebook used React Native to develop their cross-platform Ads Manager app. Both iOS and Android versions were coded by the same team and the framework seems to handle the complexity of the Facebook Ads business logic just fine.
When building the Facebook Ads app, the team started with iOS, proceeded with Android and thanks to React Native’s code reusability, were able to re-use as much as around 85% of the code that was written for iOS.
They also used React Native to develop another data-heavy standalone app — Facebook Analytics. If you’d like to read about Facebook’s approach to engineering, head over to their blog.
UberEats's React Native app
UberEATS — an American online food ordering and delivery platform launched by Uber in 2014. Fortunately, UberEATS had a lot of similarities between the parent Uber app and hence the team could leverage much of Uber’s existing tech stack to quickly launch the new product.
‘A trip became a delivery. Driver-partners became delivery-partners, and riders became eaters. But there was no analogous party to the restaurant, because for the past five years the assumption had been that there would only be two people involved in a single trip; not three people and one cheese pizza, order of Pad Thai, or chicken fajita.’
- Chris Lewis, Software Engineer on the UberEATS Prediction team
As a result, Uber Engineering team had to come up with a way to set a restaurant-delivery-eater communication with a bare minimum of information relayed:
- Placement of a new order
- Acceptance of an order
- Arrival of a delivery partner
- Completion of an order
A simple React/Flux single-page web app was developed to be used with tablet devices. Because of its web nature, many of the features UberEATS needed were simply not feasible in a browser or were very limited.
When looking for a better solution, the UberEATS team decided to give React Native a try and built a prototype to learn whether, then rather new, RN technology will be able to cover their needs, and it successfully passed the test.
React Native eventually substituted their web-based Restaurant Dashboard. If you’re curious about the tech side of the migration, you can read an in-depth case on Uber Engineering blog.
Discord's React Native app
Discord — an instant messaging, VoIP and digital distribution platform that was initially designed for gamers but now is also used by various industries to host their communities.
React Native has been running in Discord's veins since the very beginning. As they were developing their web-based application, they also needed mobile ones. They started with iOS, but didn’t go for native development and decided to choose React Native instead. It’s worth keeping in mind that the technology back in 2015 was very far from what it is now, yet their tech lead believed in it.
This resulted in:
- v1.0 built within two weeks using the already existing front-end infrastructure,
- Flexbox’s style code was about half as long and far easier to understand than the code of Auto Layout,
- iOS app and web app shared 98% of the code
- performance-wise, the app was only slightly behind those using Objective-C or Swift
Fast-forward to 2021 and the team is still extremely happy with the selected technology. Their iOS app has millions of monthly active users, is 99.9% crash-free and has a 4.8-star rating on the App Store.
Yes, it suffered performance issues on old devices, but React Native allowed them to do the necessary optimization which you can read more about here. And even more can be found on their Engineering blog.
Instagram's React Native app
Instagram — a photo and video sharing social networking service owned by Facebook.
In early 2016, Instagram dev team started looking for ways to enable faster features shipping and thus trying to use React Native to achieve the set goal through code sharing and higher iteration speeds using tools like Live Reload and Hot Reloading that eliminate compile-install cycles.
To kick off their experiment, they decided to port the simplest view they could imagine — Push Notifications, which were originally implemented as a WebView. Although they had a few performance issues at the beginning (let’s not forget React Native was launched in 2015 and in 2016 it still had a long way to go to reach its 2021 performance), they were fixed as the React Native team kept updating the technology.
As a result, the Push Notifications were merged into the core app, and they started working on porting other features.
According to this Instagram blog post from early 2017, React Native adoption allowed their product teams to ship features much faster to both Android and iOS applications. Below you can see the percentages of shared code between two platforms in specific features:
- Post Promote: 99%
- SMS Captcha Checkpoint: 97%
- Comments Moderation: 85%
- Lead Gen Ads: 87%
- Push Notification Settings: 92%
Microsoft's React Native app
Microsoft — an American multinational technology company, familiar to anyone reading this. They are known to use React Native is various of their products.
For instance, in 2019, Appfigures scanned their pool of applications and here’s what they found:
As you can see, there’s a lot of apps on both lists, I’m quite sure you’ve used at least some of them. It’s quite plausible that only some parts of those apps are using React Native, but that still is a very impressive result.
Pinterest's React Native app
Pinterest — an image sharing and social media service with over 400 million monthly active users as of August 2020.
In early 2017, a small group of Pinterest engineers started looking into the possibility of adopting React Native in their software, as they were following the technology since it open-sourced in 2015.
The case is quite similar to the Instagram one: they picked one simple yet critical screen — the Topic Picker (the view is shown to users after they sign up and is apparently extremely important for their onboarding process). The prototype provided the team with an indication that shared code will be very beneficial and will increase developers’ velocity.
It took them 10 days to implement the screen on iOS (including bootstrapping the integrations into their infrastructure) and then they ported the screen over to Android in only 2 days with 100% shared UI code between the platforms, saving more than 1 week of implementation time. Performance-wise, it was just as good as the native implementation.
Due to the success of this prototype, Pinterest team continued to implement React Native into their core tech stack.
If you’re curious to find out more about their engineering, head over to their blog.
Conclusion
Both React Native vs native technologies have their pros and cons. While in some cases it would make no sense to go with React Native, in most — it’s going to be the right choice. It’s up to you to decide which one is better for your startup but if you’re not a technical person and have no idea whether React Native is good for your particular needs — then feel free to book a quick call with our technical advisor by simply dropping me a line at ross@rst.software.
React Native can be incredibly beneficial for the startups that need to build a functional cross-platform mobile application and don’t have either time or resources to waste on developing separate native apps.
React Native app development has gone a long way from where it started and is now successfully used by many tech giants. Sure, the technology is not going to suit every possible scenario out there, but it’s going to work in most of them.
All in all, this technology became a business tool even more so than just a development tool, because it allows startups to focus on the product without thinking too much about a composite tech stack.