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:
- Airbnb was using it and they were blogging awesomely about it here in their Medium profile.
- It was used and open-sourced by Facebook.
It is important to clarify not all of Facebook was built with React Native but only some parts of the app.
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.”
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:
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.
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.
If React Native is so easy-going why do you need someone who has done native?
- 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.
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.
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.