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.
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.
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.
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.