React Native FAQ
Still uncertain whether to choose React Native as the framework for your mobile app? Belitsoft will help you out. We selected and answered the most common questions arising when people consider using React Native in a project.
What is React Native?
What is the difference between React and React Native?
Developed and introduced by Facebook in 2013, React is a JS library used to create user interfaces. Concerning the question why people often confuse React and React Native, the answer is that they are very close relatives. While React is basically a library for the View part of web apps, React Native is an additional extension of React, aimed at producing mobile apps for iOS and Android. If you are a tech-savvy user who is looking for a more detailed explanation, read our blog.
Can React Native replace native technologies?
If you want to build an app that doesn’t use a lot of mobile-specific or complex functionality, React Native and its community libraries should cover most if not all of your requirements. However, if the desired features are not yet supported, developers end up writing native modules. You can also rely on open source projects to provide native bridges for you, but that does not guarantee you’re finding a viable solution.
Native modules are a way of bridging native programming and React Native code. These modules need to be written in Java/Kotlin or Swift/Objective-C depending on the mobile platform. They can’t be reused across two platforms but they aim at improving performance in computationally heavy operations like image editing or video playback. Perhaps React Native will not work for the next mobile Photoshop but it is enough if you aren’t aiming at brute-force demanding tasks.
“If you are a huge company or you are flush with cash, the old thinking was that as long as you threw enough money at native application development, you did not have anything to worry about. This is no longer the case,” Nader Dabit, Developer Advocate at AWS Mobile, said.
Facebook was facing problems with their native app that money could not fix. The app had gotten so large and complex that they were seeing compilation times of up to 15 minutes for their mobile app. This means that even testing minor UI changes, like moving something around by a couple of points, could take hours or even days. In addition to the long compilation times, any slight update needed to be implemented and tested in two completely different environments (iOS and Android) with teams working with different languages and frameworks.
Since releasing React Native on iOS and Android, the Facebook team have been improving listview scrolling performance, memory efficiency, UI responsiveness, and app startup time.
“React Native [...] leads to more concise, easier-to-understand code; fast iteration without a compile cycle; and easy sharing of code across multiple platforms. You can ship faster and focus on details that really matter, making your app look and feel fantastic,” Facebook engineering stated.
Is it possible to use React Native with an existing app written in Objective-C/Swift/Java?
Suppose you have an Android app built on Java. You want to create a version which works for iOS too, but you are low on funds and/or time. React Native will be the best choice for code sharing. Thus, you can write one version for both iOS and Android apps which saves your development team more time and resources.
“It may not be you, but many people still doubt that RN is the right tool for serious production environments, especially in the enterprise world, where applications will live for many years and you have to think on the long run, where choosing the wrong tool could cost a lot,” Juan Rodriguez, Full-stack developer, said.
However, there are many examples of how world-known companies migrated to React Native. Artsy engineering, for example, chose the approach to update their 3 years old iOS app that was created in Objective-C / Swift. The framework was useful for the company intending to support other platforms in the future without creating more teams.
Bloomberg, for its part, rebuilt the company’s consumer app for iOS and Android with React Native. The framework was considered as a first-rate tool to build native apps simultaneously for both iOS and Android platforms in comparison with other free software projects available in the modern market. By using React Native, developers modified the interactive animation by adding a parallax of images in the news feed, introduced a feature to swipe a headline to share or bookmark an article as well as allowed access to live TV or event feeds for on-demand viewing.
“React Native is the best out there,” Gabriel Lew, Senior Software Engineer at Bloomberg said. “Expect it to appear in other Bloomberg mobile apps in the future.”
For example, you developed Android native and iOS React Native apps. After some time, you decided to make some React Native functionality also available for Android. You can be sure React Native allows adding new features, screens, views, etc. to existing native apps. However, the integration steps are different depending on what platform you’re targeting. It might take some time to determine the optimal way to tie React Native and native together while preserving the performance.
Airbnb engineering introduced React Native into an iOS and Android code base in 2016. They developed, for example, Lottie - an open-source library that facilitates adding animation to native apps. The tool allows engineers to build richer animation without rewriting the code.
The above-mentioned examples show that React Native can be used by companies of all sizes from a long-term perspective. Do you still doubt? Read on top 20 case studies of migrating to React Native in our blog.
What are the key advantages of using React Native over native approach?
“Native implementation is great in theory, but practically, we need to think about productivity/code sharing/time-to-market, which is where a cross-platform framework like React Native comes in,” Keertimaan Tenneti, Senior Engineering Manager at Walmart Global eCommerce, said.
For companies that build and maintain their own apps, this approach effectively cuts the development cost in half. You no longer need separate teams for iOS and Android development. In addition, if you have a web app already written with React, you can reuse that existing code. Depending on the functionalities of your app, at least 90% of the codebase can be shared across both platforms. Since all the versions of your software are written in mostly the same code, updating and adding features becomes a lot quicker.
Further speeding up development is the existence of an open-source library of pre-built components. Thus, you don’t have to spend time writing code to add extra features to your app. There’s probably someone who has already shared that functionality with the community. As a result, experienced developers can get a basic React Native app up and running in just a matter of hours using pre-built components.
Does React Native mean you don’t need native developers?
As the React community grows, some features are already available. Thus, your team can basically apply the existing modules or, if they have necessary experience, write custom modules themselves. However, at some point during the project development, you have to get help from native coders.
After a year of using React Native in production, Facebook introduced Ads Manager - their first fully RN based, cross-platform app. The key purpose was to develop a program to let the millions of users manage their accounts and create new ads on the go.
Facebook developed the iOS version first. Adding some features posed a challenge, for example, the image editor, empowering advertisers to zoom and crop photos, or the map view, enabling them to target people within a certain radius of a location. However, native iOS engineers helped to bridge features that have become available in React Native, such as providing access to the phone’s camera roll. They also worked for bundling the app with some of the Facebook’s existing iOS libraries to perform authentication, analytics, crash reporting, networking, and push notifications.
“The React Native team developed the platform alongside our app, and exposed the native components and APIs that we needed to make it happen. Those components will benefit everyone building an app in the future,” Philipp von Weitershausen, Ex-Software Engineer at Facebook, said. “Even if we'd had to build out a few components ourselves, using React Native over pure native still would've been worth it. We would've had to write those components anyway, and they probably wouldn't have been reusable by other teams down the road.”
What makes React Native different from Ionic / Cordova / PhoneGap?
Unlike Ionic and friends, React Native doesn’t use WebView (a mobile engine that “converts” web pages to mobile apps). Whereas apps built with React Native are rendered using native components which allows for smoother animation and native look because they will conform to the standards imposed by the operating system.
“React Native brings what developers are used to from React on the web — declarative self-contained UI components and fast development cycles — to the mobile platform, while retaining the speed, fidelity, and feel of native applications,” Philipp von Weitershausen, Ex-Software Engineer at Facebook, said.
To test React Native capabilities, Ilya Pirozhenko, Full stack web developer, decided to build an Android client for LessPass password manager. Rather than storing passwords on user’s device, the app recalculates them on-demand by means of a hash function. It receives url, login and master password as an input and generates the identification number to use. Thus, the client is quite simple requiring 3 inputs and one trigger button.
Pirozhenko was satisfied with performance results but disappointed with React Native libraries. He recommends using Cordova for building simple apps that require no complex interactions with a platform. Besides, LessPass engineering used Cordova to perform the same task which has taken them 30 minutes.
“If you’re looking to build an MVP, prototype, or are not worried about the user experience mimicking that of a native app, then a hybrid app may work for you, keeping in mind the entire project will need to be rewritten if you do end up wanting to go native,” Nader Dabit, Developer Advocate at AWS Mobile, said.
If your company is looking to cut costs and speed up development time without compromising on quality or performance, React Native is just what you need. This approach allows writing a regular React-based app but with native controls, resulting in smooth performance and native user experience.
You can migrate to React Native from Java or Swift by adding extra functionality through native modules. This makes React Native a perfect fit for projects where product owners want to improve an app they already have without building it from scratch.
Articles that might interest you: