Over the past decade, mobile application development has undergone a remarkable transformation. Since the launch of the first device to combine the functionality of a mobile phone and a handheld computer – the IBM Simon – virtually every aspect of the mobile ecosystem has evolved. Platforms enabling third-party developers to build applications have emerged, while app stores have made software distribution significantly more accessible. At the same time, the review processes introduced by these stores have improved security standards and increased users’ trust in the applications they install.
Computing devices, including smartphones, have also experienced extraordinary technological progress. As technology continues to evolve, so do users’ expectations. Today’s mobile applications are expected to do far more than simply fulfil their functional purpose. They must be intuitive, responsive and visually appealing, while delivering an experience that not only helps users accomplish everyday tasks but is genuinely enjoyable to use. Achieving these goals depends not only on the quality of implementation but also on a series of strategic decisions made long before development begins.
One of the most important of these decisions is the choice of technology. Until relatively recently, this was largely a technical consideration. Today, however, it increasingly involves business factors such as development and maintenance costs, the availability of skilled developers, scalability, and the long-term viability of the chosen technology stack.
Mobile application development is more than writing code
The development process begins long before the first line of code is written. It starts with an idea. Before implementation can begin, a number of business and architectural decisions must be made, each of which has a direct impact on the project’s long-term success.
Business analysis
The first stage is business analysis, during which the project’s objectives are defined, user needs are validated, and the competitive landscape is assessed. This provides the foundation for defining the scope of the Minimum Viable Product (MVP) and establishing the product’s future development roadmap. Such an approach enables organisations to validate ideas more quickly and evolve the application based on genuine user feedback rather than assumptions made during the planning stage.
UX/UI Design
The next phase focuses on user experience. Once the required functionality has been identified, attention turns to how it should be presented. A carefully designed user interface and intuitive user journeys have a significant influence on how the product is perceived and, ultimately, on its success. Even the most technically robust application is unlikely to succeed if users do not enjoy interacting with it.
Architecture design and technology selection
Only at this stage are decisions made regarding the technology stack, application architecture and implementation approach. Although these are technical choices, their impact extends well beyond software development itself.

By the end of this phase, all the information required to begin implementation efficiently and confidently should be in place.
What options does modern mobile development offer?
Choosing the right technology is increasingly becoming a strategic business decision rather than one based solely on technical considerations. In addition to the business factors discussed earlier, organisations must also consider both the initial development costs and the long-term costs of maintaining the application.
Today, there are several approaches to building mobile applications, each offering its own strengths and trade-offs. The most suitable option depends on the project’s objectives, technical requirements and long-term product strategy.
Native apps
Native applications are developed separately for each platform using the official programming languages supported by the respective operating systems. For Android, these are primarily Kotlin and Java, while iOS applications are built using Swift or Objective-C.
Today, the vast majority of new native applications are developed using Kotlin and Swift. Both languages are actively maintained and officially recommended by Google and Apple respectively. Native development continues to offer the highest levels of performance, unrestricted access to platform-specific capabilities, and the best possible user experience.
Cross-platform applications
An alternative approach is to use a single codebase to develop applications for multiple platforms. This reduces code duplication, accelerates development and simplifies long-term maintenance. Among the most widely adopted cross-platform technologies are the following:
| Flutter | Flutter is an open-source framework developed by Google and built around the Dart programming language. It enables developers to build mobile, desktop and web applications from a single codebase. Flutter is particularly valued for its high performance, expressive UI capabilities and rapid development workflow. |
| React Native | Developed by Meta, React Native is based on JavaScript and React. Its popularity stems largely from its extensive ecosystem, strong community support and the ability to leverage existing web development expertise when building mobile applications. |
| Kotlin Multiplatform | Kotlin Multiplatform is a JetBrains technology built around Kotlin – the same language officially recommended by Google for native Android development. It enables developers to target Android, iOS, desktop and web platforms while sharing selected parts of the codebase. Its distinguishing feature is the flexibility to combine shared business logic with fully native implementations wherever platform-specific functionality or user experience is required. |
| .NET MAUI | .NET MAUI is Microsoft’s successor to Xamarin and is primarily adopted by organisations already invested in the Microsoft technology ecosystem. |
Web applications and Progressive Web Apps (PWAs)
An alternative to applications distributed through app stores is offered by web applications and Progressive Web Apps (PWAs), which run directly in a web browser. Their greatest advantage is the simplicity of deployment: users do not need to download anything from an app store, while updates become available immediately once deployed to the server. PWAs also allow users to add applications to their device’s home screen and, in many cases, provide limited offline functionality.
These benefits, however, come with important trade-offs. Compared with native applications, web-based solutions generally offer lower performance and more limited access to hardware features. Integration with certain platform-specific APIs can also be challenging, while application behaviour may vary depending on the browser in which it is executed.

