Should you build your MVP with React Native?
Karol Wegner
The React Native mobile app framework launched by Facebook in 2015 is currently the most-used cross-platform technology for building mobile apps for Android and iOS.
It took React Native only 4 years to conquer the mobile application programming market. It certainly delivers on the promise of cost reduction os software production, but is its only advantage? When is this new framework a good choice for startups and creators of new solutions? Is React Native for my MVP app development the right choice?
Table of contents
- Pros of React Native MVP and cons of React Native MVP
– Saving budget and time
– Using JavaScript
– Hot & live reloading
– Android and iOS applications created at once
– Write once, use twice
– Streamline the management
– App is more than code
– Smaller development team
– Trending technology
– A few things to watch out for (Before you choose React Native MVP)
– Be careful with new/emerging technologies
– Shortage of specialists
– Better the devil you know… - React Native applications are less efficient
– Business, not playing
– Better UX / UI with native Android and iOS
Pros of React Native MVP:
- Saving time and money,
- Reaching a wider group of users (two platforms together),
- Smaller development team.
Cons of React Native MVP:
- Young technology,
- Difficult to find specialists,
- Lower performance,
- React Native UI / UX inferior to native applications.
Saving budget and time
One of the basic challenges of a Lean Startup is economy – using available resources in an optimal way when attempting to confirm the fit of the product to the needs of users (Value Proposition confirmation). When creating a new mobile application, the Product Owner should strive for the best possible use of the budget dedicated to building the solution.
React Native framework allows the so-called rapid development. The following React Native features and tools allow you to quickly create mobile applications and reduce the budget:
Using JavaScript
JavaScript is a scripting language, so you do not have to wait for the code to be compiled.It is one of the most popular programming languages, which means a large base of specialists and available tools.
Thanks to an advanced JavaScript engines such as V8, the operational speed is almost as good as in the case of compiled languages. In addition, it is quite a simple language, easy to both learn and implement.
Hot & live reloading
The ability to correct and modify the code on the fly – the programmer writing the code sees the effects of the changes immediately.
All you have to do is save the files and check in the application how the changed code affects the program’s actions. The ability to test applications in a web browser (application simulation) without the need of uploading to the phone, allows to quickly create and adjust views of the mobile application.
In the case of native technologies this is much slower due to the need of compiling after each change. Native software can also be tested on simulators, but the performance of iOS and Android emulators leaves a lot to be desired. React Native development holds an advantage over native technologies here.
Android and iOS applications created at once
Usually, the creators of startups or new solutions with a limited budget face the dilemma of choosing either Android or iOS mobile platform for implementing their solution for. Depending on where you are in the world, the popularity of Android and iOS devices varies:
- For the US market in 2018: 57% Android, 43% iOS,
- For the European market in 2019: 72% Android, 26% iOS.
Write once, use twice
Thanks to the React Native technology, we can build a solution that will be available immediately on both Android and iOS platforms, while maintaining significantly reduced mobile app development cost. This way, we can test our product both on iOS and Android users.
A mobile application project has several phases and multiple types of tasks to be performed – management, UX / UI design, implementation, testing (abbreviated hereafter: PM, UX, DEV, QA).
The implementation time – writing the source code of the application with React Native, can be taken down to 60-70% of what it would take to create native software. You can also check which giants developed applications in React Native.
Streamline the management
A relatively large part of React Native application development in taken for configuration and management of native projects. For example, if we need to change the bundle id, application icons, or connect the native library (Crashlytics), you have to do it separately for each platform.
For phases of the project other than coding, we don’t gain much from using React Native technology – in the testing phase, we may need even more time than in the case of Native technologies (devices-specific issues may occur more often for React Native) – especially regarding the visible layer of the application.
App is more than code
Taking into account that the non-coding phases make up around 50-60% of the total project cost – using React Native technology can save 15 to 25% of the total cost. Meaning that a project written in native technologies at around US $ 100,000 (the whole project, UX + DEV + PM + QA), thanks to using React Native would cost about 75,000 to 85,000 USD.
Smaller development team
Managing a team creating a new product is difficult – the more people in the team, the higher the management cost. Choosing React Native to build MVP holds a significant advantage here.
For a Scrum Master or a Project Manager, managing a smaller team means more time for other tasks. In startups, the role of Product Owner, Project Manager, Marketing and Sales Chief is often combined in one person – the founder 🙂 If React Native technology allows reducing the development team by 1 or 2 people, then we also save 15-30 hours per month normally required to manage their work It can mean quite a saving, especially for a young company.
Trending technology
There are very few programmers specialized in both Android and iOS platforms, so a typical development requires a dedicated specialist(s) for each system. A single React Native programmer is able to create an app for both platforms.
As RN grows in popularity, more programmers adopt it and specialize in it, becoming part of the React Native community. An experienced front-end developer will usually find it quite easy to learn the new framework.
A few things to watch out for (Before you choose React Native MVP)
A new framework (RN is only 4 years old) is not always the right choice. If you’re looking for top quality and no-compromises development, it’s native Android and iOS technologies that still reign supreme and provide security of stable technology.
Be careful with new/emerging technologies
The current stable version of the React Native platform is v.0.60 released on 3’rd July 2019. For technical people / programmers versions starting with “0.” are an obvious sign of imperfection. Using frequently updated and adjusted frameworks for your project means risking delays and additional costs of updating. It’s also not unusual that updates from 0.xx to 1.xx introduce major changes in the framework and can cause compatibility issues.
Problems that normally don’t come up in case of native Android or iOS developments, are quite common for young, third party technologies. Variety of devices, screen resolutions, operating systems often requires developers to devise their own solutions to issues thoroughly solved in native technologies. The additional “layer” making the framework “cross-platform” can also cause new type of problems we normally wouldn’t be facing programming natively for Android or iOS.
Shortage of specialists
Typically to demand exceeding supply, senior React Native developers are a rarity on the market – the technology is simply too young to have produced specialists with extensive experience. Naturally, those with good knowledge of the framework are in high demand and quite precious to employers.
Another problem is the difficulty in convincing native programmers to learn the technology. Talking from experience, we gave the opportunity of RN training to all our programmers at itCraft, and so far didn’t manage to convince even one to switch. This shows that experienced front-end developers would learn this technology only as an additional competence, not make it their main focus.
Better the devil you know…
Mobile applications programmers prefer developing their skills in technologies they already know rather than explore new avenues. Beginners or web devs, in turn, aside from learning from scratch, face challenges their experienced colleagues are well past – the technical issues with notifications, security, screen rotation, gps, nfc, bluetooth and other components, native device functionalities and differences between Android and iOS SDKs).
React Native applications are less efficient
RN apps’ business logic is written in JavaScript, which is slower than compiled languages (Android’s Kotlin, iOS’s Swift).
JavaScript is also single-threaded, meaning we don’t get to utilize the full capacity of multi-core processors. Alternatively, we can implement multi-threaded tasks in form of integrated native components, but this would affect the development time and require a native developer to produce.
Business, not playing
Fortunately, an average business application does not require high processing power and an app written in RN works as if written in a native technology.
React Native is not designed to render complex 60 fps animations in real time – the current standard is 10-20 fps on a medium-priced device. This makes RN unsuitable for creating games or apps with heavily animated content. Startup time of RN apps is also usually slightly longer than native ones which launch faster thanks to device compatibility.
Better UX / UI with native Android and iOS
In terms of quality of the UX / UI and performance, applications written in React Native require some compromising.
No cross-platform technology provides better UX than native. This is most noticeable in applications written in hybrid technologies (Ionic, Phonegap / Cordova). Such applications do not use standard Android or iOS SDK component base, but make apps look similar regardless of the platform. For people used to “typical” iOS and Android buttons and interactions, this may take a bit of getting used to.
Read also: How to make user-friendly apps
React Native applications are a bit better in this respect – they use native components of Android and iOS platforms, which are rendered according to best practices for each platform separately. It is still a work in progress and not yet level with fully native Android and iOS components.
Want your React Native MVP?
Let’s discuss possibilities.
Would you like to know more about differences between cross-platform and native app development? Download our ebook! It is the ultimate guide to Cross-Platform vs Native development. You will find out more about native applications, cross-platform applications and technologies used to build them.