How to migrate to React Native?

Since we switched to JavaScript-only technology stack a couple of years ago, we had a plenty of businesses that came to us and asked to re-write their native applications to React Native because they wanted to make the maintenance of iOS and Android applications both easier and cheaper.

In today’s article, I would like to share with you the most valuable insights from those experiences and help you decide whether your business would benefit from such a migration or whether it would be just a waste of time and money.

Let’s begin, shall we?

What is React Native

React Native is a JavaScript-based cross-platform framework that is designed to build native-like applications using modern JS stack and provides undistinguishable experience to the end users. Developed and maintained by Facebook, RN quickly grew in popularity and became a single most popular cross-platform technology out there. We’ve already compared it to some of its competitors like Flutter, Ionic React or NativeScript. Should you be interested in those comparisons, feel free to click through and read more about them.

Cons of migrating from native to React Native

Now, before I proceed with telling you how amazing React Native is (because it really is) — it has a couple of drawbacks, just like all the technologies out there. So let’s start with them and discuss when it’s not worth migrating to React Native.

Con #1: Not suited for resource-intensive applications

If your business is heavily dependent on the usage of AR, VR, 3D or heavy data computing — it’s best to have dedicated platform-specific native applications rather than going cross-platform, because cross-platform technologies might now have full access to the device’s hardware, and therefore you’ll have to use native languages anyway.

native-augmented-reality

One way to overcome this is to go into Facebook’s steps, for example, where their apps are native at their core, but many of the screens are written using React Native.

Con #2: Delayed access to new features

The second case in which I would recommend against React Native is if your business is relying on instant access to the newest platform-specific features, to which you need to have access as soon as they go live.
React Native, or any of the cross-platform frameworks for that matter, require some time before their respective maintainers or their communities add support for those hot functionalities.

Pros of migrating from native to React Native

In most cases, though, migrating from native to React Native bears a number of pros that should be considered by every company that has native applications.

Pro #1: Native-like cross-platform availability

Unlike other cross-platform technologies that aim to follow the ‘code once, use everywhere’ rule, React Native decided to branch out a little and while you can easily share up to 100% of your business logic and up to 98% of your codebase between platforms, RN allows you to develop platform-specific UIs. Which is very important if you’d like to offer your users that full native-like experience.

Pro #2: Ready to integrate with native modules

As already mentioned, you can easily integrate native modules into your React Native applications. And while it’ll require some time of the native developer, it’s a much easier solution than having to deal with 2 completely separate applications.

There are 2 ways you can use this in your business. You can either follow Facebook’s path mentioned above, or you can follow the Coinbase’s steps, for instance, in which they started with re-writing only their sign-up screen and ended up re-writing the entirety of their applications a few years down the line.

coinbase-pro

Pro #3: Over-the-air (OTA) updates

Have you ever noticed that the app you’ve been using, like Facebook or Instagram, for example, changed some parts of their design, but you never downloaded the new update from the app store? That’s exactly what OTA updates are.

They allow the dev teams to update their apps in the background without the need to push any updates that will have to be installed manually if auto-updates are not enabled. OTA simply updates the app once the uses launches it and thus provides a much more seamless user experience.

Pro #4: One technology to rule ‘em all

If you have a web application — you have a JavaScript-based frontend. Then you have your backend. There’s a high probability that your backend is not using JavaScript. And now you need to add two separate tech stacks for Android and iOS mobile teams. That’s a complex structure.

The beauty of React Native is that it allows you to avoid hiring developers that can work on one thing only — your mobile app.

In most cases, you can simply build the entirety of your tech stack around JavaScript. Thankfully, Node.js easily covers the backend, and having a team of experienced developers that can do it all (and if any force-majeure occurs — help fix any part of your software) provides security in contrast to the inability to do this when your team is divided by technologies.

Pro #5: Shorter time-to-market

You would probably agree with me that putting out your product before competitors provides you with a priceless advantage, and React Native is here to help you develop your apps in a timely manner.

For example, it took us merely a month to develop an MVP for one of our clients, who wanted to bring Uber-like bus hailing services to Indonesia. We used React Native in combination with our open-source admin panel for Node.js — AdminBro — to deliver a set of working Android applications: one for drivers, one for riders. Read more about that here.

Pro #6: Lower development and maintenance costs

Because there is no need to hire separate developers for each platform, you naturally lower the costs of development as everything is being coded by a single React Native team. And while you could justify having two mobile teams in the active development phase, when it comes to pure maintenance — the need to have 2 separate native developers instead of a single RN one — that makes the smallest sense.

Pro #7: Lower entrance barrier for existing frontend team members

Another staffing case to keep in mind: hiring is much more expensive than swapping teams internally, which means (and we had a situation like this in the past when we decided to drop all the technologies from our stack and focus only on JavaScript) any experienced JavaScript developer from your frontend team will be able to jump and support your mobile team if such a situation arises, saving you tons of time and consequently money.

How to migrate from native to React Native?

The answer to this question is pretty prosaic. Because you’re switching to a different technology, you need to develop your app from scratch, usually omitting looking at the native applications and building the new one based on the designs, just like you’d do with a completely new product.

The only thing you need to identify is whether your app uses some specific native features that you will have to integrate into your React Native application. If it doesn’t, just re-write the app.

There’s also another way, slightly longer one and maybe a bit more expensive — start with re-writing some parts of an existing app, integrate that re-written parts into the native app and repeat this process until you slowly re-write the entire application.

Which one to choose, up to you. I’d recommend the first one as it’s less frustrating and time-consuming.

Companies that migrated to React Native

There are multiple companies that switched from native technologies to React Native. To name a few:

Walmart switches to React Native

In 2016, Walmart decided to update their existing grocery application and were on a lookout for a solution that would help them deal with their performance issues. Since their web codebase was based on React, they decided to give React Native a try and not proceed with pure native development. As a result, 95% of their codebase was shared between their iOS and Android apps, providing their customers with nearly native performance and making it easier to maintain their applications, as they could release new versions simultaneously.

Walmart-Grocery

Foreca switches to React Native

In 2018, Foreca also decided to give their mobile applications a complete overhaul. One of the main things that they wanted to achieve was a unified user experience on both platforms. Doing that with 2 separate native applications would be rather difficult, and they decided to go for React Native. And even though, as they admit, using React Native did provide some challenges, the benefits were just too great.

Khan Academy switches to React Native

Khan Academy, one of the largest EdTechs out there, also decided to drop native applications in favour of React Native-based cross-platform experience. The main reason behind such decision were difficulties in maintaining two separate applications with a small mobile team.

‘Our iOS and Android apps share a single codebase, with engineers specializing in features of the app, rather than platform. This means we’re way better about improving the quality of a given feature over time, and we can make incremental improvements to features, rather than feeling like we need to get everything in the initial version.’

  • Bryan Clark, Mobile Engineer at Khan Academy

Conclusion

The conclusion is quite simple: in most cases, you’ll be able to benefit from switching to React Native, especially if you don't have budgets to keep two separate teams at all times or if your app doesn’t require any specific functionalities that only native technologies can provide.

If you’re not sure where you stand, drop me a line at ross@softwarebrothers.co, and I’ll happily assist you.