Native or Cross-Platform

we will talk about three major points

1- Performance

performance is one of the main parameters to make the decision, with hybrid mobile apps performing more poorly than native mobile apps. By performance, I mean 2D mobile apps only and not 3D apps that require a 3D engine.

You always want your mobile app UI to remain fluid, even during heavy data processing to provide a smooth user experience. Because mobile processors are multithreaded, you want your mobile app UI logic to run on a different thread where the data processing is taking place. While you write a bad code the application will perform slowly on any stack, native mobile development frameworks have this capability built-in and offer APIs to fine-tune the dispatch of operations on different threads. However, web apps and hybrid apps that are built on web technologies need to run their content on an embedded web browser and performing heavy processing, such as the parsing of a large API response within the browser, causes the UI to be blocked (or, alternatively, displaying full-screen “Loading” indicators to prevent the user from interacting with the UI).

Most recent cross-platform mobile development frameworks address the performance limitations in different ways and some of them qualify as native apps when speaking in terms of runtime.

  • React Native uses the JavaScriptCore engine to execute the Javascript code and a native widget for the UI, which results in Javascript code not blocking the UI operations.
  • Xamarin compiles code ahead-of-time to ARM assembly language for iOS and the MonoVM virtual machine for Android, which sits at the same level as the JVM on the Kernel.
  • Flutter compiles to 32-bit and 64-bit ARM code for iOS and Android.

All the approaches above have some limitations depending on platforms, and you should carefully look on the limitations page when designing your mobile app to see whether you have such complex requirements where a certain framework may not work for you.

2- Coding

  • Simply if you are IOS developer will write your code with objective C or Swift, and if you are an android developer you will write your code with Java or Cotlin .
  • Cross-platform (coded) apps are developed in programming languages and tools not included in the development tools offered by the company that develops the platform and the OS that they run on. This is a broad categorization, including stacks and frameworks like Ionic, Xamarin, React Native, Apache Cordova, Flutter, and more.

3- OS updates, support, timing, and effort

This aspect means addressing the question “What happens when a new OS version is released?” and addressing some related questions such as “How quickly will my framework support the latest features?”

Native languages and tools will be supported from the day of release, while cross-platform tools will inevitably have a delay between the stable OS release and support of the same features within the cross-platform framework itself. You can address this tradeoff by considering these questions: “How vital is it for your app to support new features on launch day?” “Are you aiming to be on stage at Apple’s or Google’s conferences to display upcoming app features?” If the answer to these questions is yes, you will prefer a native stack.

You also need to consider the likelihood that the newest OS release introduces either API changes that require code modifications for the app to run efficiently in the most recent OS update or changes in the build toolkit that make builds fail. For example, when Xcode 10 was released, it included a new build tool that prevented Cordova-based Ionic Framework apps from being packaged properly on iOS. Although the resolution is often simple (in this case, you had to add a “build flag”), it still required work from our team’s DevOps specialists to identify the issue and seek help within the community for a resolution. Again, if you choose a cross-platform stack that has wide community support or vendor “push,” this trade-off is mitigated.

let’s ask some questions to decided native or Cross-platform

1- What is the expected lifetime for your app?

2- How will you support your app after its release?

3- How complex is your app?

by answering this you can take the decision

Software Engineer :D