Kotlin – from a Java successor to a multiplatform language
Kotlin was created by JetBrains as a modern programming language fully interoperable with Java while addressing many of the limitations developers had faced for years. From the outset, the project focused on improving developer productivity, making code more concise and readable, and reducing the likelihood of errors at compile time.
One of Kotlin’s defining features is its emphasis on safety. Mechanisms such as null safety help prevent one of the most common sources of runtime failures by eliminating many null reference errors before the application is even executed. Combined with its concise syntax and seamless interoperability with the Java ecosystem, these capabilities quickly established Kotlin as a popular choice not only for backend development but also for mobile applications.
How Kotlin decame the standard for Android development
Although Kotlin was not originally designed specifically for Android, it gradually evolved to address the particular requirements of mobile application development. Today, it is widely adopted across the Android ecosystem and continues to evolve with a strong focus on mobile development, making it one of the most important languages used for building Android applications. The turning point came in 2017, when Google announced first-class support for Kotlin as an official language for Android development. Since then, Kotlin has become Google’s recommended language for new Android projects, gradually replacing Java as the preferred choice for development teams.
This was not simply a strategic decision by the platform owner. Kotlin addressed many of the challenges Android developers had faced for years. Its modern language design enables developers to write shorter, cleaner and more expressive code, while built-in safety features help eliminate many common programming errors during development. The result is code that is easier to understand, maintain and extend – qualities that are particularly valuable in medium- and large-scale commercial projects expected to evolve over many years.
One of Kotlin’s greatest strengths remains its complete interoperability with Java. Both languages can coexist within the same project, allowing organisations to modernise existing applications without the cost and risk of a complete rewrite. Migration can be carried out incrementally: new modules and features can be developed in Kotlin, while legacy Java code remains unchanged until there is a clear business case for replacing it.

