7 min read

Getting Started With React Native

What Exactly Is React Native?

React Native is a popular JavaScript-based mobile app framework developed by Facebook (the company behind both ReactJS and React Native) for creating native-style apps for iOS & Android under one common language. If you’ve ever used the Facebook app on Android or iOS, you have already seen React Native in action.

React Native was developed in 2013 as Facebook’s internal hackathon project and in March of 2015, they released it for public use. In just a couple of years, it became one of the top solutions used for mobile development.

Facebook, Instagram, and Walmart have built their apps using React Native. You can visit React Native’s website to see a list of other companies that are currently using React Native in their applications. There is a rich community of React Native developers and also there are plenty of courses available online to get started with React Native.

“Google Trends says React Native’s framework popularity has grown during the previous three years. That is very remarkable.”

React Native was initially developed to support iOS. However, Facebook quickly followed it up with Android support and the library can now render mobile UI’s for both platforms. And in 2019 Microsoft announced its plans of incorporating React Native Framework for Windows’ desktop application as well. 

React Native is a great pick for developers who have expertise in JavaScript, which is a mainstream language as there is no need to learn new languages like Objective-C, Kotlin, or Swift.

React Native development is simple, super-fast, and efficient compared to a lot of mobile development frameworks out there. When we talk about the advantages, you can get a glimpse of how it helps to speed up the development process.

How does React Native work?

Let’s have a look at how React Native works under the hood and see how JavaScript is compiled into Native code.

There are two important threads running on every React Native application, the JavaScript thread, and the Native thread. Both of these threads are able to share information using a “bridge”, the part that provides a way for bidirectional and asynchronous communications between these two realms. With the help of this bridge, React Native can ask native code to provide the native elements it needs. 

Let’s take a look at the following diagram, which explains how the bridge works: 

What makes React Native special?

The difference between React Native and other cross-platform frameworks like Ionic or Cordova is that React Native doesn’t render web views in its code. It comes with native modules and native components that improve performance. If there is a feature that you need to add to your app, which is not yet supported by the React Native library, then you can write your own native module using a platform-specific language which can then be linked to the React Native codebase.

Let’s take a sneak peek into some of the advantages of using the React Native framework and why you should choose it as a solution to build your next mobile application.

Code reusability

Code reusability is an important advantage React Native gives over others. You can minimize a lot of duplicate code by simply sharing logic across the web and mobile versions of an application. With the convenience of this framework, you don’t have to build the same application for iOS and Android separately, as React Native allows you to reuse the common logic layer.

Live reload

Developer experience is brilliant with React Native because you can get fast feedback with it. Instead of recompiling you can reload an app instantly by making use of the hot reloading feature. The development time also improves by reloading the application automatically as the code changes. This is one of the very loved features of React Native.

Large developer community

React Native has a large community of developers. If you are facing any issues in the development process, you have a high chance of getting the right kind of help from the community and experts, thereby, saving you when you get stuck. It also means you get to have more approachable access to great developers and their experience.

Cost efficiency

React Native apps lower your development and maintenance costs because you don’t have to deal with two separate code bases for each platform. 

So from an organization’s perspective, you don’t have to hire two teams with different skill sets to work on the project, One team is enough.

React Native Drawbacks

Like any other technology React Native also comes with its share of limitations. Most of the issues are now getting addressed by React Native’s community but there are some that you need to be aware of before you decide on developing a React Native app. 

Let’s focus on some of its major cons:

Smaller ready-made Components collection

React Native is a newbie as compared to other Android and IOS programming languages and at the moment the ready-made components collection is quite small. This limits developers from taking advantage of pre-built commonly used components.

Third-party components

React Native has a lot of third-party plugins to choose from but be mindful about your choice because some of the plugins might not behave as expected. 

Also, React Native updates happen frequently. And when that happens, third-party libraries often get outdated and can cause trouble.

Native Developers are still Needed

In some cases, developers can’t limit themselves to writing code only in React Native. They might need to use additional native codes for components that aren’t compatible with React Native. The implementation of some more advanced features requires Java/Objective-C/Swift expertise. So you’ll still occasionally need some assistance from native developers.

Final Thoughts

React Native is a great selection for creating apps that will work smoothly irrespective of the platform. Currently, the Facebook crew keeps upgrading React Native so it can resolve a lot of the issues that are commonly reported with the framework.

Overall, in my opinion, React Native is a very good choice for most use cases.

“learn once, write anywhere”