Mobile application development technology
What is native and cross-platform development?
Native development means the use of original languages and tools for developing a mobile operating system.
The development of applications for ios takes place in the XCode development environment in the Swift language (and earlier in Objective-C).
When using the technology for developing mobile applications on the Android platform, the Android Studio environment and the Kotlin language were used (until 2018, the fundamental language was Java).
Each development environment contains a whole range of utilities for writing code, designing an interface, debugging, profiling (monitoring), and building applications. Both the environment and the corresponding set of utilities are created specifically for each mobile operating system and are the most convenient and powerful tools for developing mobile applications.
Cross-platform mobile application development technology involves the use of special frameworks to create an application based on the JavaScript family of languages. The entire structure and logic of the application are created using such tools (React Native, Flutter, Ionic, Xamarin, PhoneGap, etc.) in JavaScript, and then wrapped in a native launcher, i.e. integrates into the base project for XCode or Android Studio. That allows you to create project assemblies with the same logic for several operating systems.
A simple analogy can be seen in the case of personal computers: MS Word, Skype, mail agents, and calendars are natively developed applications for the desktop operating system. Everything that happens in the browser (websites, online text, graphics editors, social networks, chats, forums) is cross-platform technologies.
Advantages of native mobile app development technology

The development of a mobile application in Moscow on native technologies and languages for iOS and Android has the following positive aspects:
1. Application speed
Since the application is created using the original development tools (Xcode, Android Studio), the code resulting from the compilation of the project is optimal for this platform.
The application receives full hardware support of the device (processing of the same images is carried out by a separate processor, specially designed for this — GPU), and multithreading is used to implement complex tasks and load content in the background.
During the development process, programmers can measure the speed of all sections of the code and, if necessary, optimize them. They also have tools at their disposal to monitor RAM usage, look for possible leaks, and so on.
2. Flexibility in implementation
In contrast to the limitations in building an interface and the complexity of visual effects imposed by frameworks for cross-platform assembly of projects, in the native technology of developing mobile applications, you can implement everything that the technologies of a particular mobile operating system are capable of.
3. Use of the latest technologies and dependence on cross-platform frameworks
New software and hardware functionality provided by the device and operating system manufacturers becomes available for implementation immediately after the release of the corresponding updates.
For example, iOS 9 includes the ability to search within applications. Each of them must implement a special method that returns results for a specific search query. As a result, for those native iOS applications that implement this functionality, the ability to search for content through the system search section in iOS is available. In the same place where applications, contacts, events, and other information are searched.
In the case of cross-platform mobile application development technology, to implement such functionality, you will have to wait not only for the release of iOS 9, but also for an update of the corresponding framework, and it is impossible to predict when support for certain new features will appear and whether it will appear at all.
4. Ease and quality of testing
In addition to the tools mentioned in paragraph 1 for controlling the use of device hardware resources by an application, developers and testers have a whole range of technologies at their disposal.
Firstly, all system parameters are controlled automatically during the application operation. If an application is using more memory than expected or more CPU, it won’t go unnoticed.
Secondly, the opportunities in the wide use of unit tests — automatic testing of almost every method in the application. If some part of the application stops working correctly due to some code changes, the new version simply will not build, and the programmer will immediately see the reason.
Thirdly, ample opportunities are available for the integration of remote error monitoring systems. The corresponding functionality is built into each native project, which allows you to see the error and its cause that occurred on the device of any user.
5. Full support from the App Store and Google Play app stores
Both companies are committed to ensuring that users get the best possible experience when using applications on their respective platforms, which is currently possible.
This means that the application should look as good as possible (if the screen has a high resolution and the images are blurry, the App Store simply will not be missed), run as fast as possible (if the application displays a small list of items in 20-30 seconds, they won’t let you in either), and in general, everything should be beautiful and comfortable.
If any of these parameters are too low or not met at all, the application will not be allowed into the store. If they are not up to the mark, which is extremely difficult to achieve with cross-platform technologies for creating mobile applications, and often impossible in principle, your application will never be considered by the relevant companies for placement in special advertising sections (Featured).
Among the applications in the Featured sections of both the App Store and Google Play, there is not a single one made using cross-platform technologies. Except for game projects in which the interface is not the system.
Advantages of cross-platform mobile application development technology
The cross-platform development environment has the following positive aspects:
Fewer resources are required to implement an application for several platforms at once. That is the essence of the cross-platform technology for developing applications for Android and iOS on the Android and iOS platforms — the same code works on both platforms. Programmers involved in the project need exactly half as many. The designer makes only one set of graphics. All this reduces the number of working hours and the budget of the project.
Less development time. Due to the lack of unique interface elements and simpler technologies for developing cross-platform applications, the time to create simple products is usually less.
Simplified product update cycle. If something needs to be added to the project or some error needs to be fixed, this is done immediately for all platforms covered by the project.
In most cases, languages for cross-platform mobile application development are part of the JavaScript family of languages. Therefore, if you already have a mobile version of the site, a significant part of the code and materials can be used in the application without modification.
Using a single application logic. The logic embedded in the operation of the application will work guaranteed to be the same for all platforms. Quite often, this can be a disadvantage due to the different architecture of operating systems.
A prime example is the back button in navigation between screens. Android provides a hardware Back button for this purpose. For iOS, a swipe from the left side of the screen or a button on the left side of the navigation bar. If the button is not made at all, iOS users will not be able to go back. But in the wrong place and looking non-standard, iOS users will be unusual and uncomfortable, if you do it like in iOS. It will be unusual for Android users.
However, the logic written and debugged once contains potentially fewer errors and discrepancies in its work. So you don’t have to do the double and triple work of finding problems on every platform.
Findings
From a technical and the quality points of view of the created interface, the native technology for developing mobile applications has much more advantages. However, there are areas in which cross-platform technologies are justified. These are the gaming sector and test projects.
Modern games are written in the overwhelming majority on cross-platform technologies. This greatly speeds up development without sacrificing quality. In this case, special graphic frameworks are used (the most popular is Unity 3D).
If a project needs to be done quickly to conduct some tests, and the situation requires the project to work on several platforms at the same time, the cross-platform implementation may be the best solution.
If the project is not a game project, is aimed at long-term development, and requires a positive user experience, then it would be more rational to create a mobile application natively. Once the development method is chosen, it’s time to discuss the cost of developing the application.