When it comes to mobile app development, there are a lot of technologies to choose from. You have Kotlin for Android, Swift for iOS, Python, a general purpose language and what not. But I want to talk about a technology that is super easy and fast, and gets you one app for the price of three apps.

Yeap, I am talking about React Native. It is a JavaScript based framework used for creating native applications. Why do I think you should build your next app in React Native? If you haven’t already read pros and cons of React Native, I have a list of reasons for you.

Reasons you should choose React Native for your next App

Before we move to the topic at hand, let me first tell you about two terminologies you’ll find floating around in React Native development.

Working with React Native, you could have a Brownfield app or a Greenfield app. Brownfield being the one where you have existing native code and you want to add or merge it in React Native code. A Greenfield app is when you initiate with React Native; you could say it’s a pure JavaScript app. There may even be no native code involved.

Both of theses scenarios (Greenfield or Brownfield) will have different pros and cons in your app development cycle. There are no good or bad scenarios here, this primarily depends on your use case, which one you should go for.

(Keeping this in mind) Let’s move on to reasons for using React Native.

You can have three apps for the price of one – Web, Android and iOS

React native helps you create native apps for Android, iOS and Web. So, instead of you having to create three different apps for three platforms, you will just need to create one app, and you can run it on different platforms. How does that sound?

Super easy to get started, but with a price

Now, for something that great, there is always a cost. And that’s the cost of integration. If you have a Brownfield app and you need to integrate React Native into it, that’ll introduce you to some bumps along the road.  Though it’ll be challenging to get a smooth native experience, but it is do-able by using other libraries and help from the react community.

If you didn’t know already, React native is backed by Facebook, so the support and community contribution is great. With that, so are the tutorials and the learning material. So, it is super easy to get started, but you’ll have to put in extra effort with the integration phase, especially in case of a brownfield app.

Great performance

You would think a native app would perform better on its native platform, but you could not be more wrong. In an article by John Calderaio, comparing React native with Swift, React Native turned out better than Swift. He created two apps, one in React Native and the other in Swift. Both looked and felt the same by appearance. Both had the same features as well.

On comparing different performance metrics, React native outperformed Swift, especially in the memory usage.

Easy to transition from native to react and react to native code

 At any point, if you wish to transition to/from React native to the native code, you can do that without turning it into a horrible nightmare and a major development disaster. Because RN (React Native) aligns with native platform conventions (hence the native experience), with a little bit of caution and common sense, you can shift between a React Native code base to fully native.

You still need Native developers, but the team size can be small

Let me throw this misconception out the window right here. Yes, using React native, you can create native applications, but that does not mean you won’t need native developers. You very much do, but how is that a benefit of using React Native?

Well, that decreases the team size. Instead of hiring a big team of Android and iOS developers, you can cut down on cost by hiring a smaller team with React Native, Android and iOS developers.

Easy to test

One of the crucial reasons contributing to the greatness of an app is a rigorous testing cycle. In React Native, testing is super easy, especially using “Enzyme”.  You can use shallow rendering and your tests will run faster. The quicker your build passes from testing, the quicker you can move to the launching phase.

Easy to maintain and understand by other engineers

One factor that most of us miss when deciding which technology to use is having a “backup”. A lot of times, people end up shifting mid development due to some bad experience, or need to update or add a feature in the existing app. For a software engineer, looking at the code base for the first time, React Native is a delight. It’s very easy to understand and maintain, and any good programmer with a sound coding brain can easily understand what is going on and where. That’s a huge pro, trust me.

reasons-to-choose-react-native

That all said, let me tell you what kind of apps will be great with React native

React Native is Awesome for Apps like:

As competitive as mobile app development is today, you can only get so many chances to get your app right.

So, what kinds of app would do great on React Native? Should you build an enterprise app? A dapp? A web app?  These questions would be better answered by knowing the capabilities of the apps. So, apps such as:

  • Clickable prototypes
  • Apps with Simple UI
  • Cross platform apps with basic functionality
  • Apps that do not need to rely on native APIs too heavily
  • Apps that would look and behave the same in different platforms

These would sum up the types of apps faring well with React Native. If you have a similar requirement, drop in a message or contact us for a quick quote on a React native app.

For inspiration, let me give you some examples of popular apps made with React native. Facebook’s messenger app, Tesla’s Car diagnostic app, Soundcloud’s music app. All Big boys, having it all with a React Native app.

Before you jump into the React Native realm, you should look at the other side of the coin as well. React native is awesome, but there are some downsides to this framework. Depending on your project, you could  bear a huge loss or a minor setback. Learn from Airbnb, one of the biggest contributors of the React Native community. They had shifted their app to React Native. Pretty recently, they announced they will be setting the sun on React Native and go for a fully native development.

Read Airbnb’s account on sunsetting React Native.

In light of that, here are some problems you need to watch out for, when choosing React Native:

A few bumps down the REACT NATIVE road

React Native Navigation Problem

Navigation between screens is not smooth enough. You have to rely on other libraries to get that extra crisp seamless feel. Although, there are other libraries and APIs available in the Github community for React Native, but chances are you will still run into some problem that’ll require a custom solution. For instance, there is no NavBar in React Native. The screen props are serialized /deserialized and the Navigation state is native.

Custom modules

So, I recommend you take a good look before you leap.

Just like the navigation problem, React Native lacks on the number of modules. There are good chances you might not encounter a problem here as well, but if you do, you will have to come up with your own solution. For example, you might have problems working with shadows.  To get the desired outcome, you may have to create a module yourself, which is something not everyone can do.

Training time

There are a lot of myths to debunk with React Native, one of which I mentioned earlier as well, you can not entirely cut out native developers. A lot of people think, with React Native, you do not need native developers at all. That is not true. To effectively work on React native, you need knowledge from both Android and iOS platforms.

Because when you have to shift developers over to React native, they need to understand the workflows and workings of underlying technology. Especially when an issue arises, it makes it easier to debug and track the problem. So, there is good amount of resources spent on training and teaching development in React Native.

Type Safety

Well, since it’s JavaScript, so you know what that means. React Native is short on type safety, but it’s not a dead end. You can introduce type safety to it by using Type script or Flow, but then it adds to the learning curve, which for some of us, is too much to handle.

Too fast can be bad

A tweet from Max Howell sums it up quite elegantly.

React native is fast, no doubt about that. But that gets most developers ‘drunk’ on the power and they don’t really grasp the fundamental concepts with a rock solid understanding. This approach leads to a lot of technical issues later on. This is a problem because it gets extremely hard to debug and track bugs and turns into a development nightmare.

Conclusion:

We make decisions every day. How many of those are right, I can’t say. Some bad decisions, like wearing the wrong shirt to office, you can live through. Some you don’t recover from, like wearing that same bad shirt to your first date. A good decision maker takes all the good and bad into account, but the best ones get in touch with experts. CitrusBits happens to be a top mobile app development agency, with seasoned React Native veterans. We would love to help in the matter. Get in touch with us or schedule a free consultation with our experts and get your React Native app up and running in no time.