For the past 4 years, I’ve seen a number of tech companies who were keen on finding a way to develop one mobile app and make it available for both iOS and Android phone users. The advantage has been pretty straightforward – one code base and cheaper development, yet the reality, especially in the early days, looked a bit like a Quest for a Holy Grail. A few years ago the results – regardless of technology – were usually rather mediocre or, at best, decent.
Nowadays, the situation is a bit different. JavaScript-based mobile apps have improved a lot, both performance and usability-wise, with React Native emerging as the most viable technology for this kind of projects.
In this article, I’d like to take a look at a few apps using React Native and demonstrate that the non-Swift-or-Java/Kotlin approach is no longer an uncharted terrain only bootstrapping startups are interested to explore.
That can’t be any surprise, since React Native, and before obviously React, were both born at Facebook. Interestingly, React Native was brought to life as a result of an internal hackathon in the summer of 2013. In the first place, in order to test the performance of the new technology, FB engineering team decided to convert the Events Dashboard feature in their iOS app into React Native and the results were enhancing enough to continue the efforts (you can read the full story on the official Facebook blog).
While it seems that a larger part of the app is still native (it’s hard to get official data), it also looks like React Native is not just there to stay, but its presence will likely be growing.
The fact that Instagram followed Facebook’s path seems rather natural, since they both belong to the same “family”. Just like in the case of FB, Instagram team did not re-write the entire app in React Native, but decided to integrate it into the existing native app. The applied methodology and challenges encountered along the way are described in their blog post.
Skype
It’s no secret at all that Microsoft moved away from using (only) their internally developed technologies and took to JS-based open source stack (I touched upon that in an article on apps built with Electron), so the fact they decided to re-develop their mobile app using React Native isn’t really surprising. Along with the app release, Microsoft also decided to overhaul the entire visual layout which gave the app a neat and user-friendly look & feel.
UberEats
While developing UberEats app, the Uber engineering team wanted to use as much code from their ride ordering app as possible (that’s a global and reasonable tendency). It proved viable: the trip turned into a delivery and the ride provider got to be a delivery provider. The new (and missing) element was the restaurant. In the first step, the Uber team decided to create the restaurant dashboard as a single page web app using React/Flux.
It wasn’t long, however, until the project team realised this brings about necessary usability compromises, which were not really welcome (e.g. in order to activate sound notifications user had to interact with the web page by tapping a ‘continue’ button on a modal window). As a result, it quickly became evident that the dashboard should be an integral part of the mobile app and React Native – for a few reasons described in details by the Uber dev team – seemed to be the optimal choice.
Just like Facebook and Instagram, when React Native emerged, Pinterest had full-fledged native mobile apps which were opened daily by millions of users. Yet, they decided to give it a try and test the new technology on a screen which gets frequent UI optimisation tests and, as a consequence, is subject to regular development iterations – the Topic Picker view. The main motivating factor behind the decision wasn’t very original – increasing the development velocity by sharing code between platforms. The results were promising enough to encourage the Pinterest engineering team to further explore the benefits of cross-platform development. A detailed outline of the business and technical circumstances of the project can be found in a blog post shared by one of Pinterest engineers.
Summary
The list obviously does not end here and could easily go on to “10/15/33 top React Native apps…”, but the above examples demonstrate well enough that, while React Native may not be (yet?) the Holy Grail, it can be a viable alternative to native iOS and Android development.
The fact that the technology successfully and rather painlessly integrates with the native code and app creators do not face the Native-OR-React Native dilemma is undoubtedly one of its major assets. There’s little hesitation native iOS and Android are here to stay for a while or – so to say – ‘foreseeable future’, but at the same time the viability of cross-platform development and the advantages it brings about cannot be denied any more. The future, of course, remains (slightly) unknown.