React Native - a business review

01 August 2017 ‐ 7 min read

Over the last 8 years, we’ve always chosen native development over hybrid technologies because the user experience it delivers on each mobile platform is superior to that of any hybrid solution we have come across. However, Facebook’s React Native has posed an attractive alternative, and as we continually strive to deliver the best value to our clients, we just had to check it out. This is a review of the pros and cons of React Native, which we hope you find useful.

What it is

For readers who are completely new to React Native, it’s a framework that enables developers to build 100% native apps for Android and iOS using one code base. What makes it so special is that other hybrid technologies such as Xamarin and Cordova will deploy one piece of code to different platforms, but the user experience is not native, creating a lot of frustration for users. In our opinion, React Native is the most advanced hybrid framework that delivers a native experience to both Android and iOS platforms.

Design Discoveries

Our team found that designing for React Native is much simpler than designing for native Android and iOS. It’s literally half the UX time using React Native, with a bit of extra padding required for tweaking here and there. Implementation of screen designs is quick. It’s as simple as wireframe once, design once, and cut up once.

Designing for React Native isn’t harder, but it is advisable to have experienced designers working on it, as it is really important to keep both platforms in mind.

If you’re in a position where you need to start pushing the boundaries of design, and essentially stepping into unknowns, there is risk involved, and it may take a lot longer than expected. Our advice is, stick to basic functions when budget is a consideration.

Developing for React Native and how to cost for a project

When native developers receive designs, normally they’d need to implement numerous tiny details such as buttons with rounded corners, particular colours and gradients etc. And when they start programming the interface they have to over specify the details and jump through what can feel like numerous hoops in order to achieve a well-designed screen.

With React Native you get to work with a completely different layout strategy, where less options are available but in most cases you’re able to end up with almost the same well-designed screen as you would natively. Except, it takes about 80% of the time that it would normally take to develop a single native platform. And because the developer packs one single code base into both Android and iOS, you only need one developer instead of two.

When catering for unknowns, and certain things updating and changing, you can expect the overall React Native project will take one to one and a third of the time of a single native platform. It’s a sizeable cost saving. In addition, significantly less code is required, which begs the question, why are native libraries so complicated? To be fair, the sky's the limit with native UI frameworks - there’s almost nothing you can’t do. But in most cases, everything you would want to do, can in fact be done using React Native (referring to the latest version, 0.47).

Reasons to choose React Native over Native development

  • Javascript is a joy. One has access to a huge community of developers and the library contribution is really comprehensive. Since it’s the most used coding language in the world, the support available is sound and readily available.
  • Even though the React Native framework is still in its infancy as a technology, developers can build an app using well known tools.
  • React Native screen implementation is significantly faster although can be somewhat unpredictable, depending on the developer’s experience. As a guide, clients can expect to be charged for close to half the time, compared with a native Android & iOS quote. We’d suggest adding a bit of padding for any unknowns. However if you’re building commonly used features, this isn’t necessary.
  • Developers need to be skilled in JavaScript and apply good coding patterns and development disciplines to consistently deliver quality throughout the project.
  • Developers look for solutions and discover that the Javascript community has already written a tool to implement the feature, where the iOS and Android communities are still expected to implement their own.

The limitations and what to look out for

  • Version mismatches. If Facebook updates React, sometimes the community-driven libraries can stop working. Developers can find workarounds, but it can be a big blow. Version 0.4 for example, broke nearly every library.
  • The enormous JavaScript community that produces a lot of React Native tools often leave bugs unresolved as they spend all their efforts in keeping up to date with the latest React Native release. Often the biggest headache is to find just the right combination of compatible versions of the stack of tools in your app.
  • Fundamental problems in an app quickly reveal inexperienced coding. Developers can mitigate this with planning and regular code reviews.
  • If you are a native developer and still hate React Native after a few months of trying it out, you’re doing it wrong. It should be simpler and save loads of time. As a new React Native developer, one should always take the approach of making parts of your app replaceable. Don’t be tempted by JavaScript’s ability to produce spaghetti code.
  • Learning React Native can take longer than expected. It’s really important to spend time going through tutorials, so factor in time to get yourself up to speed. Not every tutorial is reliable, as it may already be outdated.
  • If some detail is omitted, React Native makes assumptions by means of defaults. It’s really important to specify as much as possible in the precompiled code.

Our view in summary

Our developers are converted. Thanks to the simplicity of React Native and being able to write a lot less code for the same results, they’re not looking forward to native projects. The best environment to learn React Native is to be thrown in the deep end and build a real project within a hard timeline, rather than just tinkering around.

Proceed with caution when building React Native for the first time. It’s easy to underestimate the amount of required learning, as with Javascript there’s no authoritative way to use it - you have to find your own way. The guy whose articles have the most views, is usually the way to go. Structural problems in your JavaScript are best prevented by following good coding principles. Good, experienced JavaScript developers shouldn’t have a problem - do be wary of using an inexperienced developer on React Native. To get an idea of how long it’s going to take to build an app in React Native, take a look at libraries that have been written. Based on how well they’re written or maintained, you can get an idea of which features are ‘unknowns’ and way up the risk.

Steer clear of extremely custom, graphic heavy, gaming type of apps using React Native. Content-rich is the way to go. The community will sort you out if you’re looking for features and functionality that have been built often. Deciding whether to use React Native or Native should be a per project discussion, rather than a blanket solution for all, and if you do have more than one developer on the project, it’s a good idea to assign one to functionality and the other to UI as this creates smooth project flow.

React Native is advancing at a rapid rate, and the possibilities for future projects really excite us. We simply can’t deny how good it is. Check out our recent app releases built using React Native: The Good Tree and LingoMatch.