Senior full stack developer and CTO at Ideamotive.
The future belongs to mobile applications! In the midst of the crisis, companies are looking to cut costs, accelerate time to market, and increase their online presence through apps.
Popular sites create separate programs so that users can conveniently use services or select products. For a business, creating an app is an important step in gaining even more customers and increasing brand awareness. But the entrepreneur faces a choice: which technology to choose for developing a mobile application.
We will look at the features of two framework giants and try to compare Flutter vs Kotlin.
Inside you’ll find a comparison of the next characteristics:
If this scope of information would still attract you, as a dessert, we offer your attention a few intriguing examples of what each technology can be good for.
We've already made a comparison between KOTLIN VS JAVA. So, today we are going to compare Flutter and Kotlin to find out which technology you should prefer for building a cross-platform mobile application.
No more intros! Let’s proceed!
Flutter is a free and open-source mobile user interface development kit created by Google and released in May 2017. Simply put, using Flutter, it is possible to create your own mobile application with one array of code. This means that one programming language and one code base can be used to create two applications (iOS and Android).
Flutter targets two important things:
The main goal is to create applications that are used on mobile and desktop platforms, as well as on websites. The Flutter framework allows you to compile an application for 3 operating systems:
Flutter almost immediately burst into the ranking of the best application development frameworks due to its capabilities.
It was unveiled in 2015, first public release was available in 2017 and first non-beta release was available in 2018, on December 4th.
Google is actively promoting the framework, and it is rapidly gaining popularity among developers. Although some are reluctant to switch to Flutter, the advantages and opportunities indicate that soon Flutter will be able to supplant native development for Android.
For development with Flutter, a programming language called Dart is used. It is also the language of Google, presented in October 2011. Besides, it has improved significantly in recent years.
Dart focuses on the development of the web page layout. It can be easily used to create mobile and web applications.
Find the above info too short? Why not see our 2021 guide to Flutter App Development?
Not all experienced programmers know what Kotlin is. After all, this is a young programming language developed by the Russian company JetBrains. This language appeared in 2011, but success came only in 2017 when at the international Google conference, Android developers announced that Kotlin native received official support for developing applications for the Android operating system.
So what is Kotlin?
It is a statistically typed language that is capable of supporting both procedural and object-oriented programming.
It is often compared to the Java language, with which, by the way, it is fully compatible. But in fact, this is the next stage in the development of Java, an improved version that can work more efficiently and easier.
Kotlin as a language used to create Android apps has obvious constraints of working ONLY on Android.
Kotlin Multiplatform Mobile (KMM) is a multiplatform framework, but the main thing differing it from Flutter (or React Native) is that you still need TWO developer teams.
In KMM you need Kotlin and Objective-C/Swift developers. KMM uses Kotlin to build business logic of the app and Android UI of the app, but for iOS you still need Objective-C or Swift developers.
Let's compare Flutter vs Kotlin for Android and other platforms in different ways so you can choose what you need.
Truthfully, Flutter, and Kotlin, both platforms can create amazing applications. However, there are many differences, which we will discuss below.
The first build of Kotlin code takes about 15-20% more time than a similar process in Java. However, Kotlin's incremental build is even slightly faster than Java's. Thus, the languages are roughly equal in compilation speed.
In its turn, compared to Kotlin, Flutter development is 20-50% faster (mostly thanks to 'hot reload' built into the framework). The speed depends on the complexity of the interface and the required functions.
Thanks to Flutter, you can modify your code and see the results in real-time. This is called Hot-Reload. It takes very little time to update the application itself. Some significant modifications can reload the application, but if you are working as a designer, for example, resizing elements, then this is possible just in the Hot-Reload mode!
You can take advantage of this framework in the next cases:
Talking about Flutter vs Kotlin performance, we can’t pass by the next fact.
Just like other frameworks Flutter is fast and stable - at 60 frames per second. However, every Android framework targets at least 60 frames per second.
Flutter is usually considered faster thanks to its approach to content rendering.
This allows you to make animations smoother and launch applications even on older smartphones.
Flutter has better speed and better performance. However, compared to Kotlin, it lags far behind. On the other hand, Flutter/Dart lags behind Kotlin with some benchmarks.
The main reason is that the Kotlin code is compiled in the same format as the platform for which it is intended. This feature makes Kotlin a very robust platform with better performance.
It is important that users perceive the cross-platform application as native - that is, as if it was written specifically for that platform. At a minimum, there should be smooth animations, interface elements typical for this OS, and work with gestures.
Oftentimes, a cross-platform looks like a more advanced mobile version of a website wrapped in an app. Animations slow down, unusual interface elements with unpredictable behavior are used.
All this worsens the user experience. As a result, it lowers the scores in the stores and retention (the rate of return of users to the application). In Flutter, there is no such problem. Smooth animations are its advantage.
You can use Android or iOS widgets, but there is no simple way to make the application use iOS widgets on iOS and Android on Android, everything has to be done manually, while in React Native it's more automated. Selling point of Flutter was the exact opposite - that it provides unified experience across all platforms.
Choosing Flutter for app development will allow you to use different widgets. These widgets reduce development time by creating a custom mobile solution quickly and efficiently. After all, Flutter is a software development kit primarily designed to support user interface development.
Kotlin Multiplatform does not require developers to follow any instructions for creating a user interface. This allows UI mobile developers to work on the look, behavior, and performance of the application in the same way as in the case of the native one.
KMM also requires developers to follow instructions, especially the first time they use KMM. There are no SPECIAL instructions though on building UIs in KMM, as it's basically the same as while building native apps.
Flutter is open source and free to use, providing extensive documentation. Also, it provides the user with a rich set of testing functions that unit test the widget while integrating the level. Having excellent testing documentation, it also has an interesting widget testing feature.
With this key point, the user creates widget tests to try the UI and runs them at the speed of unit testing.
Compared to Flutter, Kotlin is still new and, in fact, in an experimental state. Because of this, the documentation for the latter lags somewhat behind the former. But this point is expected to improve when the multiplatform becomes stable.
Both Kotlin and Flutter are open source and free tools. Because of this, developers are showing interest in working with both.
If you look at Google Trends, you will see that Kotlin has skyrocketed in popularity compared to Flutter.
According to Statista, Kotlin is among the ten most popular programming languages among developers around the world at the beginning of 2020. Compared based on its presence on GitHub, Kotlin has over 34K stars and 4.3K forks, while Flutter goes ahead with ~ 108K stars and ~ 15K forks.
This clearly shows that Flutter is gaining a huge boost in the market compared to Kotlin.
Flutter is a platform that constantly thrives in the market. The Flutter community is also growing at the same time.
Google is evolving to become Kotlin-centric, and this is one of the reasons mobile app developers are leaning towards it.
As per StackOverflow Dev Survey, the software industry has changed significantly over the past decade, but it is also true that no technology has been as devastating, at least in the short term, as the public health crisis that is now going through the world.
Moreover, the results of the 2020 Developer Survey reflect the views and experiences of nearly 65,000 developers. However, it is important to note that the survey was conducted in February before COVID-19 was declared a global pandemic, and countries around the world were locked down.
So the percentage of developers working with Flutter is 68.8%, while Kotlin has 62.9%.
Another important factor to consider when comparing the multiplatformity of Kotlin and Flutter is the amount of work and wages.
According to the StackShare community, the Kotlin programming language is listed among the technology stacks by 833 companies and 3610 developers, while Flutter is listed as a technology stack by 201 companies and 2844 developers.
These figures appear since multiplatform Kotlin is not an independent platform. This is an experimental extension to the native language and can be used in the native Kotlin environment. It gives the impression that it has more options in the marketplace.
If we consider the learning curve as a comparison factor in the Flutter vs Kotlin battle, the latter clearly wins. The reason is that it is Java compatible. Also, Google offered various Kotlin training courses a few years ago.
But when we talk about Kotlin Multiplatform and Flutter, the scenario is slightly different. Kotlin multiplatform is a new ecosystem with limited market resources compared to Flutter.
Kotlin's syntax is similar to that of other programming languages such as Scala, Groovy, Java, and Swift. Hence, Kotlin developers don't have to go through a very long learning cycle of Kotlin from scratch.
For those who need prompt and anti-crisis solutions, constructors have already been invented. Such software (Mobincube, Imshop.io, and others) allows you to make an application quickly and cheaply.
But it is not suitable for projects where flexibility and productivity are important, there are complex integrations and business processes, where regular updates are planned.
The constructor is an excellent solution for a small restaurant chain, but it will be extremely inconvenient for an online store with a turnover of more than 1 million per month. On a large scale, designers lose their meaning: revision according to the individual requirements of a specific product becomes a prerequisite, and the benefits of a designer are no longer obvious either in the budget or in terms.
Therefore, now we increasingly see large trading companies abandon the use of box solutions and create their own mobile products. The market confirms that a quick fix cannot be permanent.
Native applications (written in native OS languages - Swift and Kotlin, for iOS and Android, respectively) have no serious drawbacks but require significant development and support costs. You will have to create business logic, layout, and interface, taking into account the peculiarities of each platform. All of this will affect the project budget.
A cross-platform Flutter application has the advantages of native development and allows you to reuse most of the code between different platforms, which will save, according to our calculations, up to 40% of the budget.
That is, in Flutter, we save developers time not only by writing one code instead of two, but we also take many features right out of the box, and the optimized process of working with animations cannot be compared to native development.
The hot reload function, especially beloved by programmers, assembles an application from widgets in literally seconds. Depending on the complexity and originality of the project, all this gives from 20 to 50% time savings, which can be spent on developing other useful functions.
“Flutter is the perfect prototyping platform. I once participated in a marathon, where a participant (a data scientist with no development experience) just took and assembled a prototype of a simple application in a few hours. On Android, a similar development would take an order of magnitude longer,”
says Stepan Goncharov, Lyft Staff Software Engineer.
In short - any. Flutter is now widely used to create applications in Alibaba, Yandex, Airbnb, Uber, and other large companies. We believe that the framework is best suited for medium to large businesses.
(Flutter is not contraindicated for small businesses, but a full-fledged mobile application is a significant budget, so they would rather choose a cheap boxed solution.)
Also, note that another alternative is going with a slightly cheaper web application usable on mobile thanks to RWD.
With Flutter, you can create applications for:
The search for quick and profitable solutions brought specialists from different fields to Flutter.
“Our goal was to develop the UI in two and a half months. From scratch. In such harsh conditions, the main things for us were: fast compilation, good tooling, UI speed, ease of integrating native code, and integration into native code. All this is in Flutter. For us, he was a new technology. We had to defend the project in front of the bosses since we did not have accurate data on the speed of development, testing, and the cost of support. But in the end, the metrics taken during the development fully justified our choice,”
reveals Gennady Evstratov, Yandex.Taxi iOS Development Team Leader.
The best ones are Google Stadia, Google Ads & Google Assistant. Stadia is Google's new game streaming service for almost any device. On November 18, 2019, Google Stadia UI Development Lead John McDowl confirmed that the Stadia app was built using the Flutter SDK.
Apparently, the Stadia team started working with this technology over a year ago in the prototype stage. It's nice to see that not only Google created it but actually uses it in their projects.
Another example of an app built with Flutter developers is the Google Ads app. This application helps clients to run their advertising campaigns effectively. It also allows users to launch and manage their ads in one go, whether you're using a desktop computer or not.
The two main features of Kotlin, in our opinion, are its simplicity and full compatibility with Java. Kotlin was created by a company that makes a lot of Java products and is well versed in modern development tools.
The request for a new language has been in the air for a long time, but to create a language that would allow ordinary Java developers to take the (huge) ready-made Java code base, give them a new tool, and seamlessly (but more efficiently) continue development - such a tool until the advent of Kotlin did not exist.
The creators of the new language, in our opinion, very well felt the needs of business and developers: the business was given the opportunity to increase the efficiency of developers, and the developers were given a modern tool for development.
And when we talk about a "modern tool," we, of course, mean not only the compiler but also the support in the IDE, without which I personally see my work as a developer completely unthinkable.
The bottom line: simplicity allows almost any Java developer who is willing to spend half an hour looking at a tutorial or language specification, while backward compatibility allows using the language in an existing project.
So, Kotlin is relevant in the following cases:
Despite the complexity of creation, many developers prefer to use native code and write applications in Kotlin.
It is still, by far, the most famous social photo-sharing platform. So when Pinterest switched from Java to Kotlin in 2016, they set a great example for other companies. Pinterest showcased the benefits they got from switching to Kotlin at Droidcon NYC 2016. Surprisingly, Pinterest made changes to Kotlin even before Google announced top-notch support for Kotlin. These facts make Pinterest probably the best example of Kotlin for Android on this list.
Atlassian-owned project management application; Trello helps many companies and individuals with their workflow. According to a recent announcement by Atlassian, Kotlin will be a programming language. Effective interoperability between Java and Kotlin was the reason for the move to Kotlin. This decision made Trello one of the favorites on Google Play with an average rating of 4.5 out of 69,000+ reviews.
Coursera offers online courses from prominent universities and institutes such as Stanford and Yale. It is an educational company offering open online courses that did not have separate organizations for Android and iOS. They only had the concept of mobile devices, so they decided to start using Kotlin. It is similar to Swift, which makes it easier for engineers to exchange knowledge, improve communication, and improve overall development efficiency.
Twidere is a fully developed Twitter browser that empowers users of the Twitter platform. It is an open-source Twitter client application used to customize themes, filter out unwanted tweets, manage multiple accounts, and more. Twidere is the perfect blend of Kotlin and Java code. The simplicity and smoothness of this application have earned it over 1600 stars on Github and over 100,000 downloads from Google Play.
Shadowsocks is a cross-platform secure SOCKS5 proxy application. The application helps its users to get confidential and secure Internet access. The app provides an industry-grade encryption algorithm and is optimized for mobile devices and wireless networks. Shadowsocks is a runaway success with over 13,000 stars on Github and an average rating of 4.6 on the Google Play Store based on over 52,000 reviews.
For developing both native and cross-platform mobile applications, each of these platforms is known for its reliability and aim to reduce the time and cost of application development while improving application performance.
On top of that, both platforms are backed by Google, which in itself is a guarantee that both platforms will soon dominate the market.
They compete fiercely with each other and are getting more competitive with each release.
In such a scenario, it is recommended to consult with a mobility expert and analyze the requirements and priorities of cross-platform applications to determine which one is better - Kotlin or Flutter.
Also, we have collected the most crucial points about each product. Hope this table will greatly simplify your pain of choice (detailed description below)
Flutter is a powerful framework that allows you to create rich applications for various types of operating systems. Suitable for both beginners and experienced programmers. High speed of work, convenience, and simplicity. But not without flaws.
Kotlin is a programming language that allows you to create effective applications on Android. It is Java compatible, so many developers migrate to Kotlin easily. It is laconic, convenient, and understandable. This is a modern solution for the implementation of projects of varying complexity.
There is no programming language that is perfect. Despite the growing popularity of Kotlin, there are also disadvantages. In all other respects, Kotlin is a convenient and practical programming language designed for creating applications on Android.
Still not sure what technology to choose? Consult your product with us. We can provide you with technical consultancy and provide you with both Flutter developers and Kotlin developers, matched with your product and your industry.
Dawid is a full stack developer experienced in creating Ruby on Rails and React Native apps from naught to implementation. Technological superhero, delivering amazing solutions for our clients and helping them grow.View all author posts
Digital Marketplace Development Guide
How To Start Online Marketplace Business?
Dawid Karczewski 6 min read
Dawid Karczewski 12 min read
Michał Rejman 9 min read
Patrycja Mach 19 min read
Michał Rejman 14 min read
Work with Mobile App experts from Ideamotive's talent network.