Unlike with the catchy title of the article, let's try to avoid the "something vs. something" cliche and look at the dilemma from the business and tech perspectives. This way we will figure out the most important cons and pros, basing on both approaches features and nuances. The material contains a short overview of the trending cross-platform solutions, comparative thoughts and will traditionally end with summing everything up.
First, let's discover what are native and cross-platform development approaches. Native mobile app development involves building apps for particular mobile operating systems (OS). For example, if you intend to build an application for iOS with native tools, app developers will use programming languages Objective-C or Swift. Developing for Android they will use Java or Kotlin. Cross-platform mobile app development, on the other hand, is purposed to cover several platforms with a single technical solution. What are the popular players in the cross-platform market?
Flutter is an open-source UI software development kit created by Google. It is used to develop applications for Android, iOS, Linux, Mac, Windows, and the web from a single codebase. Flutter has taken a step forward to effective UI and animation handling showing fair good results compared to competitors. It has a pretty cool app build time, which can decrease development time in the long run. Overall, Flutter is a relatively young technology and still has some bugs. They're not so many professional and experienced developers in the market, and finding one can be challenging. The Futter community is growing and Google spends tons of money for its promotion, which is a positive sign promising a bright future for the technology.
Xamarin is an open-source mobile app platform owned by Microsoft, using .NET technology stack. Xamarin is unique in its own way as a product that works directly with the native OS API. It supports a huge number of assembly libraries and services from Microsoft and plenty of available developers in the market. Microsoft claims a 30% reduction in development budget costs but it smoothes out by time-consuming debugging for Android and iOS platforms. The technology exists for 9 years already and has gathered a massive community along with solid documentation, which means it stands on firm ground.
React Native is a cross-platform solution for developing WebView-based mobile apps owned by Facebook. WebView is a component that allows you to use a basic stack of HTML, CSS, JavaScript. The framework will also allow you to supplement your API with modules at the native level using native mobile OS languages. Unlike Flutter, React Native uses a so-called bridge between JavaScript and native platforms, which is a bottle-neck having a negative impact on animations and UI responsiveness speed.
Cordova is an open-source mobile application development framework owned by Adobe Systems. Like React Native, it wraps an HTML/JavaScript app into a native container that can access the device functions of several platforms. This can be helpful for products that are rarely fundamentally updated. E.g, for organizing catalogs based on ready-made CRM that provide content for existing web apps. As for downsides, Cordova posses the common cross-platform trouble - poor UI and animation performance. The more complicated data models are the slower Cordova-based solutions work.