Intro

It's no secret at this point that mobile applications open new avenues to reach your users. This isn't the future, it's now, and expectations are always growing. From geolocation to mobile payments, people expect everything to be at their fingertips and to function seamlessly. The non-responsive website is in the dustbin of history. Even responsive websites are only a stopgap measure on the journey to a truly native experience.

Truly Native

2 Phones

When you talk about a tool like React Native, one of the first questions you inevitably get is, "Is it actually native, or hybrid?". The short answer, if you couldn't tell from the name, is that React Native IS native. Hybrid apps are basically a browser on your phone that loads a responsive website. The performance is more on par with a website than a native app – buttons are visibly slow to click or swipe, and although everything is styled to look like native components, it's nothing more than HTML elements.

The reason for some of the confusion is hybrid (aka. browser-based) solutions. This technique became popular in the late 2000s. The most common variants in use are Phonegap and Ionic, both based on Apache Cordova. These three convert HTML and Javascript into an app by simply wrapping it with a browser that can be installed as an app. Another example is Xamarin, but it uses .NET instead for the logic.

Now on to the interesting ones. With the launch of React Native in 2015, there was finally a way to get excellent performance from a cross-platform framework. It works by using Javascript as a controller for native components. By this time Javascript runtime engines had become much faster than in the 2000s, and unlike previous methods that rendered HTML, the underlying components on the screen were truly native. Other notable mentions in the native category are NativeScript and Flutter (which uses the Dart language). They're worth checking out. I won't cover them in this article, but most of the advantages below also apply to them.

Shared Code Base

The central promise of cross-platform frameworks that can't be overlooked is code once and deploy twice (iOS and Android). With a single codebase, you're now in control of the entire mobile experience. Of course, with great power comes great responsibility. For this to be a positive, you'll need to make sure the team is actually testing features on both platforms. 🤓

Feature Parity

Another benefit that comes from a shared codebase is feature parity. If you're coming from a web background, this makes a ton of sense. You wouldn't want to create completely separate Safari, Chrome and Firefox websites. Whenever a new feature is requested, all three teams would have to rush into action with their own solutions and styles. While it seems obvious with the web example, mobile development still works a lot like that. New features often make it to one platform before the other, or releases are held back until both teams have caught up.

Skillset is Well Known

Javascript is ranked as one of the most ubiquitous programming languages by just about any source you can find. On Github, it is far and away the most popular. On Stack Overflow, Javascript, HTML and CSS reign supreme. Any way you slice it, a ton of people are familiar with Javascript, and finding developers who have at least a working knowledge of it is not challenging.

Escape Hatch -> Building Native Modules (iOS & Android)

At the end of the day, cross-platform frameworks can't handle everything. You will encounter times when something can't be done using the framework itself. For those times, there's a feature called 'Native Modules'. For example, I once found myself looking for Native Modules while developing a Point of Sale. The project involved printing customized receipts, barcode scanning and two screens – deeply customized hardware. Creating the calls in Java was a snap, and now they were available to call through the bridge on the frontend. Anything you can do coding for single platform native, you can do using Native Modules for React Native.

Summary

Your customers fully expect a great mobile experience. Responsive websites are not a mobile solution, but should be treated as a gateway to a truly native experience. React Native has a large community of developers, so finding the talent is not difficult. Coding on one platform and deploying to both iOS and Android is faster and keeps features in sync between platforms.

Mobile apps bring a whole new dimension to your product offering. Get started today.