Could React Native RoR framework compete with Native app development?

It actually is one of those hybrid apps we hear so many opinions about these days. There are many cross-platform development tools, but the one we pay attention to in this text piece is React Native RoR framework. Is React Native native? Let’s investigate the matter then.

As multi optional as our world has become now, we get to make around 3500 decisions each day, and that’s not even the peak of it. This multi optional factor has also affected on the world of native iOS (and Android) development - there are numerous ways to have an application built. You can have your app on different platforms, it might be web or mobile, native or cross-platform, it all could be figured out depending on your needs and values. We will try to highlight the pros and cons of each case.

The well-known and walked on paths of application development are native and cross-platform ones. Native app development works greatly for mobile, and is an official type of development for a specific purpose (either iOS or Android), within a specific IDE (XCode or Android Studio) and on a certain language (Kotlin/Java for Android, Swift/ Objective-C for iOS).

The second type of apps developed is called hybrid. What is a difference between cross-platform (i. g. React Native) and native app development? Cross-platform application development is a bit different to native, as in most cases it includes an open-source framework that mixes up the concepts of mobile and web development, and quite often it is written on Java Script, though a final result would eventually be a "like-native" application file. The rivalry “native apps vs hybrid apps” is reaching its meridian these days.

While everything is clear with "native" platforms and languages, hybrid apps have a broader classification. The most common-used cross-platform JS frameworks are the following:

  • Ionic 3 framework
  • Xamarin
  • Cordova (former PhoneGap)
  • React Native RoR framework

Today, why choose hybrid apps and which framework to build them on? What to choose - React Native vs Ionic? Xamarin vs React Native? One of the top-used frameworks for cross-platform app development is React Native, but what makes people use it? I have tried to investigate the matter.

React Faster.

apps built on react native
[Image source: Facebook React Native]

I bet you have recognized each and every out of these icons. All of them (In the past, or even currently) were or are built using React Native. Speaking of which, Facebook company is basically an owner and an active promoter of React Native app development. However, the company itself denies being a “tool for hybrid apps”. As they state on their official landing,

“With React Native, you don't build a “mobile web app”, an “HTML5 app”, or a “hybrid app”. You build a real mobile app that's indistinguishable from an app built using Objective-C or Java. React Native uses the same fundamental UI building blocks as regular iOS and Android apps. You just put those building blocks together using JavaScript and React.”

[Source: Facebook Github]

But does React Native really rock vs native app development? Well, not entirely. First of all, even the app-building process is different here.

How to build a react native app? Wrap it up.

React Native for Android (and iOS) itself is a wrapping over the native compilation, where the JS tool allows you to build apps way easier. It even has a simplified structure - the components look like basic HTML-tags do. The code you write in React Native is unique for each mobile platform, but there are many universal tools that could be reused and reapplied on either iOS or Android. Furthermore, you can have a few build destinations, which makes me call React Native development not only a cross-platform framework, but a cross-device also. You can adopt your application for iOS, same as AppleTV and Mac OS.

Applications developed in React Native do not require a native IDE (XCode or Android Studio), though you could develop using them, as Expo - React Native’s custom-made IDE has less debug features to offer. RN framework doesn't also sophisticate the components’ structure - pretty plain one it is, and if you are looking for a more complex one, you need to use native iOS or Android parts, wrapped into JS cover on top (which is, fairly, quite messy) . Some components are dressed up in a , which helps you to put various props into it.

A few advantages that make React Native a tasty deal for cross-platform application developers all over the world:

1. It requires less resources from you.

As with every cross-platform solution, it’s cheaper and a bit more budget-friendly; you don't need to hire two separate app development teams - you can have one developing, but the outcome would cover both platforms if you are willing to. The amount of resources and costs spent on building these apps will, of course, be significantly lower than the native app development would take.

2. React Native power is in its components.

Like it has already been stated, the list of components acceptable for React Native is huge. In their turn, these components could certainly be reused in other projects, if they bare a few common resemblances.

3. It has a huge community.

React Native community

How many people you guess Facebook official React Native community has? At the time this article has been published, the number has exceeded 23 000. The greatest thing about being a part of a big community is a sense of certain inclusion + ability to extract new components out of it. The components you create for your custom purposes could easily be distributed within the group - and so you can find a ready-made solution when you need it, without having to re-write it from scratch.

4. It is promoted by...

facebook company

Facebook corporation as a whole can be already named as “Branded Brand”, so the whole Facebook-behind-it gives a giant advantage to the React Native framework (if we even take Ionic vs React Native comparisson). Users trust this social network is durable enough to stand for the products it advertises and claims to rely on.

One Size Doesn't Fit All.

On the other corner of the ring, where native application developers are, there also are values and benefits you buy when you pay for "going native".

1. Native = more responsive.

The responsiveness of an interface is something that UX designers crave for and put dozens of efforts for. When it is a native application, every single design screen is separately designed and adapted for the guidelines of stores to fit the style - either flat or material.

2. Native languages = officially developed by Apple and Google stores.

Native App Store and Google Play accept the applications built on the languages developed and supported by platforms. If you follow the guidelines - your ladder to the store is all set. With a cross-platform application you still have a chance of accepting, but chances are, you get rejected for just a bit "webbish" interface or navigation.

3. "Need For Speed".

One of the main principles of Usability Engineering stands for quick interactions - "1.0 second is about the limit for the user's flow of thought to stay uninterrupted". While native apps react and perform fast enough to keep users within the system's rhythm, hybrid products somewhat often get slower behind.

4. Native = more sophisticated.

native apps=sophisticated apps

Cross-platform solutions rock when you are looking to create something that already exists, with the features out of the "average" class. When it comes to complex things (all those trendy IoT, AR/VR, Big Data Mining algorithms are in this list), hybrid apps lack technical abilities to realize what you want. On the other hand, native IDEs and languages have endless tech perspectives - loads of stuff could be written on them.

Choose with Care.

If you are looking for a simple application to build (lists and nothing more complex than that), then React Native is a blast. If any further app performance is required, more perplex development procedures will arise - you already need to switch to Swift or to Kotlin, and then wrap it all into the glittering Java Script cover; and this doesn’t sound like an easy thing to do. So, for things like video or audio streaming, routing, real-time chats, photo editing, etc. you will be better off starting with native development from the very beginning, avoiding this disadvantages.

Additionally, React Native is a complete JavaScript framework, and the whole code could be even written in the text editor like TextMate or Notepad++. Though when it comes to building a project up, you desperately need a particular IDE, or an emulator at least.

There are a few examples of a decent RN-based apps:

  • Facebook apps, obviously
  • Airbnb mobile applications (hybrid iOS and Android)
  • Walmart mobile app (as it had a number of embedded web views with their lower-than-expected implementation)

You can look at the whole list of RN-based products on their official website, and again RN wins React Native vs Xamarin framework contest here.

For the Sake of Perspective.

According to Flurry stats, "the U.S. consumer today spends an average of 2 hours and 38 minutes per day on smartphones and tablets. 80% of that time (2 hours and 7 minutes) is spent inside apps". Your product has to somehow fit into those 2-hours-each-day time. All points considered, React Native RoR framework would be a handy solution for a tiny short-run project; reviews prove it is fast, furious and new, or when you want to “test the concept”. Nonetheless, in a long run, or when planning a technical innovation to kickstart you can not rely on a ready-made option. You need it to be build up from scratch, you need it to be customized - so you need it to be native application development then.

Written by Artem Chervichnik and Elina Bessarabova.