React Native - a business review01 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.
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
- 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.
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.
- Fundamental problems in an app quickly reveal inexperienced coding. Developers can mitigate this with planning and regular code reviews.
- 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.
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.