Be on the same page with us
Subscribe to our latest news
By clicking the button Subscribe you give a permission for the automatic sending of e-mails

Native vs. cross-platform mobile app development. Cracking the notorious dilemma

The mobile application market is already mature but still shows sustainable growth. According to Statista's report, worldwide mobile app revenues in 2019 amounted to 461 billion US dollars and by 2023 are expected to grow twice. Entering this market means a lot for both enterprises and ambitious startups. Obviously, before conquering the market and filing the desirable niche, anyone should consider developing an app first. Here comes the dilemma, what approach to choose: native or cross-platform development.

In investigating the topic, we will rely on Solvd engineers' expertise. Today our experts are Dmitry Khotyanovich (Mobile Software Engineer), Maxim Golokhov (Android Team Lead), and Alexander Liashchuk (iOS Developer).
September 25, 2020
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.

Maxim Golokhov
Android Team Lead
Two heads are better than one. Solving a business problem is an engineering task first of all. Several developers, even working on different platforms, will be much more effective and pragmatic because of their collaborative work at mutual engineering issues.

Same problem + different views = better solution.
Now let's dive into certain cases and break down how cross-platform and native solutions perform themselves in different circumstances.
Performance metrics
If you need to achieve high responsiveness of the application interface, then the best solution is native tools. The application will respond to taps instantly, and there will be virtually no delays in animation, scrolling, and data input/output. Also, as a side effect, cross-platform solutions are larger. Sometimes the difference can be up to several times! This is due to the large number of resources included in the application package that is not always needed and may never actually be used.
MVP development
Business startups are interested in reducing budgets and time-to-market when developing an MVP model, therefore, they often apply to a cross-platform solution. But a growing amount of users, income, and top positions on GooglePlay or AppStore raise the stakes. There are big risks and it might be safer and more effective to manage the app by yourself rather than hand over cross-platform solutions. Therefore, one should observe transitioning from the cross to native coding or hybrid coding, which subsequently requires severe support for such a decision.

Alexander Liashchuk
iOS Developer
There is a good example proving the point, how extremely fast cross-platform development can be. I had a short eight-hour hackathon in my last place. A team of two developers (Android and Ruby) created a client-server tic-tac-toe game on Qt, and it actually worked on Android, iOS, Windows Phone, Mac, and Windows. How else this can be possible?
Shifting OS versions
Every year native programmers are faced with OS updates and, as a result, adapting the code with a new API base. Sometimes a native library switches to a new one, which forces engineers to readopt some of the software solutions. At the native level, a lot depends on the programmers' professionalism; at the cross-platform level, the risks are multiplied twice, since the cross-platform should cover all platforms and be updated on time.
Device sensors advanced features
Native development provides clear and simple access to device functions and sensors. A developer has no problem in working with geolocation, push notifications, the camera, sound, accelerometer, and other sensors. There is an opportunity for in-depth work with smartphone functions. Things like animations, building complex interfaces, and running neural networks right on devices are easier and more predictable.
Internal use
With the help of cross-platform solutions, it is convenient to organize some kind of client for internal use in a company, when the appearance of the application is absolutely unimportant, and AppStore or GooglePlay are not considered as distribution systems at all.

Dmitry Khotyanovich
Mobile Software Engineer
Summing up: The more add-on solutions, the lower product reliability. Keep in mind that every cross-platform has limitations and is based on native platform components, libraries, and APIs. This obliges engineers to understand how the platform works at the native level when solving some tricky problems. They will have to study and understand platform defects to avoid them in development. It's not for nothing that Apple and Google position their core solutions as reliable. All cross-platform solutions are written by programmers and are a kind of additional layer between platforms, which means there is always room for unexpected issues.
If you still hesitate what approach fits your mobile project most or, on the contrary, already made the decision and can't wait to implement your app, feel free to contact us. Let the development begin!