Flutter vs Kotlin Multiplatform: Our Mobile Experts Weigh In
6 Dec 2022
Cross-platform app development comes with incomparable flexibility for business owners and tech teams alike. There are multiple hybrid and cross-platform technologies to choose from, like React Native, Xamarin, Cordova, Flutter, and KMM. At VOLO, we specialize in the two technologies from this list that, based on our empirical experience, we consider to be the best.
The cross-platform technologies in question today are Flutter and Kotlin Multiplatform. We have touched upon the topic of Flutter app development many times before but this time, other than defining its ins and outs once more, we are going to compare it to KMM - one of the up and coming mobile technologies that’s taking over the cross-platform world. Our two senior mobile development experts, Laura G. and Avetik S. are going to weigh on the key differences of these two technologies based on their own experience.
So, let’s dive right in.
What is Flutter?
Flutter is an open-source software development kit created by Google for simplifying the process of mobile app development without sacrificing quality. It was officially introduced in 2018. Flutter’s underlying programming language is Dart which has also been developed by Google.
When is it best to use Flutter?
Flutter with all its tools and functionalities can be used for the development of pretty much any project, from any industry. However, to achieve the best results with Flutter, your project should be a perfect fit for this technology. Here is what we mean by a perfect fit:
- Your project doesn’t have many complex hardware dependencies.
- There is not an abundance of platform-specific UI requirements either.
If this is not the case with you, it’s highly recommended to go with native technologies rather than Flutter. Otherwise, you can confidently choose Flutter and expect to get a beautiful, highly responsive application that meets the needs and demands of even the most scrupulous user.
It should also be mentioned that Flutter is a great choice for building the MVP of your product. If you have a great idea but are on a tight budget, it’s more reasonable to build an MVP to see how your audience reacts to it, whether or not it’s what they want, and if it is an actually worthy business investment, and only then expand on it.
Flutter is relatively affordable and requires a short development time - these two factors alone make it a perfect choice for MVP development.
What are the main advantages of Flutter?
Flutter brings a multitude of benefits and advantages to the table. Here are the ones that have gained Flutter the popularity that it enjoys today:
- Single Codebase: Unlike Native technologies, with Flutter you don’t need to hire two different teams and have them write two different codes in order to make your product available on iOS and Android or any other platform. Your tech team will need to write code once and use it for all platforms. This will speed up the development process and help you save time and effort.
- Multi-Platform Support: Flutter provides support for Android, iOS, web, desktop, Linux, and macOS.
- Cost Efficiency: Thanks to the single codebase, you will essentially save on the resources needed for the development of your project. No additional costs required to hire two tech teams, shorter development cycle, lower maintenance and QA needs, etc.
- Reduced Time to Market: Your product will be released into the market much earlier than those of your competitors thus giving you the privilege to attract a loyal customer base early on.
- Widgets: Flutter offers a large library of widgets, layouts, and themes built for different industries. They ensure the seamless user experience of your app and make it more attractive to your target audience. Flutter widgets can also be easily modified and customized according to your project’s requirements. You can even create your own widgets.
- High Security: Google implements all the security measures and standards needed for the peace of mind of everyone using Flutter. It’s safe and sound.
- Easy Integration into a Native Project: Let’s say, you have an app that is being developed in a Native technology but at some point, you run out of resources needed for native app development (or for any other reason you can’t go on with Native), and see the need to switch to Flutter - this is totally possible to do. Flutter can be easily integrated into a native project giving you the chance to continue your app development with a single codebase.
Flutter has a rapidly growing community that is standing behind it together with its founding father, Google. With each update (the latest one, Flutter 3, being released in May 2022), this technology is improving and introducing more innovative features and functionalities aimed at making the mobile app development process much simpler and easier.
What are the drawbacks of Flutter?
There are not many drawbacks to Flutter. The somewhat noteworthy ones are the following:
- Flutter is not the best choice for projects that have many hardware dependencies (camera, Bluetooth, location, etc.) or platform-specific feature requirements. However, it’s still possible to build hardware-dependent apps with Flutter, you will just need to pay a bit more attention to the maintenance part. As for platform-specific feature requirements, you need to discuss this with your tech partner and evaluate their number and scale. If your project has too many such feature needs, you may want to stick with Native technologies. Otherwise, you are good to go with Flutter.
- Flutter applications come with a 15-20 megabytes larger final archive size than apps built with other technologies. This is because of the extra engine code shipped with the app. However, this rarely happens to be an issue as long as your app meets all user expectations.
At the end of the day, it is not about the drawbacks of Flutter, but about the specifications of your project. Those are the main factors that determine whether Flutter is the right way to go or not.
What is Kotlin Multiplatform?
Kotlin Multiplatform Mobile or KMM is a software development kit (SDK) created for cross-platform mobile app development and released in 2017 as part of Kotlin 1.2 version.
With KMM, you create a single codebase for the business logic of the app, only writing platform-specific code when necessary. In other words, you write the business logic once and implement native-specific UI.
“A very important thing to note here is this: in terms of development resources, with Flutter, you can get by with 1 developer that can develop your app for both platforms. With KMM, however, since it requires native-specific UI, you will need both iOS and Android developers.” (Avetik)
There are numerous use cases for Kotlin Multiplatform. If you want to shorten the development cycle and build a cross-platform application that will share common code between Android and iOS, then KMM might be the right choice for you.
Kotlin Mobile might also be the best technology for your project if:
- you have an existing native-specific code and want to make the most of it. Let’s say, you have a Native iOS app and now want to expand your reach to Android users as well. You can use KMM to create your Android application by simply providing the existing native UI and logic instead of having to develop a new app from scratch.
- having native components and qualities as well as a native look and feel on every new OS version are important to you.
- you have high dependencies on native UI solutions - KMM gets along well with features that deal with the camera, AR, machine learning, and complex animations.
- you want to create a multiplatform library for JVM, JS, and Native platforms.
- you want to have a common code for your mobile and web apps thus reducing the efforts and resources needed for coding and testing.
KMM can indeed come in handy for you if your project corresponds to any of the above cases. Depending on your goals and project requirements, you might also find Kotlin Mobile to be quite useful for many other different cases - your tech team should be able to guide you through the whole process.
What are the main advantages of Kotlin Multiplatform?
Kotlin Multiplatform Mobile brings numerous advantages to the table. Here are the main ones:
- Rapidly Growing Community: Kotlin Multiplatform is already in high demand. A lot of enterprises and startups (Baidu, Netflix, Autodesk, etc.) are employing this technology in their projects. Not to mention the large talent pool that is continuously expanding. This only means that KMM will improve as time goes by and come up with better features and functionalities.
- Higher Quality Code and Easier Maintenance: A shared code means that there is an improved functional consistency between your Android and iOS apps. Moreover, it’s also easier to detect mistakes or faulty code chunks early on. In other words, you get simplified testing, faster bug fixing, painless maintenance - what else could you ask for?
- Modularity: KMM can be gradually introduced into your project without you resorting to a complete code overhaul.
- Cost Efficiency and Faster Development: As with Flutter, KMM also offers cost and development time reductions. Since you don’t have to hire two teams to write separate codes for each platform, you will save an essential amount on your finances. Thanks to the same factor, your app development time will also be highly cut down.
What are the disadvantages of Kotlin Multiplatform?
The main drawback of KMM is that a lot of its components are still in either Alpha or Beta stage and can be subject to change in the future. This brings about a certain level of instability for everyone who wants to develop a project in Kotlin Multiplatform Mobile. You might encounter bugs, missing features, and find yourself having to make big changes in your code as the technology comes up with further updates.
In any case, if KMM is the best tool for your project and you don’t have tight deadlines, you might as well wait a little for Kotlin Multiplatform to mature and become more efficient for software development. If you don’t have much time to wait, make sure to have a competent maintenance team to support you when change requirements arise.
Flutter vs Kotlin Multiplatform
Flutter: “Today, the Flutter app provides native-like performance. Since it comes with its own widgets, the Flutter engine draws the UI through Skia once installed. This rendering approach helps Flutter deliver 60 frames per second (fps) performance, or 120 fps on devices that support 120Hz updates. It supports smooth, jank-free graphics at a device's native speed.” (Laura)
“When it comes to iOS-specific hardware-related questions, however, we can run into some difficulties with Flutter.” (Avetik)
KMM: One of the main advantages of Kotlin is that it compiles natively in this chosen platform, as illustrated in our Kotlin diagram above. This means that performance-wise, KMM apps perform extremely well.
“Unlike with Flutter, with KMM you are able to bypass iOS-specific hardware-related issues, because you handle them natively as a UI component.
However, while it is a great solution for cross-platform development, we do have to keep in mind that iOS developers run the risk of hitting some snags when working with KMM. Oftentimes, a change pushed by an Android developer causes a crash in iOS because it doesn’t support running Kotlin code directly.” (Avetik)
2. Integration with 3rd-Party Libraries and SDKs
Flutter: The integration with 3rd party libraries is not challenging. However, since it’s a relatively new technology, finding a good library that caters to your specific development needs might be difficult. But since it’s supported by Google, their team along with the Flutter community is doing an excellent job in terms of enriching the libraries.
KMM: "Like Flutter, KMM is also a new technology, which means that there are even fewer 3rd party libraries for KMM as for Flutter. However, since it’s mainly responsible for the business logic end of things, its reliance on 3rd party libraries is not as heavy as is the case with Flutter." (Avetik)
3. Backend Development
Flutter: Flutter can be used for both frontend and back-end development, but it’s typically used for the former, since, as a UI kit, it enables developers to create beautiful applications. The most common choice for backend development for Flutter applications is Firebase, a backend-as-a-service solution supported by Google, which means it really complements Flutter well. However, if the app requires many custom features, Firebase might not be enough, and in those cases, other backend options like .NET and Python come into play.
KMM: “KMM also enables developers to write backend code. However, in practice, writing backend code with KMM is not very common. Maybe this has to do with the fact that it’s still the new kid on the block, and there just aren’t that many real-life examples and cases to draw from.” (Avetik)
4. Development Resources
Flutter: “Flutter requires the knowledge of Dart - a relatively new programming language, which means that you might have some difficulty in terms of developers’ availability. Keep in mind, however, that Flutter is now leading the market of cross-platform application development tools and the pool of developers is catching up fast.” (Laura)
KMM: “Since Kotlin is a more popular programming language compared to Dart, you will find more developers who have experience with Kotlin or are familiar with KMM. So, as of right now, you will have less trouble hiring developers for a KMM app than for Flutter.” (Laura)
5. UI Experience
Flutter: With Flutter, you get a common UI for both Android and iOS. You need to keep this in mind if your preference is having a platform-specific UI for your application.
“Flutter has customized UI development toolkits that are fully compatible with Apple’s Cupertino and Google’s Material Design. In order to create a customizable look and feel, the developer needs to work with two libraries to adapt them to the final design of the application.” (Laura)
KMM: We have already covered the fact that one of the drawbacks of KMM as compared to Flutter is that while it gives us the ability to have one shared business logic for both platforms, the UI layer of the application will have to be developed twice. While this is a disadvantage in terms of overall development time and cost, when it comes to the UI experience, in many cases it actually becomes an advantage, because it allows us to customize the look and feel of the app, quite close to platform standards.
6. Application Size
Flutter: One of the deficiencies of Flutter is its app size. Storage is finite, so developers always try to minimize the size of their apps so that they don’t get uninstalled due to limited space.
KMM: “KMM takes the cake in this category. Although the file size of the apps created with KMM are bigger than Native applications, they are smaller when compared to Flutter.” (Avetik)
Flutter: With every major Flutter release, its popularity grows. When Flutter 2 launched in March 2021 there were around 150K apps developed with Flutter on Play Market alone. With the release of Flutter 3 in May 2022, this number passed 500k, which is a huge jump in framework usage over a few years.
KMM: In terms of sheer numbers that speak to the popularity of these two technologies, Flutter has 133,000 stars on Github, while KMM’s star count is 3,500. While it’s gaining great momentum, KMM still has a long way to go to be compared to Flutter with regards to market adoption.
8. Documentation and Community Support
Flutter: “The framework is built by Google, and this tech giant constantly supports Flutter developers with frequent updates and quick bug fixes. A wide community of experts and beginners is ready to share their experiences and knowledge about the framework. Flutter is also known for its well-structured and easy-to-use documentation which covers all the basics.” (Laura)
KMM: KMM is still quite new as compared to Flutter, which boasts one of the fastest growing communities. This means that Flutter is still superior in this regard. However, it is expected that as KMM adoption begins to pick up pace, so will, naturally, its community and the generated documentation.
9. Learning Curve
Flutter: “It is easy to pick up Dart especially for the developers who already have experience with C-like languages.” (Laura)
KMM: “KMM is quite easy to pick up for Android developers. But, as it uses Kotlin + Android Studio, it’s more difficult to implement for iOS developers.” (Avetik)
10. Popular Apps Written in Flutter and KMM
Flutter: Google Ads, eBay Motors, Google Pay, Xianyu by Alibaba, SpaceX Go, Groupon, BMW app.
KMM: Careem, Target, VMware, Netflix.
“However advanced, the reality of the tech world is that nothing is perfect. Along with its advantages, every technology has its limitations. Choose Flutter if you need to launch your app quickly and don’t need platform-specific UI design. KMM, on the other hand, enables you to develop an app with a rich business logic and a customized interface.
Both KMM and Flutter give you the opportunity to develop top-notch applications that save companies time and money. In fact, many experts predict that cross-platform development is where the future is headed. However, at this point in time, we’re not quite there yet in terms of cross-platform capabilities.
In other words, depending on the complexity of your cross-platform app, whether it is in Flutter or KMM, you just can’t be sure that it won’t eventually hit a dead end. This means that, ultimately, Native development is currently the superior option.” (Avetik)
Transform your business with Volo
Ready to discuss your next tech project?