Development

Wait. What is React Native Again?

As part of our consulting process here at Differential, we often determine that a mobile app would be a good fit for our clients. Most of the time Android and iOS support is desirable, and dedicating development resources to building a native experience for both platforms is very resource intensive....

As part of our consulting process here at Differential, we often determine that a mobile app would be a good fit for our clients. Most of the time Android and iOS support is desirable, and dedicating development resources to building a native experience for both platforms is very resource intensive. We’ve skirted around this issue in the past, mostly by using Cordova, which lets us write HTML, CSS, and JS to create cross-platform apps. Cordova works great for the most part, but we discovered that you can only go so far when using web technology to create apps that feel truly native.

Enter React Native.

React Native is a set of tools and libraries that allows developers to write React Components that generate genuine native interfaces. When using a tool like Cordova, you write the majority of your business logic and UI in JavaScript. When using React Native, you write your business logic in JavaScript, but your UI elements are all converted under the hood into native code, specific to either iOS or Android, that looks and feels snappy, performant, and powerful.

One of the questions we ask at Differential when evaluating new packages, tools, or solutions is, “Who else is using it?” React Native was built by and is utilized in production by Facebook. AirBnb, Soundcloud, QQ (a Chinese messaging app with 829 million users), and Instagram all use React Native to power some of or all of their mobile applications.

Not only is React Native an extremely powerful tool for developing cross-platform applications in JavaScript, it’s very easy to learn for any Javascript developer with React knowledge. Most of the components are well documented, and getting started is as simple as typing react-native init.

One of our projects involved a re-write of an existing mobile application in Cordova. Our team of 5 developers, none of whom knew React Native prior to starting this project, were able to learn React Native and rebuild the entire app, from scratch, in the span of about 3 months. The new app performs better, is easier to maintain, and provides a much greater user experience compared to the Cordova application.

Some of the features that were particularly appreciated by our developers were:

  • Rapid Iteration (change a file, refresh), as opposed to change file → compile → run for typical native development.
  • Writing JavaScript (learn once, write anywhere).

React Native isn’t perfect though, and while the major releases are stable, there are some features that were lacking.

For example, we had trouble setting up builds for different environments (solved using this excellent package, react-native-config.) Oftentimes things work great on iOS, but require subtle tweaks to look nice on Android. Sometimes errors messages are cryptic and leave a lot to be desired.

Overall, React Native has allowed our teams to build native apps in technology we understand, using tools we know and love. For further reading, check out Facebook's showcase of React Native products, and read this fantastic article diving deeper into the advantages provided by React Native.

Share this post