- How hybrid mobile development works
- Fewer resources needed - advantage hybrid
- Imperfect touch and feel - advantage native
- A direct fix needed! - advantage native
- Hot reloading - advantage hybrid
- Access to internal APIs - advantage native
- Native modules for connection with other services - advantage native
- Better publishing control - advantage native
- Should I go native or hybrid?
How hybrid mobile development works
The alternative is to develop the app separately for each platform using languages like Python, Java or Swift. If you are planning to launch an app for both Apple's and Google's platform you'd need to run two parallel projects with two development teams. It has always been a problem, that's why hybrid solutions are in demand.
React Native is the leading hybrid mobile development framework. With React Native you write an iOS app just like you would write a web app. That's very convenient, but also may cause some problems.
React Native uses React.js library for building user interfaces, another project maintained by Facebook and the community. Unlike React.js, which uses web components for the interface, React Native uses the Android and iOS library.
React Native components are similar to HTML and styling is similar to CSS. These components relate to native iOS and Android components.
The idea sounds great, but some obstacles still make going all native the right choice in many cases. Let's take a look at the pros and cons of the two solutions.
Fewer resources needed - advantage hybrid
You only use the same codebase for the two world's most significant mobile operating systems. You need fewer developers to build and support the code, there are no separate iOS and Android teams, it takes less time, and each update works on both platform immediately. You can test and optimize the application simultaneously in both ecosystems.
Imperfect touch and feel - advantage native
With one codebase come some problems. It is impossible to link the iOS and Android components directly 1:1. The two platforms compete with different design guidelines and UX module behaviors. Google and Apple want to be different since they are looking for arguments in favor of their platform.
At times hybrid solutions don't look as smooth as native ones. However, even if the two platforms share just a part of your app's code, it brings substantial savings.
A direct fix needed! - advantage native
At times React Native team have to write some platform-specific code. This may be a problem if nobody on the team has any experience with native iOS or Android development.
Hot reloading - advantage hybrid
The developers' tools for iOS and Android (Xcode, Eclipse and Android Studio) require a time-consuming building time. At times when you are making small changes in a complex app, you have to wait long to see the result. With hot reloading in React Native let you introduce changes just to the data or screen you are working on. There are also many auto reloading mechanisms available.
Access to internal APIs - advantage native
It's easier to integrate the camera, GPS, touch ID, accessories (such as Apple Watch) and other elements when using natural solutions. If your app is focused on perfect integration with some key APIs, you may consider choosing one platform for a start and go native.
Native modules for connection with other services - advantage native
As I wrote before, you have to consider writing some native code when developing a React Native app. This is necessary when you want to connect your app with the native modules or external services.
Better publishing control - advantage native
Publishing an app may be challenging. Especially in AppStore, but also in Google. That is why you need people with some native development expertise in your team.
Should I go native or hybrid?
It all depends. You have to answer some key questions.
Do your customers prefer any of the two platforms? Would you like to launch an iOS or Android app first? Is perfect integration with some key modules (camera, GPS, etc.) essential for your product? Are you entering a competitive market with flawless UX and UI?
If the answer to these is "yes," maybe you should consider going Android or iOS native.
Do you want to reach all the devices? Are mobile apps just a part of your product? Are you developing a web app for desktops and laptops as well? Do you want to build your app fast?
If the answer is "yes," React Native is the solution for you.