What is more often we face the challenge of creating a mobile application, the recipients of which are all smartphone users - both those with Android and those with iOS, while maintaining a budget without straining it? With several conditions, it is possible. From this article, you will find out when it is worth to apply React Native technology, whether it is a good solution for each project and what pros and cons can be found in the discussed technology.


React Native technology and its creation


React Native to a framework (programming platform, or skeleton for building applications) created by Facebook to speed up the process of creating mobile applications (https://facebook.github.io/react-native/). It allows the simultaneous building of applications for both the Android and iOS platforms, using JavaScript. All you have to do is write a JavaScript code and as a result, you will receive a mobile application with native elements for iOS and Android. This is because React Native uses bridges to translate JavaScript into native components.


Mark Zuckerberg was looking for a universal programming solution for his products because he noted that Facebook is mainly used in the mobile web Facebook version. In 2012, he admitted that the previous solution - HTML5, does not meet expectations and is one of the major strategic failures of the company (source: https: //www.youtube.com/watch? V = GBp_xCGIATk).


He expressed the hope that shortly he and his team will find a solution to the problem they have been struggling with for some time. Soon after, Jordan Walke (one of Facebook's developers) has found a way to generate iOS user interface elements from a JavaScript code thread. This was a breakthrough moment, and after months of increased work, the first version of React.js (https://reactjs.org) published in 2015 with the declaration that Facebook uses React Native technology for its products.


Pros and cons of React Native technology


An indisputable positive development of the application in React Native is the existence of one code for many platforms because it is possible to go beyond iOS and Android. We save time and money. Also, we need only one team of developers, which is based on a stable framework - React.js.


So, if React Native seems to be a great solution, why not apply it to every project? Please note that React.js is efficient and functional only in terms of UI (user interface). In other words, the application code does not modify itself to the native code and works with the native smartphone interface. It should be borne in mind that to create some elements of the application (eg connecting camera functions) one should write a piece of code in native technology, and then build a bridge that will connect elements in JavaScript with the native code. The important point is that React Native was created by Facebook, so the Mark Zuckerberg team is responsible for the development of technology. There is always the risk that technology will stop being supported, it will be suspended or for some reason, Facebook will refuse to grant a license.


When should I use React Native technology?


The ideal situation to reach for the React Native technology is the need to create a simple application with time constraints. A good example is a mobile application for the fair when the company intends to present its products using a mobile device or an application that gathers ideas for new projects in the company or a tool for a single marketing campaign. This is because React Native allows you to write the common code (about 70%), but keep in mind that we always build bridges between JavaScript and native elements. Thus, the simpler the application and the generated interface, the more code we have in common for iOS and Android (or other platforms). However, when the application requires complicated functions, dependence on external, native libraries, the more fragments of native codes need to be written.


To sum up, we want to emphasize how important it is to choose technology solutions with the needs and possibilities. If the goal is defined as building a simple application that you do not need to develop or extend, or it is a promotional tool - select React Native to save time and money. However, watch out for the diversity of possibilities that give the native API (Application Programming Interface, a set of solutions that allow two applications to communicate with each other, e.g. a restaurant application that delivers food and the Google Maps application). It may turn out that little code can be shared, and a lot of work will be required to build bridging modules - then select native programming.