Is React Native the best choice for building mobile apps?

react native

Going native or cross-platform has been quite a hard choice for those planning to develop a mobile application.

But hey, now the struggle is over. You can build your awesome mobile app with the technology that naturally blends cross-platform flexibility and native performance/look.

React Native framework can be used for building web, iOS, Android, Windows, and even VR apps using the same basic framework. Such world giants as Facebook, Airbnb, Instagram, Discord have already built their products using RN, so why shouldn’t you?

Let’s go deeper into the situations, where React Native can be the best choice for your product:

1. Working prototypes

React Native is indispensable, if you are a startup and need to build a prototype and hit the market as quickly as possible. Usually the development using React Native can be ~30% faster than with the native tech stack. It allows you to build your idea quickly, test on real users and improve it before your competitors demo something similar.

2. Simplified UI

React Native is all about the mobile UI. If we compare this framework to AngularJS or MeteorJS, we find that it looks more like a JavaScript library than a framework.

It’s important to create a sequence of actions when building a mobile app, and React Native makes an implementing order just perfect. In addition, user interfaces designed in React Native are more responsive, decrease load time, and provide a smoother feel.

Of course, if you need complex animations, video/audio processing or rely heavily on native APIs, nothing beats native apps. But for the most part, React Native apps have native UI and great performance.

3. Basic cross-platform apps

If your app has many platform-dependent features such as multithreading and audio/video processing, going native may be a better choice.

But React Native is a perfect solution if you have a limited budget, but your targeted market is split evenly between iOS and Android. You can easily make the interface work on both platforms.

4. Apps without heavy use of native APIs

React Native apps have to rely on native APIs for things like camera, GPS, etc. To implement them you’ll have to write bridges, which is time-consuming, requires native expertise and can affect the app’s performance. If your app doesn’t use a lot of native APIs (e.g ecommerce app), React Native is a reasonable choice.

5. Reusable code & pre-built components

React Native can be a good choice for the companies who want to develop a mobile application and already have a web app written in React. Surprisingly (or not?) much of this code can be re-used for further development of the mobile application.

An open-source library of pre-built components in React Native greatly speeds up the process of mobile app development. The chances are very high that someone has already written the code for similar functions that you need to deploy. And you can use it for free!

For example, testing libraries help software engineers write bug-free and flawless code. The most famous and versatile testing tools are Jest, Enzyme, Chai, and Mocha.

For successful type checking, there are tools such as PropTypes and Flow, while ESLint is a perfect tool for linting. Axios, react-native-firebase, and Apollo Client are used for setting up the networking workflow in React Native projects. For state management, Redux is one of the most frequently used React Native libraries.

6. Third-party plugin support

The React Native framework is still advancing, so it might lack some components in the core framework. To fill this gap, React Native provides two types of third-party plugins: native modules and JavaScript modules.

For example, if you need to add Google Maps or Google Calendars to your basic app functionality, React Native allows you to link any plugin with a native or third-party module. Among the most prominent third-party plugins for React Native are React Native Selectme, React Native Vector Icons, React Native Router Flux, React Native Gifted Spinner, React Native Modalbox, and React Native Drawer.

When React Native isn’t a good solution

We should admit here that in some cases React native is not a panacea. Let’s see where it is better to go native than to pursue new trends.

1. Immaturity

React Native is newer, faster, and less mature than iOS or Android. This can have a negative impact on programs. Generally, React Native works perfectly, but there are some cases when its immaturity results in unpredictable instances, which we’ll show you below:

• The React Native framework is growing extremely fast and new updates are released every week. Every new update has a lot of changes, so developers need to regularly update their apps. Going more than a few months without updating an app can have a poor result.

• In some cases, developers can’t limit themselves to writing code only in React Native. They might need to use an additional native code for components that aren’t compatible with React Native.

• There are some cases when React Native components work worse than native components. For example, with long lists. Users see these kinds of lists everywhere: tweets on Twitter, photos on Instagram, and posts on Facebook are all app lists. When these lists become too huge and complicated, it’s much harder to implement them with React Native. React Native has a FlatList library to work with long lists, but it can’t be compared to the flexibility and maturity of native platforms like UICollectionView (on iOS) and RecyclerView (on Android). So using native platforms in such cases is considered more productive.

2. Complex user interfaces

React Native isn’t a good choice for developing an app that requires many interactions, animations, screen transitions, or complex gestures.

However, there’s a gesture responder system in React Native that runs the lifecycle of all gestures in the app, when it comes to screens with complex gestures, developers might face some difficulties as the Android and iOS touch subsystems are too different for using a unified API.

3. Initialization time

Even on high-end devices, it takes several seconds to initialize the runtime before React Native can render for the first time. The reason is that the JavaScript thread also requires time to initialize.

4. Open-source libraries

Knowing several platforms well is a rather daunting task for a mobile engineer, and requires much time and effort. React Native libraries that have native bridges, such as for videos and maps, require a good understanding of three platforms to run successfully. If mobile engineers know only one or two platforms, it may lead to a lack of knowledge required to solve some inconsistencies on Android and iOS.

WRAP UP

React Native provides great functionality for developers and users. It’s now easier than ever to quickly build a mobile app that’s fast, intuitive, and consistent with your applications on other platforms. Maintaining and updating an app using React Native is more consistent, efficient, and cost effective than using native code.

Still it has its drawbacks that you need to take into consideration before switching completely to React Native.

If you anyway consider a move to React Native, reach me out at julia.govor@altabel.com. Our team will help you decide if React Native makes sense for your needs.

Thanks!

Julia Govor

Business Development Manager

%d bloggers like this: