When Cross-Platform Mobile Development is Not of Use [Real Data from 100+ Projects]
In the general case, cross-platform mobile development technologies can't be used for the iOS & Android part due to the need to use low-level APIs.
It’s important to get the principle:
Cross-platform apps are based on development through the iOS & Android system at the same time. On a surface level (with easy things) iOS & Android are pretty similar, so that’s why it’s possible to develop straightforward & simple apps with it - you won’t face any issues with the development of the chat, feed, profile, etc.
The more we go down with the development to low-level stuff (certain technologies & functionalities that have different implementations on iOS & Android) the harder it’s to have them working in the right way for cross-platform application. Amongst them are:
Bluetooth & Wi-Fi 3rd party devices connection - cross-platform technologies are capable to do it on a basic level, when we dig a bit deeper into connection management, battery work then we face major issues with them;
Intensive image & video processing - diving deep into the native video & image processing you don’t have an option to cross-platform the usage of these functionalities - the structure of the work with frames, image filters & videos is different for the iOS & Android and that’s why there is no option to adopt this part of the functionality in cross-platform development tools;
Multithreading functionalities - most cross-platform mobile development technologies are web-based and not providing sufficient management of multithreading functionality - there is no functional management of multithreading in React Native which leads to bad user experience as well since we’re not capable to manage main UI thread effectively as within native development through Swift or Kotlin;
Intensive battery management - battery management is essentially different for iOS & Android platform, that’s why when we are diving deep into how the app should drain battery while in different stages of performance cross-platform technologies can’t handle it properly;
Performance & memory management - to test out the application performance, memory leaks & memory management we can only use native development environments (Xcode for iOS & Android Studio for Android) - there are no options to test performance & memory usage through cross-platform development - so in any case, if we would develop a cross-platform application we’d have to perform those tests while launching the app in the native development environment - and usually, you need 2 more native developers for that;
Intensive location usage with background updates - you won’t have any issues with default & straightforward location usage. However, when there is a task to implement location usage with background setup & manage it carefully in terms of accuracy & battery usage - cross-platform can’t cope with something like this as well since we need to use low-level APIs & essentially background setup for the iOS & Android is different and even more extensive on the Android;
3rd party SDKs implementation - when working with 3rd party services that are providing SDKs to ease the implementation of their API most of these libraries are going to be provided for native iOS & Android development and don’t have support for any cross-platform technologies. In some cases it’s possible to write a custom API integration because this particular integration is easy, however, if there is an SDK for the product there might be certain security setups or the provider of API can even only give you the SDK & not the direct access to the API requests;
Platform-specific native frameworks integrations - speaking of HealthKit & Google Fit - they serve the same purpose for iOS & Android platform and can be integrated into a cross-platform app on a surface level, but if we dive a bit deeper we face many issues with fetching correct data & working with them - and through the native development their integration takes nothing more than several hours & you are good to go;
User experience, design adoption & native elements usage - design for the iOS & Android should be different - those platforms are different and have a set of native elements that differ a lot. Animations, user experience solutions & the overall app look should also be different - you won’t please iOS-user giving him an Android user experience & vice-versa - and that’s a huge downside of using any cross-platform development whatsoever.
Each technology has its own field of application & it crucially important to pick the right one during the project planning stage - right technology in place saving hundreds of thousands of dollars during the development.