Man holding iPhone at his desk

5 Reasons Why I Chose React Native Over Traditional App Development

22nd January 2017React Native

Back in 2015, I built Revisify, a free study tool for students to use. Revisify has matured on the web for 2 years now and I’m in the process of building an iOS and Android app. I’m a complete newbie to app development, I only started in August 2016. After some research, I found that I had 2 options to build the app:

  1. Native development i.e. Swift/Objective-C and Java
  2. Hybrid development i.e. React Native, Ionic, Xamarin etc.

I decided to learn the ways of Swift and Xcode by reading the book iOS Programming: The Big Nerd Ranch Guide and going through tutorials online. I liked Swift and spent 8 weeks straight learning iOS development before discovering Facebook’s framework for building apps and I quickly realised that React Native was better suited to my needs. Let me explain why.

I can share most of the code for both iOS and Android apps

This is the biggest advantage React Native has over traditional app development. All the code is written in Javascript which means that developers no longer have to learn Swift/Objective-C and Java as well as different concepts for each mobile platform. We don’t have to write our code twice! For small businesses like me (I’m the only person working on the app at the moment) this is a huge timesaver. This allows me to spend more time working on what matters most — improving my app and in turn bettering the user’s experience.

React Native Apps are… Native

There are different frameworks like Ionic and Xamarin which provide a means of writing code once and deploying it to Android and iOS. In hopes of finding the best framework, I researched the pros and cons of each solution.

Ionic, unlike React Native, renders a web view rather than native code. This means that Ionic apps don’t have that ‘native’ feel to them, meaning they feel more like a web browser than an app. While this would make developing the app easier since I could just use a majority of the code from my website in the app, it wouldn’t provide the ‘app’ experience which many users are accustomed to.

Xamarin, on the other hand, uses C# to build apps that are native, just like React Native. As I’m originally a web developer, I felt more comfortable to use React Native over Xamarin. I already knew that the community for Javascript was huge and I understand the language very well. I’m sure if I were to have had a .NET development background I would have chosen Xamarin.

The community is already very large

While React Native is (at the time of writing this post) almost 2 years old, the support is incredible. There are currently 17,188 repositories when I search for ‘react native’ on GitHub and 10,012 questions tagged with ‘react-native’ on Stack Overflow. Just to think how new this framework is, there are already plenty of people who are working on or using React Native. As I’m building my app now, I’ve found that there are lots of libraries that have helped me to add a certain feature or to simplify my development process. The only downside is that support for the latest features in iOS and Android will take longer to work with React Native since libraries must be developed to do so. However, as the community expands further, I’m sure this delay will become much shorter.

You can (sometimes) bypass slow App Store update approvals

One thing that makes me nervous is the thought of pushing updates to my app and realising that there is a bug, then pushing a new update that takes around 5 to 10 days to fix it. I’m sure that vigorous testing before sending the app out to users would reduce the number of bugs, however sometimes bugs do get missed. Thankfully Microsoft created a tool, CodePush, that can send updates to the Javascript portion of the app instantly. While Apple is understandably a bit funny about this (they only allow you to do this if your update does not change the functionality of your app) the option to do this is very nice.

It’s a beautiful framework and it’s easy to learn

As I’m a web developer, I found myself right at home with React Native. If you have never used React on the web before like me, then it takes a little to adjust, but the learning curve is surprisingly minimal. React has a focus on creating reusable components like buttons, text inputs and images which makes development easy as everything is modular.

Conclusion

Honestly, React Native is fantastic, there are some downsides to it compared to traditional native apps, but for my needs, its advantages far outweigh its disadvantages. I genuinely believe that this is the future of app development and I’m excited to be using it for my app.