React Native for Mobile App Development

React Native for Mobile App Development

React Native Technology has gained massive popularity, community support, and market share in the few years since it was first introduced. According to statistics, more than 1000 contributors have committed 7,971 times in 45 branches with 124 releases. Accordingly, with more than 60,000 stars, it is the 14th most popular repository on Github.

When we first heard about React Native, we just thought, "Meh, another hybrid framework." So far, we in the programmer’s community only knew the approach of packing a website into a webview and then selling it as a “native” app. We at Eska enjoy developing with web technologies, and a lot of great things have happened in the past few years. But selling a website as a mobile (or even desktop) app was inconceivable for us. We had to search for other decisions and that’s why we want to share our experience with React Native. 

 React Native supports the implementation of native plugins, but these must then be developed separately for iOS and Android - and of course, have a certain overhead to pretend to be React Native plugins. You also lose some of the convenience of the framework and unfortunately, we also had to find some incompatibilities with various plugins. As long as you don't want or need to use any special native frameworks or services and don't rely on absolute top performance, React Native is a great method to develop hybrid apps without the “website” smack.

Let’s discover 10 reasons why you should develop your apps with React Native

 Anyone who wants to develop an app for smartphones is faced with many questions. And these questions are very central: should the app be developed for Android devices first or iPhones first? Although the market share of Android is higher than that of iOS, all users can only potentially be reached if the application runs on both platforms.

 If you want to develop for Android and iOS, the traditional approaches of Google and Apple require two development teams and separate code. Both teams specialize in the different aspects because Java (or Kotlin) for Android and Swift for iOS not only use different programming languages but also their APIs and tools. So it makes sense to develop the app across platforms to minimize the effort.

 But which framework should be chosen?

 With React Native, a solid open-source project for the cross-platform development of native apps has been available since 2015. Introduced by Facebook, it is now being further developed by some well-known companies and used for popular apps such as Airbnb, Skype, Tesla and Instagram. So, let’s see, why the React Native framework is an attractive approach to app development.

 1. One codebase - not just for Android and iOS

 Okay, of course, we assume this for a cross-platform framework. Apps that are programmed for Android and iOS with React Native can largely access the same code and be developed in a parallel way. If necessary - for example, because of the different UI guidelines on both of the platforms - specific code for Android or iOS can be implemented seamlessly.  

 2. Attractive and solid thanks to JavaScript and React

 In React Native, JavaScript is used for programming, which makes the framework relatively easy to access for web developers, among others, because they do not have to learn a new programming language. Besides, React Native benefits from the declarative programming model to React, which offers an elegant and productive approach to creating user interfaces. This advantage is one reason for the growing popularity of React Native in recent years. With more than 60,000 stars, React Native is in the top 15 popular projects on GitHub. And anyone who has already implemented web projects with React will be able to get started quickly and easily with app development with React Native.

 3. Real native apps

 React Native creates high-performance apps with native UI elements for Android and iOS. As expected, a button is displayed as a real button in the iOS app and the Android version. This is a great advantage over hybrid frameworks such as Cordova and Ionic, the application code of which is executed in a WebView. UI elements are only simulated there with HTML and CSS, which can harm the appearance of the app. React Native also enables fluid animations - a fact that ensures a good user experience in an app.

4. Integration with Redux

As it is a library, we can group it with other libraries such as Redux to achieve greater functionality and facilitate development. Redux and React are a great fit as they both work with states. While each React component has its state (data for each component that changes throughout its life cycle), Redux's function is to issue state updates in response to actions.

 5. High productivity through fast response times

 If you have changed the code of a native app up to now, it has to be recompiled every time. Before testing can be carried out on the smartphone, it takes at least a few seconds for an Android app and often even more time for an iOS project (not to mention the frequently reported crashes of XCode). Most programmers are probably aware that this can hurt their productivity and can be a test of their composure. In contrast, when programming with React Native, every change to the code is visible almost immediately in the app - thanks to features such as Live Reload and Hot Reloading.

6. Isomorphic

 For web positioning, the main problem of frameworks is that, due to the decoupling between the client and the server, the data to be displayed in the HTML is obtained through requests to the API, which is the one that supplies the data from the server and, once the framework obtains the data, it builds the HTML. In this way, when Google (or any other search engine) reaches the web, the content of the HTML is empty and it is not able to interpret the keywords. This causes the web positioning of a CMS like WordPress to be more optimal than that of development based on a framework. However, thanks to React's isomorphism, it is possible to obtain a web positioning as optimal as WordPress.

 7. An active environment with lots of extensions and tools

 React Native is being actively developed by many developers and several companies. There are many useful extensions and libraries available that, for example, implement UI components that are not directly offered by React Native. Besides, developers can use any auxiliary library from the huge open-source environment of JavaScript or Node.js.

 8. Other platforms besides Android and iOS

 We mentioned above that parts of the JavaScript code can also be used for web projects. However, there are some additional platforms for the development of the apps through React Native. These include B. Apple TV and Microsoft's Universal Windows Platform. The architecture and functionality of React and React Native even make it possible to implement applications in the promising field of virtual reality (see React VR). And the React Native Web project makes it possible to integrate app components into web applications, which among others, is used by Twitter.

 9. Native code can be embedded

 On the one hand, native code for Android and iOS can be embedded in React Native, so that native components of other projects or libraries can be reused. Conversely, it is possible to use React Native in-app projects that were previously developed with the conventional approaches of Google or Apple. This makes it possible to implement new functionalities in these projects prototypically and across platforms with React Native and thereby continue the development for Android and iOS simultaneously.

 10. Easy entry with Expo Snack

 The Expo Snack tool allows prototype apps to be developed directly in the browser! With this fantastic tool, apps can be demonstrated or certain functionalities can be tried out. In particular, nothing has to be installed to gain initial experience with React Native. 

 React Native is probably the only framework for cross-platform native app development that offers such a wealth of possibilities and functions. However, there are also limitations in the framework that must be observed.

 Some framework conditions require native code

 There may be situations in which it is not possible to implement certain functionalities of an app with React Native. This could be a special control element for which there is (yet) no component in the framework. The React Native APIs also do not cover all device functions, so that certain sensor data cannot be queried. While native code can be embedded in these cases, it also means that at least one team member should be familiar with the native aspects of app development. This knowledge is also relevant if deeper errors in the code of an app have to be investigated if downward compatibility has to be ensured in the future and if the app is to be published in the app stores.

 The framework has not yet reached a stable version

 React Native is still in active development with monthly releases of new versions. Occasionally there are changes to the framework, whereby APIs are changed or even removed. 

Nevertheless, React Native can already be used for app projects without major risks - many well-known companies are already providing evidence.