Let’s clear up the basics
There are four approaches to mobile applications development, and therefore four wide groups of apps.
Native apps are built with the platform’s native technology/syntax. iOS pushes developers to use Swift, Android puts its stakes on Kotlin, but you could use Java as well. These apps give the best performance and user experience and usually require a solid budget, because of the need to develop and maintain an app for each platform separately.
Web apps are built on web technologies, yet pretending to be mobile. The very same as any website, these apps load on the browser and take no space on the user’s mobile storage. Usually, they are the worst in terms of users experience. And the cheapest in terms of a budget. They also have the fastest time-to-market and are often used for MVPs.
Hybrid apps are slightly better than web apps in terms of user experience. Basically, it’s a blend of native app development and web technologies. Developers write one code and embed it to multiple platforms via plugins.
Cross-platform apps are making waves for a while now. Sometimes this approach is confused with hybrid, yet the only similarity is the code shareability. While the hybrid apps use webview, the cross-platform apps use native UI elements of the user’s device.
So, what is React Native and how it works?
It is a cross-platform mobile app development tool, open-sourced by Facebook in 2015. It allows to write one code in JavaScript and render it to a native app on both, iOS and Android.
React Native talks to the device natively and gives a native-like experience to a user. Camera, GPS and contacts look and behave the way the user used to. The beauty of it is that changes are done once in JS code, updated and published to Android and iOS stores automatically.
In some cases React native app is almost as fast, smooth and secure for users as a native app, while the development process is a whole lot quicker and cheaper. In others, it is better to go native.
When you should choose React Native?
If you build an online shop or auction app. There is a bunch of built-in modules in React Native, time-to-market is impressively fast, the user experience is great.
Common business apps, which basically consist of forms, buttons and fields. No need for pricy native development, easy maintenance, fast delivery.
Trello-like task managers. Piece of cake! No compromises on quality and user experience, it is fast and convenient for both, developers and users.
If you have experienced front-end engineers in your team and they want to distribute mobile, React Native would certainly be beneficial.
When you should not use React Native?
If you build a complex and feature-heavy project. Mobile games or navigation apps need top-notch visualisations, lots of user interactions and a high level of customizations.
If your app is designed for one specific platform, there is no strong enough reason why you should go with React Native.
Battery monitors, antivirus software and media players usually require the native features and APIs provided by the platform.
If your business strictly depends on fast updates. Apple and Android are constantly releasing updates and new features, and it affects the apps. Although there is a great community beneath the React native (and Facebook itself uses the framework along with native iOS and Android languages), it takes time to land some updates in React Native.