Oct. 25, 20187 min read
Authors: Emil Waszkowski - Head of Digital Consulting, Agata Wiewióra - Project Manager
Getting ready for mobile app development? You wonder what technology to choose and how this choice may affect your long-term strategy? This article will help you learn about the pros and cons of native mobile apps and those made using React Native. It will also help you decide which technology is right for employing in a given situation and how a bad choice can influence your company's future.
React Native was created to accelerate the development process of mobile applications, save resources and enable organizations to move faster thanks to its several features listed below.
Faster development process
This is the biggest advantage of React Native. Thanks to “hot reloading” feature developers save time spent on code compilation which takes longer when using native programming languages. Changes made in code can be visible within seconds not minutes as is in case of native technologies.
Cross-platform code sharing → money saving
React Native allows to share about 70% of a codebase, depending on how advanced the app is and on platform-specific component usage. The more of this components the less code can be shared. If you keep the app simple you can use more shared code.
Better than hybrid apps
React Native framework is not a hybrid technology (like Cordova, Ionic, etc.) that uses so-called WebView which is a set of web components placed in mobile apps. Such a solution does not enable to employ native UI as well as use some of a mobile device capabilities available via API. React Native allows developers to use native interface components and quite a few platform-specific APIs.
Despite its advantages, React Native has several flaws that mainly come out during mobile app development. Furthermore, many problems encountered when using this technology are a result of RN’s immaturity.
You have to use native code anyway
React Native does not support native APIs and SDKs
Despite constant advancement of RN technology, it does not provide ready-to-use modules that give access to iOS or Android APIs. This forces developers to create so-called Native Modules themselves or develop “bridges” using Java/Kotlin (Android) or Swift/Objective-C (iOS) and severely increases software development time. Native technologies require no such thing.
The same goes for native frameworks, libraries or SDKs — if you want to employ Augmented Reality, voice assistants or SDK for mobile payments, again, you'll need the aforementioned bridges. This will require you to hire three developers instead of two as it was in the case of Airbnb that had to learn about it the hard way.
Using the aforementioned bridges or Native Modules instead of native APIs has a negative impact on mobile app performance. That is why many companies (including Airbnb or Udacity) turn away from RN. Apart from the above, the fact that smartphone processors and memory are set for supporting native components may also affect device performance.
Developers bring up one more problem with React Native technology — software debugging. It is much harder when using RN. It comes down to faster development but longer problem-solving which results in less accurate cost estimation (especially in case of Android).
As we stated at the beginning, React Native was created by Facebook which is responsible for the further development of this framework. There's always a chance that Facebook will abandon RN thus stopping its development. It is not very likely but we all know that corporations can be quite unpredictable. But the biggest threat is that Facebook can retract their permission to use this technology if they decide that your project violates their rules.
Whatever choice you make in terms of technology it should be based on your goals and strategy and never the other way around. Don't allow the technology to negatively impact or limit your strategy. Think about the goals, time perspective in which you'll be employing your solution and how you plan on using unique mobile device features.
If you are still wondering how to get to creating mobile application software take a look at the manual that we've prepared for you. But right now let us advise you on when to use React Native and when it's best to choose native technologies.
Over the last few years (RN was created in 2015) React Native gained popularity thanks to being a short-term “half measure” that enabled to create mobile apps for both Android and iOS platforms, allowing both versions to share most of the code at the same time. As of today, most companies treat this solution as a measure that best serves them when they need apps for certain events or short-term campaigns — software that does not perform complicated functions and its lifespan is relatively short.
Remember — do not use RN when you are designing a single-platform app. This framework was created to optimise multi-platform product development process and you will not benefit from using it when you aim for only one.
Arguments for native mobile technologies are related to the future of your product — we believe that for long-term projects native apps are the best choice.
The simpler the app (e.g. “Fetch and Display Data” software), and the more generic the interface, the more code can be shared between platforms. By the same logic the more complicated the features, and peculiar the interface components, the more native code and “duct tape” is needed. The same goes for dependencies on outer, native libraries, like in case of reading QR codes, native APIs or payment systems.
If you are planning to use:
Remember that in the above cases only native apps will be able to fully support the mentioned technologies. It basically comes down to this that if an interesting feature is designed for a given platform (e.g. ARKit for iOS) there is no telling when the necessary technology will be adapted in RN.
The increasing demand for faster app development might be the reason why cross-platform applications are on the rise. In fact, React Native is already perceived as a viable solution to create quality software and its use is expected to grow in the coming years. Given the support of both community and tech giants, this trend is hardly surprising - especially since the framework has gained enormous popularity and community support in just a few years.
With Facebook having big plans for the framework (as mentioned in its State of React Native 2018), the future of React Native seems bright. Yet, not everyone agrees that it’s the way forward for mobile app development. And rightly so - there are still some technical drawbacks that are holding React Native back, not to mention that it generally offers slower apps when comparing them with native solutions.
The framework might look strong on paper, but many well-known apps (such as Airbnb or Udacity) has actually switched back to native development. Therefore, even though React Native is definitely a trending topic at the moment, only time will tell if it has the power to outshine native technologies.
The golden rule when choosing technology is to select a solution that will support your goals and strategy. Therefore, if your goal is to create a simple mobile app that will serve marketing purposes, will be used on a single event and not continued after that then definitely choose React Native — you'll save time and money.
But if your app will be a part of your long-term strategy and you want to further develop it in the future, especially by using payment systems for e-commerce purposes, Augmented Reality, Voice Assistants, etc., choose native technologies — in the long run they'll prove to be the most effective.
Want to build a reliable application but don’t know where to start? Don’t hesitate to book a free consultation. We’re always happy to help!