Disputes over which is better and more profitable – native or cross-platform development – have been going on for more than a year. This question is especially relevant when you need to build a mobile application. On the one hand, the idea to develop one application for all platforms can be very tempting, but on the other hand, this approach may not have the best effects on user convenience, appearance, functionality and speed. We have prepared a brief overview that will help you understand the fundamental difference between these two approaches, and then decide which one to choose for your application.

Native app development

First, let's talk about native development. To put it simply, for every platform, there is a native language: for Android it's Java, for iOS - Swift or Objective-C, for Windows Phone - C # and so on. For each native language, there is a set of technologies and frameworks.

Initially, this method was used to develop applications that are "embedded" in the device - browser, alarm clock, gallery, music player etc.

Pros of Native development

Performance and speed. The application is built for a specific platform, so on that platform, it will work as efficiently as possible. Such a service effectively uses the battery and the memory of the smartphone. The code works faster, and new functions are integrated quickly and easily. It is also easier to implement gestures, multi-touch and tracking of geographical location. User Experience. If the client is used to the interface of Android, then it will feel uncomfortable when using iOS. Designing a native application will give users more confidence and an intuitive understanding of both look and functionality. Access to Software and Flexibility in Implementation. The application benefits from full access to the services and functions of the smartphone (i.e., databases, geolocation, camera, etc.). Unlike the limitations in constructing an interface and the complexity of the visual effects imposed by the framework for cross-platform project assembly, in the case of native development, you can implement everything that the technologies of a mobile operating system can do. Ensuring reliable data protection is only possible with native development, as it is connected with mathematics, and such operations require the most efficient use of hardware resources. Convenience of testing. This development style easily controls application performance. If the application consumes more memory than expected, or more CPU resources in the testing process, this is immediately apparent. Availability and support from app stores. Users will be able to download the app from their "native" stores, such as the App Store or Google Play. Also, shops are interested in users receiving high-quality products and therefore do not miss projects with low performance and quality, which is more likely when using cross-platform development. Moreover, among the applications that are in the Featured sections of the App Store and Google Play, there is not one that is made using cross-platform technologies, except for game projects in which the interface is not systemic. In the market, there are a large number of Android devices, and adjusting the layout design for all of them is more effective through the use of native development. Use of the latest technology. The new software and hardware functionality provided by the device manufacturers and the OS is available for implementation immediately after the release of the corresponding updates. In the case of cross-platform development, for implementation of such functionality, it will be necessary to wait not only for the release of a new version of the OS , but also to update the corresponding framework. When there is support for certain new features and whether it will appear at all is impossible to predict.

Cons of Native Development

The speed of development. If you want to embrace If you want to embrace the app for both iOS and Android it will take more time, as the process involves the creation of two separate applications. Development costs. Separate development for each platform requires more staff, which leads to more of an expense. Maintenance and support. When working with the application, you need to constantly look for and fix bugs, as well as implement updates. For two platforms, it takes twice as much time and resources.

Cross-platform Development

In the native approach, if the same application is developed separately and for iOS and for Android, then in the cross-platform approach, everything is developed at once. The application will be able to work on all platforms. The programming languages are standard, as though you were developing a website - HTML and CSS.

There are three main ways to develop a cross-platform application: do it "manually" by writing C ++ code and wrappers for different platforms, using one of the specially developed technologies (Unity 3D, Xamarin, Ionic, React Native, PhoneGap is also known as Apache Cordova, Appcelerator Titanium and others) or use HTML5 + JavaScript.

Pros of Cross-platform Development

Speed of development and cost reduction. Unlike native development, the application is developed only once for all platforms. Furthermore, you only need half as many programmers to be involved in the project. The designer only does one set of graphics. This reduces costs and shortens the creation time, which makes the application cheaper. Service and support. The cycle of developing a cross-platform application is simpler. If you need to fix something or update it, it's done right away for all platforms. Also, these applications do not have to be updated through the store; they can be updated along with updates on the server side. Use the mobile version of the site. Most cross-platform solutions use the JavaScript family of languages, so if you already have a mobile version of the site, a significant portion of the code and materials can be used in the application without having to make changes. Unified application logic. The embedded logic in the application will work in the same way for all platforms. However, there is often a problem with the user experience. Written and debugged logic will contain potentially fewer errors and discrepancies in your work: you do not have to do double or triple your work to find problems on each platform.

Cons of Cross-platform Development

The speed of development and cost reduction. Despite the fact that, according to the ideology of development, this item is marked as a plus, practice shows that implementation under two operating systems results in a lot of bugs. This increases the time limit for eliminating errors. The UI is displayed in different ways and the adaptation time is also increased. Low productivity. The most notable problems occur with animation, clicks and scrolling - the application may stop working. The user interface is developed in HTML, but you have to spend months to achieve top performance on your native platform. In practically any dispute over the advantages and disadvantages of cross-platform development, you will hear the argument that cross-platform applications are much slower than their native counterparts. This is true, and also not true. For example, code written in C ++ and running on Android using NDK will work even faster than native applications. On the other hand, if you use, for example, PhoneGap, the application starts working on the principle of "Houses that Jack built": PhoneGap calls JS, which accesses Java, which runs on a Java machine that works on a real phone. Of course, the speed of speech will be reduced. User experience. It is necessary to develop an interface that would be intuitive for iOS users and Android. Otherwise, the application built according to the IOS Human Interface OS Manual will be inconvenient to Android users and vice versa. In the end, you will spend more time, and therefore more money, on improving the user experience. Appeal to the "native". The standard solutions for native apps are still not solved in cross-platform development. Therefore, to solve the functional problems, one must often attract native developers.

This picture will help you visualize all of the above

Which one to choose: Native app development or Cross-platform app development

In order to demonstrate these types of development in practice, we will discuss two examples:

The popular puzzle game 2048, for example, is better developed as a cross-platform application. Developed on web technologies, it will be launched everywhere: you can use PhoneGap for mobile platforms, Electron for Windows, Linux and Mac, and for websites, use VK and Facebook applications. This process doesn’t take much effort – the application will launch directly. All you need is to build the program with different packagers and create an icon for each platform. Once this is done, the application cannot be distinguished from a native app! At the opposite end of the scale is, for example, the graphic editor Sketch, which has gained a huge amount of popularity with UX and UI designers (we also use it in Appus!). Currently, it exists only for OS X, and the question of when it will be released for other platforms is asked so often that it even appears in the FAQ.

Most applications, of course, lie somewhere between these extremes, so a thorough analysis will be required to choose one of the approaches. Try to evaluate, for example, such aspects as:

What percentage of your users will be scared away, for example, by an unusual kind of button or the non-use of the top menu on OS X?

Will these be the users that pay for your application?

There are many functionalities in the application that will require significant improvements for one or more platforms.

Of course, only A / B testing can give accurate results, but even after thinking about it, you will do a lot to select the approach to development.

We advise you to approach this issue, first of all, by taking into account the technical characteristics, and not the consumable component. In some cases, choosing cross-platform development will result in you significantly overpaying in the long term. The graph clearly shows how the project costs can increase depending on its size and the necessary time for its development:

Analyzing the above information, you can reach the following conclusions:

You need a native application if: · Your application requires free access to all resources and services of the phone; · You want to get the most responsive application; · The application must be able to work offline; · You want a complex application with a wide functionality; · Your application should make maximum use of the hardware parts of the device. You need a cross-platform application if: · You are ready to come to terms with low responsiveness; · The application does not involve complex animation and does not deal with calculations; · The application needs constant access to the Internet to download content; · You need to quickly enter the market for testing ideas; · You have a website and you want to make an app for it at a minimum price and in the minimum time.

Thus, from a technical point of view, from the perspective of the quality of the interface created, native development has far more advantages. However, there are areas in which cross-platform technologies are justified:

Game sector;

Test projects.

The overwhelming majority of modern games are written on cross-platform technologies, which greatly accelerates development without sacrificing quality. In this case, special graphical frameworks are used (the most popular is Unity 3D). If a project needs to be done quickly for any tests, the situation requires that the work of the project be done on several platforms at the same time; in this case, the cross-platform implementation can be the optimal solution.

If the project is not gaming-related, or is aimed at long-term development and requires a positive impression from users, native development remains the best and only option.

Good luck with your project!