To go or not to go React Native

Written by rajat1saxena | Published 2017/08/03
Tech Story Tags: react | react-native | mobile-app-development | software-development | facebook

TLDRvia the TL;DR App

Thoughts about when to and not to use the hottest framework from Facebook, to write your app(s).

To choose React Native over Native or not?

Few days back, I wrote a blog post about why I’m still choosing Native over React Native. When I wrote the initial architecture of my latest app Kiven Aa, it was like this:

For Web Client: React

For Mobile Clients: React Native (to go Expo or to not go Expo)

Monetization Model: Google Admob for mobile apps and something similar for the web app.

It is to be noted, that until that point of time, in the past, I had exactly zero experience with React Native, I’d just dabbled into React and I totally loved it. But, I’d seen some presentations from the likes of Airbnb, so I was sure that it’s something I can reliably build my app upon.

My perception changed, when I actually dived in…

There are some areas which you really need to think over, before employing React Native for your mobile apps. I’ve already talked about those issues in the following article

React Native: First impressions_If you’ve been following me for a while, you must be aware that these day’s I’m working on a new anonymous chat app…_medium.com

In case you don’t feel like reading yet another post, here is the quick rundown. Before using React Native, you need to think thoroughly over the following points

  1. What is your monetization strategy? Does it include Google Admob or Facebook Ads?
  2. Do you have plans to use latest APIs of iOS or Android?
  3. Do you intend to use some unique platform specific capabilities, like implementing chat bubbles like Facebook messenger?
  4. Do you have plans to release apps for both iOS and Android?

Based on the above questions, I have categorized the use-cases in two groups i.e. when React Native is a good choice and when it is not. Let’s have a look…

To go React Native:

  1. E-commerce Apps: React Native is an excellent choice when you want to build similar looking apps, share as much code as possible, iterate faster and lesser time-to-market.
  2. Social Media Apps: Like Facebook, Instagram etc. The apps should look native and be fast enough #scalable.
  3. Cross-platform JavaScript based Games: If you are proficient enough in JavaScript, you can use the framework to write cross-platform apps. Monetizing such an app, is a different story though.
  4. Apps that use Facebook Ads: It looks like FB Ads are better supported in React Native, *for obvious reasons*, as compared to Google Admob. I have no experience with Facebook Ads but the guys as Expo offer a ready-made FB Ad component and nothing for Admob (which is more famous), hence the guess.

To not go React Native

  1. Messengers: Messaging apps use a ton of background processes and customized settings, in order to be both “always running” and “l_ight on memory and battery_”. Trust me, I know this, I own a messaging service. Background processes are something which I found hard to get right in case of messaging apps, let alone implementing them using React Native.
  2. Media players: These kind of apps demand GPU processing, background processing, multi-threaded programming, async programming, device controlling capabilities, OpenGL and what not. You are better off staying in the native camp, in this case.
  3. Utilities: Apps like brightness controller, playing videos in background can be coded much easily, using the native features or and APIs provided by the underlying platform than writing a react native component for the same.
  4. Apps that use Google Admob as main source of monetization: Google Admob does not seem to be officially supported and there is no official react native component for this, like buttons and all, yet! So writing apps which uses customized Ads can hit a roadblock in React Native.
  5. Non-cross-platform apps: Apps for one specific platform! You might be tempted to use React’s declarative style of programming everywhere but if you have no plans to release an app for both iOS and Android, I guess using RN for the job is an overkill. When you are stuck, you’ll find solutions to your problems more easily, in case of native. RN is still very new.

In future the situation might change. We can see some “not to go React Native” items cross over to “to go RN” camp, considering how fast the framework and the community is evolving.

Honestly, I would love to write 100% of my apps in React Native as I only know Web and Android but I want to launch cross-platform apps. Using HTML/CSS/JS for Web, JAVA/XML for Android and Swift for iOS to write three independent apps, is no easy feat, being a single developer, for most of us.

Till the time, it is not happening, I can use the above list to decide when I should use React Native.

What are your thoughts about this? Have I missed a common use case? Please share your feedback in the comment section. I would be delighted to hear your opinion about the framework.

If you liked this post, kindly recommend it to your network and follow me for more posts like this one. You should also subscribe to my YouTube channel, if you like developing digital things.

Facebook|Twitter|YouTube

Till next time…


Published by HackerNoon on 2017/08/03