The Advantages of React Native

React Native provides an avenue for organizations to develop native-feeling mobile applications without the steep investment of specialized app teams for iOS and Android. By sharing a unified code base for both platforms you are also reducing feature's time to market and minimizing the amount of code needed.

When exploring taking your business mobile, looking at a hybrid framework often makes the most sense. When weighing out the options, utilizing one team to develop for web, iOS, and Android platforms allows you to keep features in sync across all platforms, ensure same quality and design, and move faster with a leaner team. These are all benefits that any organization can take advantage of, and are especially advantageous if you have had success in a web app but are not sure how much adoption you will get on mobile and want to minimize the investment to test. While there are a number of options for hybrid frameworks, React Native should be the top option for your company when selecting.

React Native was born from two major events – 1) Facebook declaring themselves a mobile-first development company with lifelong web developers and 2) the realization that building their mobile app out of HTML5 was resulting in poor performance and a bad user experience. Through this realization and an internal hackathon, they discovered a way to execute JavaScript on a phone which led to their open-source release of React Native. This changed the game and allowed their web developers to quickly pivot to writing code for mobile, and only having to write it once for both iOS and Android. Since then it has become one of the top watched and downloaded repositories on GitHub, with well-known companies such as Walmart, SalesForce, Shopify, Discord, Tableau, and of course Facebook and Instagram, utilizing it.

Write Code Once

When exploring the benefits of React Native and why you should strongly consider choosing it as your mobile framework, the benefit of writing your code once for both iOS and Android cannot be understated. In fact, AirBnB was able to achieve 95-100% of shared code, and only 0.2% of files were platform-specific to Android or iOS when they utilized React Native. No matter the angle you look at it, whether it is cost, quality, time, or support, writing code once and having it work on both Android and iOS is a huge plus to your company. It cuts the amount of engineer time needed in half, letting you move faster and more cost-effectively. It increases your quality by increasing consistency in experience and minimizing the possibility of differences in testing. There are even frameworks available, like Expo, that further reduce the time of developing and testing. While other hybrid frameworks, such as Cordova, allow you to do this they do not come close to emulating the native app feeling of React Native and often result in poorer performance. Cordova does have the advantage in that it will take your existing web application and allow it to run mobile, but since it is just running a WebView of your existing application you sacrifice the native feeling and performance you gain from React Native. Due to this, you do not see it leveraged at companies that are known for their mobile presence. One other benefit of React Native that I want to call out is the over-the-air (“OTA”) updates. You are able to push OTA updates to your application for any Javascript functionality and circumvent having to republish to the app store. This is great for quickly deploying any bug fixes that may be impacting your users and quickly resolving the issue.

Keep Your Team Lean and Flexible

As organizations fully embrace agile and product mindsets there is a continued pressure to produce more with leaner teams. React Native provides the opportunity to do this by requiring just one team to produce code for both your Android and iOS apps. In a non-hybrid app build you would need native developers for both Android and iOS. This not only increases your developer needs, but increases your testing needs, product oversight, support teams, deployment overhead, and the list goes on. Not only does this result in larger teams, but more specialized teams. If you hire a developer to build iOS or Android native as their specialty, chances are they are not interested in learning JavaScript and not exercising that specialty. Utilizing React Native as your mobile framework allows you to utilize your existing web developers used to working in JavaScript to build your mobile app. More importantly, it also allows you to pivot the team working on your mobile app development to a different web product if a higher priority comes up. This flexibility in resourcing is very advantageous when changing priorities and pivoting for changing customer needs and market trends.

Shortcomings and Why Teams Pivoted Away

You may be reading this and wondering why you would not choose React Native to build your mobile application. AirBnB had decided in 2016 to utilize React Native as their go-forward framework and in 2018 decided to change course and go back to building solely in native iOS and Android. In their series of 5 blog posts, they highlighted some of the benefits they did see from React Native – including performance, iteration speed, and that it uses React. The challenges they faced, however, are also worth noting to learn from as well. The top reason for leaving React Native was organizational. They were building some features in native and some in React Native. This was the main issue that they experienced, as from a tech perspective it changed how they approached certain features and making sure the design was consistent across the native and React Native features. From an organizational standpoint, they saw that it was a mixed bag in terms of adoptions from their developers. Teams that were used to native development in iOS or Android didn’t want to switch or learn it and reverted back, while certain teams embraced it and saw it as an opportunity to move faster. A separate concern was getting known as a React Native company and losing out on top native iOS and Android engineering talent who didn’t apply. Udacity – another company that had previously used React Native and published a blog post on why they are switching away – noted similar feedback from their existing mobile developers. It’s also worth noting that these companies both made investments to hire more native engineers and increased the team size of engineers as they moved off of React Native, allowing them to have larger focused native teams that could move at the same speed. It’s also worth noting that they both switched off of React Native in 2018 and there have been several strides and investments in the code base since then, notably the extensive efforts over the last year towards accessibility issues identified. The React Native community is large and growing and has addressed technical issues that might have scared off companies 3 years ago.

Company Success Stories

Shopify is a company that more recently declared they were shifting to become a React Native company. They published a blog post in early 2020 outlining their reasons and what it means for their mobile engineering going forward and included some early success stories they were able to see. One of these was the acquisition of Tictail, which was a mobile-first company and 100% focused on writing in React Native. From Tictail they were able to see how far React Native had come since it first came into the market in 2015 and see that it could meet their needs. They also wrote about Arrive (since rebranded as Shop), one of their most popular consumer applications, and their experience rewriting it in React Native. They were able to experience some very key benefits, including fewer crashes on iOS than the native iOS app and launching on Android. Another huge benefit was being able to partner with non-mobile developers on the same team as mobile developers to work on the mobile app. This resource allocation allows you to move your resources to the teams that make the most sense in a less restrictive way since there are not as many prerequisite skillsets.

Lastly, a common theme from both the AirBnB post and the Shopify post was speed to iterate. From AirBnB’s experience, compiling and building a native app to test work that you have done can take upwards of 20 minutes at times. Each time a developer needed to unit test or merge and promote to a testing environment, there would be this time gap where you had to wait to see if it would work. They found with React Native they could “hot reload” the app and test their changes in seconds. This is a huge win in time savings and promoting working features faster. Similarly, Shopify saw the same time savings, as well as inventing a creative new way to instantly test any work-in-progress pull requests by scanning a QR code from GitHub and instantly pulling the latest build. Improving the speed at which you can build and test your code not only leads to product shipping to production faster but increases quality by allowing you to test smaller code more frequently instead of waiting to bundle large chunks and build, as well as more quickly fixing and promoting any discovered defects.

As you consider your approach for mobile app development at your company, strongly consider React Native and how it can benefit your organization. While competitors such as Cordova or Ionic promise the same speed of hybrid framework, at their core they are just web views that will load your existing web application and do not deliver a delightful native experience or performance. Building native iOS or Android apps will deliver a great experience and most fully take advantage of the full platform features on each phone with deep integrations to voice command services but are often overkill for your mobile needs and require more specialized development teams, time, and money to deliver features. React Native is in a unique position in the market to allow you to write native apps using your existing web app development skills, writing code once to publish to both Android and iOS, and allowing you to ship features to production quickly and cost-effectively.