This ability to evolve projects gradually is one of the reasons Kotlin has become such an attractive choice for both greenfield development and the modernisation of existing software systems.
Kotlin Multiplatform
As Kotlin continued to gain popularity and mature within the JVM ecosystem – which had long promoted the write once, run anywhere philosophy – the next logical step was to extend the language beyond a single platform. This led to the introduction of Kotlin Multiplatform, enabling developers to share code across applications targeting multiple operating systems, including mobile platforms. When Kotlin Multiplatform Mobile (KMM) was first introduced, several cross-platform frameworks already existed, each with its own strengths and limitations. What distinguished KMM was its philosophy of sharing business logic while keeping the user interface fully native. This approach was designed to preserve the performance, responsiveness and user experience expected from native applications, while reducing development time and lowering maintenance costs.
Over time, KMM evolved into the broader Kotlin Multiplatform project, extending code sharing beyond mobile applications to include backend services, desktop software and web applications.
JetBrains focused on making integration with native platform code as seamless as possible. As with Kotlin’s adoption for Android, this enables organisations to introduce the technology gradually into existing projects rather than requiring a complete architectural overhaul. It also provides a future-proof path for long-term application development. The ability to combine shared modules with native implementations wherever necessary removes many of the compromises associated with traditional cross-platform frameworks. Developers can decide precisely which parts of an application should be shared and which should remain platform-specific, allowing them to take full advantage of each operating system’s native capabilities without sacrificing productivity.
Compose Multiplatform
The next major milestone in the Kotlin ecosystem is Compose Multiplatform, a UI framework developed by JetBrains that enables developers to build user interfaces for multiple platforms using Kotlin.
When combined with Kotlin Multiplatform, Compose makes it possible to share not only business logic but also a significant proportion of the presentation layer. As a result, development teams can build applications where most of the codebase is shared across platforms while still retaining complete flexibility wherever native implementations are preferable. This allows teams to determine the appropriate level of code sharing based on the specific needs of the project, rather than adapting the application’s architecture to the limitations of a particular framework. The combination of Kotlin Multiplatform and Compose Multiplatform offers a level of flexibility that has become one of Kotlin’s strongest competitive advantages in the cross-platform development landscape.
Is choosing the right technology ever straightforward?
Selecting the right technology is a long-term investment influenced by numerous technical and business considerations. Rarely is there a universally superior solution, which makes choosing the most appropriate technology stack a challenging decision. Before making that decision, it is worth considering several key questions:
- Is the project intended to evolve over the long term?
- How complex is the application?
- Does it require native platform integration, either in the MVP or as part of future development plans?
- How important are the following factors, and how would each technology compare in these areas?
- Performance
- User experience (fully native versus a consistent cross-platform experience)
- Speed of development
- Initial development costs
- Long-term maintenance costs
- Long-term vendor and community support
- How mature is the technology’s ecosystem, and how readily available are experienced developers?
- What is the long-term direction of the technology itself?
- Will the project eventually include web or desktop applications?
- Does it target both Android and iOS?
- If Android is the initial platform, how important is the ability to add an iOS version efficiently in the future?
- If multiple platforms are planned, should they all be released simultaneously, or is it more valuable to launch a single platform first and expand after validating the product in the market?
Answering these questions provides a much stronger foundation for selecting the technology best suited to the project’s objectives.
Ultimately, every technology choice represents a balance between performance, cost, delivery time and long-term flexibility. This is precisely why solutions that combine multiple approaches continue to gain momentum. Kotlin is an excellent example, supporting both fully native Android development and a gradual transition towards a multiplatform architecture whenever business requirements make such an evolution worthwhile.
Summary
Modern mobile application projects increasingly demand a combination of high performance, seamless integration with platform capabilities and an outstanding user experience. Most are expected to evolve over many years, making maintainable code, architectural flexibility and sustainable long-term development essential considerations from the very beginning.
These qualities, combined with Kotlin’s versatility, make it one of the strongest choices available today for both native Android applications and multiplatform projects.
For native Android development, Kotlin is now Google’s recommended programming language. Compared with Java, it offers a safer language design, more concise syntax and significantly improved readability. Thanks to its complete interoperability with Java, Kotlin is equally well suited to new projects and to the gradual modernisation of existing applications.
In the multiplatform space, Kotlin Multiplatform distinguishes itself through its exceptional flexibility. Rather than forcing teams into an all-or-nothing approach, it enables them to share only the parts of the application that make business and technical sense, while retaining native implementations – including the user interface – where they deliver the greatest value. This provides an effective balance between development efficiency, application quality and long-term maintainability.
This does not mean Kotlin is the right solution for every project. However, for applications expected to scale, evolve and remain in production for many years, it frequently proves to be one of the most balanced choices available – from both a technological and a business perspective.
At Infinity Group, we design and develop mobile applications by selecting technologies that align with our clients’ business objectives and long-term product strategies. If you are considering a new mobile application or planning to modernise an existing one, we’d be happy to help you evaluate the available options. Together, we can identify the technology best suited to your business needs while achieving the right balance between development costs, delivery time and future scalability.
