Reading Time: 5 minutes

Since the early life of this framework, many companies adopted React Native, but many don’t understand what’s behind this technology

React Native apps have been with us for a while now. It was launched in March 2015, which means this month it is turning 5 years old. I started working with it 3 years ago when it was in its initial phases and everyone knew it became popular for 3 main reasons:

  1. Airbnb was using it and they were blogging awesomely about it here in their Medium profile.
  2. It was used and open-sourced by Facebook. 
  3. React is a great Javascript framework.

It is important to clarify not all of Facebook was built with React Native but only some parts of the app.

Photo by Tudor Baciu on Unsplash

I have no idea how I ended up in a project using React Native, for almost 3 years. The great thing is I can’t say I regret it because that experience took me out of my comfort zone and made me a better developer. Being on both sides of the mobile world, gave me a greater perspective and up to today, I keep seeing tons of companies willing to use or already using React Native. If you have a doubt just head to a startup page like Angel List and you will see how many startups are looking for React Native Engineers.

What is React Native?

Before anything else, we should look at the definition of React Native. The problem is if you look at their website and documentation, there is no ‘about’ section or a formal definition. The closest to it that I could find was the introductory lines of the GitHub repository:

“React Native brings React’s declarative UI framework to iOS and Android. With React Native, you use native UI controls and have full access to the native platform.”

So basically, React Native is a Javascript Framework, that allows you to use native UI controls and everything in the native platform.

Photo by Ferenc Almasi on Unsplash

React Native states: “Mobile apps built through them are indistinguishable from a ‘real’ mobile app”

The above was taken from React Native’s webpage, here is the complete quote:

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.

I have been a mobile developer for about 8 years, and up to today, I have no idea what could a “real” mobile app be. As far as I know, all apps in the AppStore, no matter their technology, are real.

What they mean with this, is that most of their react components have an equivalent in either Objective-C or Java and when the app renders, the result is Native Code.

Is it really ‘faster’ than developing Native Code?

There is a bit of an obsession in the technology industry, and in all our society in general on speed. Projects like mobile applications are complex. We overlook the fact that developers are crafting something, and speed is a subjective concept.

But asides from the idea of “fast” or “slow”, in a more technical way, React Native is not faster, it just enables you to deploy your apps to both platforms (and possibly others) with the same code. But when it comes to bug fixing, which is the most time-consuming activity in software development, issues will be found separately in Android and iOS. In my experience with React Native, the time you saved by deploying in both, would be lost in fixing platform-specific bugs.

React Native also mentions the advantage is you just need a developer who knows Javascript and he can get the work done

After my first project in React Native, I helped build other React Native teams, and also interviewed for a couple of roles on this technology. There was a constant phrase I heard from recruiters and people who had worked in React Native.

 “Yes, you need to know Javascript, but we also would like to have someone in the team who has done Native too.”

Photo by Franck V. on Unsplash

If React Native is so easy-going why do you need someone who has done native?

  1. Some of the native features of Android and iOS are not available in React Native and if your needs are very specific, you will need someone to add things in native code and then “bridge” them to Javascript.
  2. Native developers know better the tools to debug apps in Android and iOS. And even when React Native generates all the code, you still deal with the native tools for specific bugs.
  3. Native developers simply know their platforms. When you work with a platform in your day to day, you know its setbacks. They know the bugs that come from one model of hardware, they know the bugs that happen after an OS update, they know just by experience what or where things need to be fixed. The same happens with a Javascript developer in the Javascript environment, they just know. But here you are trying to mix three different profiles in one person.

If you know what you are dealing with when choosing, it’s a great framework to use.

As many mobile developers, I have worked in a big amount of platforms and languages. I used to have a boss that said great Software Engineers would be able to adopt a new technology’s basics in around 2 weeks of constant dedicated study. Maybe this is a bit of an exaggeration, but someone with the passion to learn and to work on a project will go through.

Photo by Daniele Levis Pelusi on Unsplash

The problem is not technology. Developers aren’t the problem either. The thing is, we keep on searching for the ‘fast’ and ‘easy’ solution that will get us through success without effort or investment. That simply won’t happen. React Native is an alternative, yes. If you ever want to use it on a project, make sure you keep this in mind. React Native is an alternative technology with advantages and disadvantages like any other, which doesn’t mean it is a shortcut.

(Visited 49 times, 1 visits today)