We are constantly evaluating new technologies and frameworks at Mesh. We do this to ensure that we make the right technology choices for our customers. We do after all, get paid to make these technology choices, so we have an obligation to our customers to make sure our choices are correct.
One of the frameworks that we’ve had our eye on for a while, but hadn’t pulled the trigger with is React Native. We build applications across a numbers of different platforms including web, mobile, server, and IoT. Needless to say, the promise of cross-platform development is very appealing..
My partner Taylor and I are both longtime native developers and were skeptical of the React Native’s claims however. Despite our skepticism, we decided to start actively investigating the platform late last year. And we are extremely happy we did as most of our new mobile development is now being done in React Native.
Here are three of the main reasons we decided to move to React Native.
Our biggest concern with building a cross-platform application has always been performance. We were skeptical that a cross-platform language would be able to render application screens at the standard 60 frames per second threshold needed for smooth animations and transitions.
We’ve had experience with cross platform languages in the past including Xamarin and Phonegap. These platforms didn’t live up to our performance expectations and left a sour taste in our mouth when it came to cross-platform quality.
So we were very pleasantly surprised to discover that the performance of applications written in React Native is great and virtually indistinguishable from native applications. Everything from scrolling performance to navigation animations appear seamless and fluid. All screens render as expected and there is no perceivable drop-off in visual performance.
Vanilla React is the primary framework that we use for front-end web development. We think it is an amazing tool for building rich front-end applications and have invested heavily in the platform. We also use React in combination with Redux, which is an application state management framework.
By building mobile applications in React Native and web apps in React, we are able to share a tremendous amount of code across our web and mobile code bases. This is a massive advantage when building applications with similar functionality across different platforms.
During one recent project for a customer, Drivers Club, we were able to develop one common library that included all of the networking and persistence logic for an Android, iOS, and Web application.
I’ll stop there and let that sink in for a moment. Rather than developing three networking stacks, model layers, querying functions, persistence logic, and automated tests, in three different languages, we were able to do it in one language, in a single codebase. And it worked flawlessly.
This alone is a massive save in terms of development time and ultimately cost.
This is the most obvious advantage of choosing React Native, but I can’t stress this enough. The first time I saw our single code-base React Native application running seamlessly on Android and iOS I was absolutely amazed.
I’ve spent years in companies that employ fleets of developers to build the exact same functionality on iOS and Android. These applications have not been technically complex either. Rather they have been vanilla apps that had to be built on native platforms because the best cross-platform options at the time weren’t good enough.
Fortunately for us, times have changed and React Native is more than good enough.
React Native is a fantastic option for building mobile applications. Unless your application requires sophisticated animations, or Bluetooth support (one of React Native’s flaws) we would strongly encourage you to chose the framework for you project.
The cost, efficiency, and time saving gains that development teams can achieve with React Native, without sacrificing application quality, is simply too great to ignore.