Choosing between cross-platform development and native development for iOS and Android is not just a technical decision, it is a strategy that can determine the future of your mobile product. In this article, together with mobile app developer Ilya Zadyabin, we will look at key aspects of this choice, including cost and development time, performance, scalability, and the latest trends in the world of mobile development to help you make the right choice.
Key selection criteria
First, let's focus on the key selection criteria.
1. Cost and timing of development
The key factor influencing the choice between cross-platform and native development is cost and time. Cross-platform technologies allow you to develop applications faster and cheaper, as developers do not need to write separate code for each platform. This is ideal for startups and companies with limited budgets that are looking to get to market quickly. However, cross-platform solutions may require additional optimization and fine-tuning costs for each platform, especially if the app uses complex features or device integration.
For some startups, it's critical to test an idea and get funding as quickly as possible. In such cases, companies resort to a mix of no-code and cross-platform tools – for example, Flutter Flow. Such tools allow you to create a cross-platform prototype without having a development team. Of course, the result is limited by the capabilities of no-code platforms, so you should not choose such solutions for large-scale and long-term projects.
The cost of development should include the cost of finding developers. It is much easier to find a programmer for iOS or Android than for Flutter or React Native. But on the other hand, you need twice as many native developers. Don't forget about testers: in the case of two different applications you often need more testers, in the case of cross-platform it is not so important to thoroughly test all the features on each platform – most likely a bug on iOS will be present on Android as well.
Perhaps your company is targeting the US market. In this case, many startups first make an app only on iOS and then do not hurry to release it on other platforms. In that case, native development will suit you just fine.
2. Performance and availability of functionality
Performance is an area where native applications often outperform cross-platform applications. They are better optimized for specific devices, resulting in faster performance and stability. Native apps also provide easy access to device APIs and functionality, which is especially important for apps that utilize complex hardware interactions such as AR, VR, or graphics-intensive applications. Cross-platform solutions may experience delays and limitations in accessing new OS features.
3. Scalability and future updates
Maintaining and updating cross-platform applications is usually easier and cheaper because changes are made to the same code base. This can be a significant advantage for companies that plan to frequently update their application or expand its functionality. On the other hand, native apps require separate work for each platform, which can slow down the update process and increase its cost.
Some companies don't want to depend on marketplaces like Play Market or App Store because of the inconvenience of working with them. Slow app review, lots of rules, drawn out process between developing a new feature and getting it to the user. So if you want to give the user access to your app by bypassing the marketplaces, you can use PWA (Progressive Web Applications). This is essentially a web site that can be installed on your system and used like a normal application. It's a young technology, so there may be issues when interacting with your device. But if your goal is, for example, to make your product store easier to access from your phone, you can use PWA without having to hire a large team of mobile developers.
Here are real examples of companies that have chosen between these approaches.
One of the most famous cross-platform failures was detailed in an article by Airbnb. The author notes that he is describing the state of the technology as of 2017, and that different technologies may be appropriate for each company depending on the company's challenges and size. Airbnb used React Native to improve the quality of its product. Although the company eventually abandoned React Native due to unique business and technical challenges, the experience with React Native proved valuable as many of the best practices and tools developed were transferred to native applications.
Instagram integrated React Native into its existing push notification app. This reduced the team required to develop and maintain the app and increased the speed of new features development.
In the UberEats practice, React Native was chosen for a solution to enable restaurant dashboard features on tablets. The team was already actively using React for the web, so it was decided to go cross-platform. This ensured faster deployment of updates and a more efficient product development process.
Microsoft uses React Native to develop Office Suite (Word, Excel, PowerPoint, Outlook) for mobile devices, demonstrating the framework's potential to handle complex, data-rich applications and provide consistent performance across devices and OSes.
Alibaba used Flutter to build Xianyu, the largest used goods marketplace in China. Flutter was chosen for its high performance and significant increase in development speed, which was critical for the marketplace.
Yandex used Flutter in the development of the Yandex.Go app for couriers. The app has complex functionality, including location tracking on a map. Despite this, Yandex actively uses the cross-platform and has even written its own library for maps.
Ozon used Flutter to create an application for order delivery points. However, due to the rapid growth of the project and the need for more complex functionality, the company subsequently switched to native development.
Reflectly migrated from React Native to Flutter to create their AI personal diary, which quickly became popular due to its minimalistic design and rich functionality. According to the CTO it was risky to migrate 500,000 users to the new technology, but they are happy with the result.
BMW chose Flutter to expand their product development in the mobile sector, quickly deploying more than a dozen versions of the MyBMW app with hundreds of different features. BMW also has the second largest Flutter team after Google.
The Surf team created the first banking application on Flutter in Russia for Rosbank. The bank already had an app, but customers were not actively using it, and the speed and cost of development did not suit the bank, so the decision was made to switch to a more scalable cross-platform solution.
Advantages and disadvantages of a cross-platform approach
Using cross-platform can reduce development costs by 30-40% and development time by half, as only one development team is required, rather than separate teams for iOS and Android. Cross-platform apps provide a similar experience for users on different devices, allowing you to reach a wider audience without having to choose between iOS and Android. Such solutions allow you to release updates faster and simultaneously to both platforms, speeding up the development process and improving functionality.
However, as it has already become clear from the above, some unpleasant consequences and challenges may await you when deciding in favor of a cross-platform. First of all, we are talking about performance issues. Despite improvements in frameworks such as Flutter, cross-platform applications can experience performance lags compared to native applications, especially when using the latest technologies such as machine learning or highly loaded animations. In some cases, companies may start with cross-platform development but later switch to native development to meet more complex requirements and provide better performance.
Which to choose?
It's safe to say that at this stage of cross-platform development, it will suit most businesses. It is definitely not a good idea to use cross-platform for mobile game development, because cross-platform technologies either don't have 3D support yet or are just developing it at an early stage.
Also, it's worth considering before taking on a cross-platform if your application requires the use of non-standard device features. For example, a video streaming app will be hard to fine-tune to work in the background, minimized, with the screen off. But if you have the opportunity to hire very experienced developers, you can try, as, for example, the Surf team did with The Hole app.
Another of the non-obvious limitations of cross-platforms is widgets. Whatever solution you use, you will still need to write code in the platform language and connect it to your cross-platform part. There are such possibilities, there are even ready-made libraries for creating widgets, but if the whole essence of your application is a widget that loads complex animations on the user's home screen in real time, it is better to consider a native solution.
If you're afraid to dive right into cross-platform and, on top of that, you already have two native development teams that you don't want to force to migrate to a new technology, you can use partial cross-platform using Kotlin Multiplatform.
This technology allows us to merge code with business logic from different platforms, leaving the native part of each platform for UI processing. This way we use native solutions with all their advantages, but also make development easier and faster by merging a large part of the code. The only downside: iOS developers will need to learn Kotlin, but it's similar to Swift.
The future of mobile development
A legitimate question arises – what is the future of mobile development? Can we expect cross-platforms to capture the minds of all customers and developers without exception?
Today, trends in mobile development certainly point to the growing popularity of cross-platform technologies, but native development remains an important choice for many companies. That said, it's safe to say that the future of development will involve partial use of common code among platforms, because there are no significant disadvantages to isolating business logic – the user won't even notice that you're using a technology like Kotlin Multiplatform, and it's much easier to develop and test.
As for full cross-platform solutions, they will firmly occupy a significant amount of the market, because most applications on the market do not utilize the power of devices to their full potential.
Artificial intelligence technologies have been developing for decades, but only in the last few years have neural networks "smartened up" to a level that allows them to be used as assistants or even to replace human labor.
The beginning of the year was marked by a flurry of activity by various legislators to deal with artificial intelligence. The New York Times filed a lawsuit against OpenAI and Microsoft, and the UAE created an AI council to accelerate the adoption of AI systems in critical sectors of the economy.
What should a business solution be, so that it is chosen by young people, but at the same time not rejected by older professionals? Maybe beauty will save the peace in the team, because everyone wants to work in an application that looks beautiful? It is true, but User Interface (UI) is good when it is based on User Experience (UX). If harmony between UI and UX is achieved, the product will be both beautiful and user-friendly.