For the launch of an app, it is often required to develop it on two different platforms : one on iOS and one on Android, in order to offer the mobile experience on most of the devices available on the market. However, this might change in the upcoming months. Indeed, a new language is starting to attract more and more attention : React Native.

 

What is React Native?

 

This new technology developed at first by Facebook enables developers to write an one and only code for both platforms. Two native applications are generated, but each one of them executed the same shared code, written in Javascript.

Unlike technologies such as Phonegap, hosting a web view and working like websites integrated in the app, React Native generates native components from the Javascript code. It enables to develop everything at once, in one language, all the app’s functionalities, yet keeping the complete native experience and the quality of it no matter the final interface, the same way as if the app has been developed only on iOS or on Android.

This specificity guaranty a considerable time gain for developers, and logically an important budget reduction for clients. Indeed, instead of a Swift development and an Android one, one React Native development is now enough.

Different developer profiles than the ones normally used on these projects are required. Indeed, we need HTML or Javascript developers who have a web profile, and not the specialised developers (iOS and Android). This way, web front-end developers are now able to develop native mobile apps.

 

What does it look like?

 

People who are accustomed to ReactJS will not be lost, because the React Native framework is using the same components and a similar structure. More than the libraries enabling access to native functionalities, React Native replace views normally generated in HTML and in CSS by a set of React components that will be substituted on screens by native components.

Concerning the style of those components, they can be made with Stylesheet objects, which even if they are different from CSS hey have alike property names. Layouts are most of the time generated by an equivalent of Flexbos. Everything is done so that a web developer can work easily despite minor differences.

However, just like with web and even if it handles the bridges with native technologies, React Native doesn’t take care of the visual aspect. To handle data of big apps, you will need to quickly consider methods already used with React JS, such as Flux or Redux. Those frameworks are dealing and centralising data needed for the views, simplifying their updates in case of changes.

Tapptic teams have already launched some projects in React Native and results have been very positive!

 

React Native: any remarks?

 

However, we have to put the light one some minor reservations that could impede the general enthusiasm. To develop some specificities that go further than what the React Native framework is able to offer or the existing plugins, it will be necessary to use some native code (iOS or Android). In this case, native modules will have to be developed and integrated to enable to app to be used on both platforms and to guaranty a global homogenous result.

On the other hand, this technology remains young even though it seems to be stable, it causes an external dependancy which doesn’t happen with native developments. Depending of an external framework supposed to follow closely the adaptation between the OS native’s updates and the React Native’s upgrade.

Another detail to stress is that it is not the first time that a new technology is announced to drastically change the daily life of developers. However, this has not always been true, as the examples of PhoneGap, Cordova and Ionic can confirm.

All things considered, it is certain that React Native may change the approach of mobile development by decreasing the cost of an app at least for its basic functionalities.

 

Caroline Lomba
React Native Developer @ Tapptic