Cross-platform or Native?
Should one develop a general app that works for both iOS and Android? Or a more customized app for each operating system?
The boring answer to that question is: It depends.
To try to bring some clarity to the issue, I think we should ask ourselves the questions "for whom do we choose technology?", "what are we going to build?" and "who will use the app?".
For whom do we choose technology?
The first thing we need to be clear about is that the end user doesn't care at all how an app is made. So for whose sake do we choose which technology to use to build the app?
For the client's sake, we choose technology based on cost and quality. Simple. Or is it? Unfortunately, the cost cannot be calculated as simply as:
Native = 2nd developer
Cross-platform = 1st developer
Native might be done by one developer while Cross Platform might require three (React Native + iOS + Android). The above calculation can of course be correct but it depends on factors such as the complexity of the app and the developer's knowledge of the respective platform.
Another factor to consider is how easy it is to find new developers. That is, how large the community is around the technology. The technology might be the best in the world, but that doesn't help if only a few people know it.
What shall we build?
What kind of app are we going to build? Does the app have high security requirements? Will it be processor intensive?
If the app is going to use specific platform-dependent technology (e.g., AI, AR) or if a central part of the app relies on certain hardware that may vary between platforms, one should consider whether it is worth writing it in React Native. It very well might be, but the risk is that there will be too many 'special cases' per platform.
When writing an app in React Native, one often uses multiple third-party libraries (dependencies) which in turn use others. This can result in not having complete insight into the code being used. The problem can naturally occur in an app written entirely in Swift or Kotlin as well, but usually, one does not rely on code written by a third-party developer to the same extent.
Who will use the app?
As part of our process when selecting technology is to find out who the target audience is. Will the app be used by iOS or Android users or both? Most often, the answer to this question is: both.
Since we aim to work towards an MVP (Minimum Viable Product) where we create an app that only includes the most fundamental functionality, we prefer to focus on one platform first, which is often iOS because then we do not need to consider multiple manufacturers. This also applies if we choose to write the app in React Native.
Summary
- Do you have high security requirements (e.g., banking, judiciary, or healthcare)?
- Will you want to make use of AR/AI or any other specific technology?
- Do you have high performance requirements?
If the answer to the above questions is Yes, it suggests that you need a native app. Otherwise, you probably want an app written in React Native.