Get in touch
or send us a question?
CONTACT

React Native Overview

What  React Native?

React Native is a JavaScript framework for writing real, natively rendering mobile applications for iOS and Android. It’s based on React, Facebook’s JavaScript library for building user interfaces, but instead of targeting the browser, it targets mobile platforms.

React Native is a powerful framework for cross-platform development. One technology, one codebase, multiple devices, faster development.

Is  React Native same as React ?! It’s based on React, Facebook’s JavaScript library for building user interfaces, but instead of targeting the browser, it targets mobile platforms.

React Native is Native, isn’t it? React Native uses native widgets to build the UI, but it has its own hierarchy of the widgets and use js bridge to control update native widgets on UI display base on business logic and user interaction.

Pros of React Native

1. Performance (Not wrapped web view)

A React Native application will render using real Native mobile UI components, not webviews, and it can access Native platform features, like the camera, address book, contacts, and the user’s location, all with a JavaScript interface that React Native provides.

React Native have performance and feature near to Native Code, may be equal or greater 90% for many popular app.

React Native have performance over better other hybrid framework, that base on webview as Cordova or Ionic. In additions, React Native can accessed almost all the platforms’ features and APIs versus other hybrid framework.

2. React and JavaScript

React Native acts like a bridge between the code that we write in JavaScript, and the Native platform it works with. It translates the UI components that we write in React into real Native mobile UI elements. We also get all the benefits of the React library itself, when we develop React Native applications. From the simple but powerful concept of components to the nature of reactive updates that happen automatically when the states of those components change.

If you have experience with Java Script and React, want extends your skill on mobile app platform,  React Native is easy and good path for you!

3. Developer Experience

If you’ve ever developed for mobile before, you might be surprised by how easy React Native is to work with. The React Native team has baked strong developer tools and meaningful error messages into the framework, so working with robust tools is a natural part of your development experience.

Additionally, React Native lets you take advantage of intelligent debugging tools and error reporting. React Native does not force you to work in Xcode to develop for iOS, or Android Studio for Android development.

React Native also bring to you some modern technical skill as: Functional Programming, Flux/Redux design pattern…

In general,  JavaScript-based frameworks offer more features that make the development more convenient.

4. Code Push

React Native App pushing updates to our already published applications can be easier. Updates can actually be pushed directly, without the App Store review cycle.  The code written for iOS applications in React Native can be mostly shared with an Android application.

5. Code Sharing

Excellent code re-use. You can expect, at a minimum, of roughly 75% code reuse between platforms. In our particular app, the designs didn’t diverge much between iOS and Android, so our code reuse is closer to the 90% mark.

 

Cons of React Native

1. Bridge

In React Native,  Javascript run on JS Thread then bridge as loop to UI Thread. In expected case, React Native app has 60 fps to bring user experience same as Native App. If not optimize bridge, can lead to fps down to less than 60, means to slide down performance versus Native App.

Optimizing React Native applications is essentially optimizing this bridge communication.

2. GUI lack some native component

React Native has its own hierarchy of widgets, and although they end up in native widgets, not everything is available. Even though the native widgets are used under the hood, the UI elements don’t look natively. Of course, you can make an effort and create bindings for all native widgets, but it’s as time-consuming as creating a new cross platform GUI framework.

For example, it doesn’t use UITableView for SectionList or FlatList on iOS. So you have to either style the components manually or rely on 3rd-party libraries to make your app look native.

3. React Native have almost but not fulfilled native feature

64-bit mode seems to be supported by all frameworks on iOS (as Apple requires it), but React Native doesn’t support it on Android for now.

React Native only supports running background code on Android with ‘Headless JS’. For iOS,  React Native only supports limited background task (fetch, geolocation, timer …), other background task will coming soon.

For above reason,  you would still need developers on your team that can work with Swift and Java, and fill the gap where needed

4. Fast-paced

React Native is also a fast-paced project, with frequent breaking changes. It is currently on a monthly release cycle, so if you’re developing a React Native project, you’ll need to follow the changes, and probably update your project as frequently as you can, to deal with smaller changes.

Quick compare to other cross-platform framework

Screen Shot 2018-03-30 at 4.45.27 PM.png

Reference

If you have interested in with React Native, you can check out and start with:

React Native Tutorial

Become a react native developer

Would you like to work with us in NeosCorp, please contact us here!
http://neoscorp.vn/vi/contact