React Native mobile development

Introduction

This article discusses using React Native as the main technology for creating mobile apps. React Native is a great way to get cross platform mobile apps built. If you have a team where JavaScript and Web technologies is the core skill set then it is especially useful. React is so widely used on the web that may Developers are familiar with this declaritive approach. Using React Native can allow code sharing between iOS, Android and also Web.

React Native has a smaller learning curve for Developers than Native mobile development. The cost of recruitment can be kept lower because there is not the need to get specialists in Swift (iOS) or Java (Android). The core skills of the team can remain as JavaScript.

Current Architecture

React Native has the same principle as for React. Developers can write code in a declaritive way as a number of components. For ReactJS on the web these components make up a shadow Document Object Model (DOM) which react will render to the screen in an efficient way, changing only what needs to be updated.

The translation of the shadow object model for React Native is more complicated than for React on the web. The styles do not directly translate to enable flexbox layout for example. In order to do the UI translation needed for mobile Facebook have developed a library called Yoga which does this job.

architecture

New Architecture

New architecture is being developed to improve on the current system. In particular the communication over the bridge in JSON can be a bottle-neck and this is going to be replaced.

Alternatives and wrap up

There are many other options for cross platform mobile development for example Flutter. Also you may have a particular use case where you just want to go fully native and build with Swift or Java/Kotlin. However for many use cases and particularly if your team has mainly JavaScript skills React Native is a great choice.