Based on our experience developing apps with clients, we’ve answered questions that will help you make the right choice between React Native and Kotlin Multiplatform technology.
What is React Native?
React Native is an open-source framework created by Facebook for building mobile applications using JavaScript and React. Developers can write code that runs on both iOS and Android from a single codebase. This framework uses a component-based structure that enables developers to build complex user interfaces by combining simple, reusable components.
This significantly speeds up development and reduces costs, as there’s no need to maintain separate codebases for each platform. Given that the technology has been around for a long time, there are pre-built components that mimic native UI components, which means they can be implemented much faster, making this a great option when development speed is crucial.
Is React Native good for cross-platform development?
React Native has been used for cross-platform development since its initial release in 2015. Initially, it supported iOS only. Later that year, Android support was added, making it viable for cross-platform development.
Here are some reasons why React Native is considered a good choice for cross-platform development:
1. One codebase - multiple platforms
React Native allows developers to write code once and deploy it across both iOS and Android platforms, reducing development time and costs. This is ideal for teams looking to reach users on both platforms, without hiring separate teams for native development.
2. Native feel
Unlike hybrid solutions that rely on web-based components, React Native renders UI elements using native components, providing a look and feel that are close to native. This enhances user experience and can lead to better app performance than other cross-platform frameworks.
3. Pre-built components
React Native has a large ecosystem of libraries and pre-built components that mimic native UI elements, which speeds up development. These components are widely tested and maintained by the community, making it easier to implement complex features quickly.
4. Hot reloading
Hot reloading makes developing easier since it allows developers to see changes immediately, making it faster to iterate on design and functionality. This is particularly valuable in cross-platform development, where UI and functionality need to be tested on both platforms.
5. Flexibility to add native modules
For activities requiring a lot of performance or platform-specific features, React Native supports the use of native modules written in Java, Swift, or Objective-C. This flexibility allows teams to optimize certain aspects of the app as needed.
6. Large community support
Developers have access to an extensive number of resources, tutorials, and third-party tools that help speed development and improve app quality thanks to the strong library environment and broad community support.
Is React Native enough for Android development?
This is one of the concerns people have when talking about choosing React Native as a cross-platform development framework. Why are there concerns for Android and not iOS?
This is because Android runs on a wide range of devices with varying screen sizes, hardware capabilities, and operating system versions. This fragmentation can make it challenging to achieve a consistent user experience, whereas iOS has a more limited number of devices and versions to support. Some Android features, such as specific Bluetooth functionalities or advanced background services, may require more complex implementations in React Native. In contrast, iOS often provides a more consistent set of APIs that are easier to access and use within the React Native framework.
However, React Native can be sufficient for Android development, but whether it is the right choice depends on several factors of the project specifics. Kotlin Multiplatform (KMP) is often better for Android development since it utilizes Kotlin, which is the preferred language for native Android apps. It prioritizes native performance, access to platform-specific APIs, and maintainability with shared business logic.
What is Kotlin Multiplatform (KMP)?
KMP or KMM (Kotlin Multiplatform Mobile) is a framework that enables developers to write a shared code in Kotlin that can be compiled and used across different platforms (iOS, Android, web). Using Kotlin Multiplatform, they share a common business logic and eliminate the need to write separate code for core features on each platform. UI components are natively adjusted for each platform to ensure the app feels right for iOS and Android users. For example, the “Settings” button is not in the same place in iOS and Android, and using KMP, developers address platform-specific UI differences, like the positioning of buttons.
What’s the main benefit for you here? You save money and time by reducing the need for a whole developer team to build separate Android and iOS applications! Less developer hours are needed and you can test your MVP faster.
If you are a "non-techie" person, here is a simple explanation of how KMP works.
How good is Kotlin cross-platform?
There is a reason why KMP is increasingly being used, and why more app founders are choosing this cross-platform technology. Beyond offering numerous benefits for developers working on the app, KMP provides even more advantages for a startup founder who hires a mobile app development company to develop their app using Kotlin Multiplatform services.
So, if you are wondering "What are the benefits of Kotlin Multiplatform?", here are the biggest KMP advantages:
Cost-effective development
By eliminating the need for separate teams, you need fewer developers and hours to build your cross-platform app. When compared to the native method, this results in development cost savings of roughly 30–50%. It is a particularly good choice for new businesses with limited resources.
Speedy launch process
Compared to waiting for a different MVP version for each platform, you may receive your MVP more quickly and begin validating your idea much sooner. If you want to see on the screen the most basic features such as user authentication, we can deliver that to you in just 2 weeks!
In case you want to validate your app idea even before investing in development, you should try this online tool.
Low maintenance costs
It is cheaper to maintain a Kotlin Multiplatform app since there is only one business logic code to keep an eye on. All updates, bug fixes, and new features are implemented in one place. This reduces both the time and cost of ongoing app maintenance, as developers don’t need to duplicate efforts on iOS and Android apps separately.
Shared codebase
There is no need to write separate code for each platform; the same business logic is used to write a code once and run it both on iOS and Android. This means that foundational features, like data handling, API integration, and authentication, are developed just once, reducing duplication and saving time. Developers can still customize the user interface for each platform to ensure a native experience, but the core functionality remains consistent.
Native features and performance
People sometimes worry that Kotlin Multiplatform won’t provide a native experience as traditional native development. There is no need to worry - KMP allows direct access to each platform’s unique features and APIs, so your app’s functionality will be just as responsive as a fully native one.
Easy shift from native to KMP
Developers can reuse the existing native code where needed, which is even easier if you already have an app written in Kotlin. This straightforward transition process allows you to start by integrating shared logic while keeping your existing platform-specific UI.
What is KMM and KMP?
People often get confused when searching for these terms and see that KMM is used in some places and KMP in others. What is the difference?
KMM (Kotlin Multiplatform Mobile) was the original name of the Kotlin framework and tools designed especially for mobile development, with an emphasis on code exchange between iOS and Android apps. It made it possible for developers to create common business logic in Kotlin and then include it with platform-specific code for things like the user interface.
But the more comprehensive, modern term for the whole Kotlin system that extends beyond mobile is KMP (Kotlin Multiplatform). KMM is a component of the broader Kotlin Multiplatform ecosystem, which currently covers web, desktop, and backend platforms in addition to iOS and Android.
In summary, KMM (Kotlin Multiplatform Mobile) refers specifically to the mobile aspect (iOS and Android). KMP (Kotlin Multiplatform) refers to the entire Kotlin cross-platform ecosystem, which includes mobile (KMM) and other platforms.
When to use Kotlin Multiplatform?
Kotlin Multiplatform (KMP) is the best option for app development when you need to share code across platforms while keeping platform-specific functionality where necessary. Here are some scenarios where KMP is especially beneficial:
- When you want to share business logic: If you need to write common code for functionalities like data models, API handling, or database management, KMP allows you to write this logic once and reuse it across iOS, Android, web, and even desktop apps.
- When maintaining native performance is critical: KMP enables performance comparable to native programs because it compiles to native code. This is crucial for apps that require high performance but also need cross-platform compatibility.
- When you want to avoid duplicating effort: If your app is intended for multiplatform projects, KMP allows you to maintain a single codebase for shared logic, reducing the need to write and maintain separate code for each platform (iOS, Android, etc.).
- When your app needs native UI/UX: With KMP, you can still write platform-specific code for UI elements, meaning you can maintain the native apps feel on both iOS and Android while sharing logic underneath.
- When working on long-term projects or scaling: KMP is especially beneficial for large, long-term projects where maintaining multiple codebases would become too costly. It helps reduce technical debt and keeps maintenance more manageable.
- When your team is familiar with Kotlin: If your team already uses Kotlin for Android development, adopting KMP for cross-platform development can be a smooth transition without requiring extensive training on new cross-platform development frameworks or languages.
Want to launch your own app or need a team extension?
What is the future of Kotlin Multiplatform?
No one can know for sure what is the future of Kotlin Multiplatform, as the world is changing rapidly and new app development solutions keep emerging. However, based on current information and the experiences of people who have developed their apps using KMP, what we do know is that it is a stable framework that is set to experience further expansion.
Is KMP supported by Google?
Google has recognized the potential of Kotlin for cross-platform development and has introduced Kotlin support in several of its tools and frameworks (like Android Studio). Google has shown strong support for Kotlin as the preferred language for Android development, and Kotlin Multiplatform is a Kotlin-based framework, so it aligns well with Android development practices. Flutter is owned by Google, and KMP by JetBrains, but lately, Google announced support for Kotlin Multiplatform due to its big potential and stability.
Is KMM stable now?
Yes, Kotlin Multiplatform Mobile (KMM) is considered stable and is actively being used in production apps by many developers. The framework is continuously being improved by JetBrains, and it is being used by companies for large-scale mobile app development. The overall stability of KMM has improved significantly, making it a reliable option for cross-platform applications, particularly when you want to share the same code and develop apps with native performance for iOS and Android.
What companies are using KMP?
Is Netflix using KMP? Yes! Netflix has been using KMP in their app built from scratch, Prodicle, which they are making to innovate in the area of physical production of TV shows and movies.
Other big companies like McDonalds and 9gag have also adopted Kotlin Multiplatform for Android and iOS applications. McDonald's uses KMP to streamline their development process across both Android and iOS platforms, enabling them to share a single codebase between the platforms while still maintaining native performance for each. 9gag chose KMP for its flexibility, efficiency, and ability to integrate seamlessly with native features.
And other companies like Trello, Revolut, Puma, and more are using KMP for app development.
Is Kotlin Multiplatform better than React Native?
So, now we come to the main dilemma that app founders face when choosing the best technology for building hybrid apps - React Native vs KMP. Is it better to use Kotlin or React Native? Is Kotlin faster than React Native? We'll try to answer your questions!
Code sharing
KMP: The shared code is focused primarily on business logic, leaving UI design to be handled separately on each platform, which can result in better native experiences.
React Native: More focused on providing a shared UI layer. It uses JavaScript and a bridge to interact with native code, allowing developers to create cross-platform apps with a unified UI.
Native Performance
KMP: Usually offers more native performance since the majority of core code (business logic) runs natively on various platforms, and only the UI layer needs to be separately developed.
React Native: React Native excels in delivering native components for most typical use cases by providing a bridge between JavaScript and native code. However, it may not match the performance levels of KMP for more complex apps.
Ecosystem
KMP: It is newer but benefits from Kotlin’s strong integration into the Android ecosystem. Developers who are building mobile apps can faster develop an app if they are already using Kotlin for Android development.
React Native: Has a larger community and more mature ecosystem due to its longer presence in the market. It offers many third-party libraries and tools, which can speed up the development process.
Flexibility and control
KMP: Kotlin Multiplatform gives you more flexibility because it allows you to write platform-specific code when needed. If, for instance, you need to access a unique feature on iOS or Android, such as advanced camera functionalities, you can write platform-specific code for that part of the project.
React Native: It offers great flexibility by allowing developers to use platform-specific web component when needed. However, React Native may reduce flexibility when you require extremely precise control over platform-specific features.
Is KMM better than Flutter?
Kotlin Multiplatform and Flutter both simplify cross-platform app development, but they approach it differently and suit different needs. Compared to KMP, which uses Kotlin as a programming language, Flutter has its own, not quite familiar language, Dart. It has its own set of tools to create the app's appearance, which means that while the app looks consistent everywhere, it might not feel exactly like a typical app on each platform. This can lead to a design that doesn't fully match the native look and feel that users expect on Android or iOS.
KMP, on the other hand, is designed to let developers share core business logic while allowing for fully native UI on iOS and Android. This gives your app a truly native experience, plus, if Android developers are already familiar with Kotlin, adopting KMP can make the transition faster and smoother.
If you are building mobile apps and need to decide which cross-platform technology to use, KMP/KMM or Flutter, you should think about your main app goals. For example, while both technologies can be cost-effective, KMP might offer a slight edge in performance for complex or demanding apps since it allows for platform-optimized code. Consider the speed of development vs. customizability: Flutter can be faster for creating a consistent look and feel across both platforms, as it uses the same code for both the UI and business logic. KMP, on the other hand, focuses on shared business logic, so developers will still need to write some platform-specific code, particularly for the UI.
Why did our client switch from React Native to Kotlin Multiplatform?
One of our clients had an app initially built with React Native. The app functioned for a while and already had users, but it was affected by many bugs. Users frequently complained that certain features didn’t work as expected, and many even uninstalled the app because of these issues. Another significant problem was the lack of a native feel. Although the app worked on both iOS and Android, some elements were out of place for users - like the settings, which iOS users expect on one side and Android users on the other.
Since our client was "a nontechnical person" and didn’t understand the technology or the bugs, he couldn’t tell why these issues were happening. The mobile app development company he was working with at the time, frequently delayed updates and didn’t hold regular meetings to keep the client informed about the app’s status. Whenever the client reported something wrong with the app, he would be told that everything was working fine in the code.
As a non-technical person, it didn’t occur to him that the choice of technology could impact the app's native performance. In fact, he didn’t think about the technology the app was built with, as he had entrusted this decision to his development agency and believed they knew best.
When the client came to us, he still didn’t realize the main issue was actually that the app was built in React Native. After our team listened to his concerns and performed a thorough code analysis to identify the core problem, we decided to completely rewrite the app in Kotlin Multiplatform.
Our team was confident in its decision, and in less than a month, the client received a fully rewritten KMP app that worked flawlessly, smoothly, and bug-free. Once our developers took over, we understood the issues the client was facing were due to React Native’s limitations when it came to handling mobile platforms and delivering a truly native experience. React Native components, while efficient for many applications, didn’t fully capture the native feel that the client needed. Mobile development with React Native allows for cross-platform code sharing, but the lack of support for native components on different platforms, such as iOS and Android, led to inconsistencies like misplaced buttons and unoptimized features.
Using Android Studio, we were able to optimize the app’s Android version with deeper integration into the Android ecosystem while making sure the iOS version was as refined. All of this resulted in the client coming to us and saying, "I don't know what you've changed, and I can't explain it, but I feel like the app is different and easier to use." And that's all you need to know about the difference between React Native vs Kotlin Multiplatform (KMP). Also, make sure you find a trusted mobile app development company that will take care of your app like it's their own.
In conclusion, which cross-platform technology to choose for your app development?
React Native is a technology that helps developers build mobile apps that work on both iOS and Android at the same time, saving time and effort. It's great for quickly creating apps that function the same across different platforms. However, the downside is that it doesn't give apps the same "native feel" as apps built specifically for each platform. For example, iOS and Android have different design rules, and React Native doesn’t always follow those rules as closely, which can make an app feel a bit off or inconsistent with what users expect.
On the other hand, Kotlin Multiplatform (KMP) gives developers more control over each platform's specific design and functionality. It allows for platform-specific components, so the app can look and behave just like other native apps on iOS and Android. This means apps built with KMP have a more polished, responsive, and "native" look and feel. While React Native offers fast development with reusable code, KMP takes extra steps to ensure that each platform gets a fully optimized experience, taking advantage of its native components directly.
If you want to know more about the differences between KMP and Flutter, you can read here.
Kotlin Multiplatform can be cost-effective due to its ability to share a significant amount of code across both iOS and Android, reducing development time and costs. It also lowers maintenance expenses by allowing updates and bug fixes to be implemented once and deployed across platforms. By eliminating the need for separate teams, you need fewer developers and hours to build your cross-platform app. This leads to savings of approximately 30-50% in development costs compared to the native approach. It is an especially suitable option for startups with limited budgets.
Already have an app idea? Find out how much it costs to build a mobile app with Aetherius Solutions!