Why companies should consider React Native
I’ve spent the last 12 months working with our corporate mobile team delivering mobile apps for both IOS and Android. The one question that constantly comes up when approaching leadership for funding is “why do we have to double the project cost and build separate solutions for IOS and Android?”.
Why does it cost so much?
One reason building mobile apps for both platforms is difficult and costly is because to do so requires two completely different ecosystems. To develop IOS apps you need to learn Swift or Objective-C and Cocoa Touch. If you want to build an Android app you need to learn Java and the Android SDK. In addition, developers will need to learn other tools in their ecosystem including testing tools, libraries, packages and more. The skill sets are unique to each platform and typically the development resources are unique as well. So not only does a company have to build two separate apps they have to staff two separate development teams. Obviously this gets costly.
What about building Hybrid apps?
Most hybrid mobile apps are built with JavaScript and use Cordova, or a framework such as Ionic or Sencha Touch, on top of it. While you have the ability to make calls to native APIs, most of your app is written with HTML and Javascript inside a WebView. Hybrid apps have the reputation of being slow and sluggish and not having the same quality as “native” apps. These kinds of apps will never match the look and feel of of “native” apps. Things like keyboard behavior, navigation, scrolling acceleration, and animation will always be sub-par and result in a less than acceptable user experience.
So what’s the solution?
How about a single development language that will end up rendering as “native” platform widgets on both IOS and Android — the solution is:
React Native is a Javascript framework for writing real, natively rendering, mobile applications for IOS and Android. React Native actually renders using the mobile platform’s UI libraries rather than using HTML and CSS like hybrid apps do. React Native actually translates the markup code to real, native, UI elements that leverages the mobile platform’s existing means of rendering views. Under the hood, the Javascript code is run on its own thread, separate from the main UI thread. So even when your app is running complex logic, your UI will still be running smoothly at sixty frames per second. This addresses the performance issue that plagues hybrid apps. With React Native, your application can maintain high performance without sacrificing capability. This means you can build truly native apps with the performance and look and feel that you would expect.
This is just the beginning. The developer experience is greatly enhanced with React Native. Traditional native app development has long compilation times, a fixed set of unique developer tools and a cumbersome release process. Not the case with React Native. Developers can choose their favorite IDE, use familiar Chrome and Safari debugging tools and can simply refresh without compiling to see their latest code changes take effect. In addition you have the ability to turn on “hot reloading” which automatically reloads just the components you made code changes to without the need to refresh the app.
React Native uses flexbox for UI design which results in the app being responsive to the size of the screen the app is being displayed on and you don’t have to code for different portrait and landscape sizes. In addition, the flexbox results are cross platform.
Icing on the cake is the ability to deploy mobile app updates directly to the users’ device without having to go through the app store approval process which can sometimes take up to two weeks.
How much efficiency can companies get?
“95% of the codebase is shared between iOS and Android” — Walmart
“React Native allowed our product teams to ship features faster to both our iOS and Android apps, improving developer velocity. For example, 99% of the code for our post promote feature was shared.” — Instagram
“The majority, if not all, of your React Native code can be shared between iOS and Android.” — Connected Lab
“Some teams have seen around 85% re-use of app code when using React Native.” — Facebook
“It took our team of developers in New York just five months to develop the app, roughly half the time it would have taken had we not used React Native.” — Bloomberg
Corporations have solid evidence confirming that 80% to 100% of code for mobile apps created using React Native is cross platform. React Native allows you to build iOS, Android and Windows applications using only a single programming language — JavaScript. To elevate the efficiency even further, you can also share your code not only across mobile platforms but also on the web. React Native leverages the wealth of existing talented web and JavaScript developers, reducing resource costs and broadening the range of work and projects the resources can contribute to.
The Numbers
Let’s assume a mobile development team spent $1M writing code for mobile apps in the previous year. Half was spent on IOS and half on Android. If we use the conservative 80% cross platform estimate, we find the team could have saved approximately $400K if they used React Native.
Summary
The ease of development, quality of the apps built with it, the richness of the platform and ecosystem, and the huge cost efficiencies make React Native a viable technology solution for corporate mobile app development teams. A React Native development team not only can solution mobile development app needs but the development skills cross over to front end web development as well. Resources with these skills can be leveraged across many projects and are much more abundant than native developers. Building out a React Native mobile development team can have huge cost and productivity benefits especially when you accumulate those benefits across the next 3 to 5 years and beyond.