Looking for top Mobile App Developers? They are just a few clicks away.

Flutter vs Kotlin: Which Technology To Choose For Your Mobile App?

Jan 25, 202116 min read

Dawid Karczewski

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:

  • Speed of coding;
  • Performance;
  • UI Experience;
  • Documentation;
  • Popularity;
  • Community;
  • Talent pool;
  • Easiness to learn.

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!

What is Flutter?

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:

  1. SDK (Software Development Kit): A set of tools to help you develop applications. It includes tools to compile code to native machine code (code for IOS and Android).
  2. Framework (widget-based User Interface Library): A collection of functional user interface elements (buttons, text inputs, sliders, etc.) that can be personalized to suit personal preferences.

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: 

  • Android, 
  • iOS,
  • Fuchsia.

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?

What is Kotlin?

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 and Kotlin Multiplatform Mobile Differences

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 Flutter you use only Dart, in React Native you use only JavaScript to build your app, meaning you only need one team to build both iOS and Android apps. 

 

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.

Flutter vs Kotlin: Comparison

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.

Speed of coding

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:

  • If the developer understands which side to approach the task.
  • If you need not only to launch an application urgently but also to accelerate further development.

 

Winner: Flutter

Performance

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.

 

Winner: Kotlin

UI Experience

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.

 

Winner: Flutter

Documentation

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.

Winner: Flutter

Popularity

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.

 

Draw

Community

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.

 

Draw

Talent pool

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.

 

Winner: Kotlin

Easiness to learn

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.

 

Winner: Kotlin

What is Flutter good for?

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.

What types of products can be built with Flutter?

 

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:

  • various retail (loyalty programs, catalog, online store);
  • banks and fintech (work with small businesses);
  • suppliers and franchisees;
  • large business (contact centers, courier control, organization of internal processes).

 

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.

Flutter app examples

 

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.

What is Kotlin good for?

The relatively new language is compiled into the JVM bytecode (there is also compilation into JavaScript). This means that it may be of interest to everyone who deals with the Java machine and languages ​​with a garbage collector in general (and with the release of compilation in JavaScript, the coverage and possibilities will be even wider).

 

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:

  • the application should be very fast and lightweight;
  • the design of the application is quite laconic, and the pages are beautifully turned over, forms and pop-ups work correctly;
  • no need for a cross-platform environment;
  • the application is a commercial product for the end-user.

Despite the complexity of creation, many developers prefer to use native code and write applications in Kotlin.

Kotlin apps examples

  1. Pinterest

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.

  1. Trello

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.

  1. Coursera

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.

  1. Twidere

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.

  1. Shadowsocks

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.

Summary

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 For Mobile Development - Pros and Cons

Pros of Flutter:

  • Using the Dart language. Its features are that during assembly, all unused code is deleted, memory is quickly allocated and cleaned, and the highest performance on the user's device is provided. In other words, a great language for developing applications.
  • The perspective of technology. Flutter is a new framework that is rapidly gaining popularity and is actively supported not only by the community but also by Google. This suggests that technology development prospects are high.
  • Ability to quickly generate code. Thanks to the presence of its own rendering, widgets, and a rich set of tools for the developer, many processes are automated, which means that the application is written quite quickly.
  • Support for multiple platforms. At the moment, the same code created on Flutter is fully supported on Android and iOS. In addition, developers are actively creating the possibility of using the same code on the web and desktops and should present this solution in the near future. This technology will allow you to create applications for different operating systems even faster.
  • Excellent performance. This statement follows from the fact that there is a possibility of compilation into native code. Therefore, the application is fast, does not require pre-installations of extraneous services, and works quickly on any operating system.
  • Same design. UI design is displayed the same on any user's device. Flutter significantly reduces the time for design development and also brings the application to a single style. This is especially useful for corporate branding applications.
  • Quite a large set of libraries. New libraries are regularly developed that expand the functionality and simplify the work on Flutter.
  • Powerful rendering engine. In addition to a convenient programming language, Flutter uses a high-quality rendering engine. Built-in set of templates, the ability to create a unique design for any need.
  • Good knowledge base. Flutter is gaining traction, and many developers are switching to this coding platform. As a result, a large knowledge base appears, and even an inexperienced programmer with minimal knowledge is able to master the framework quickly. In addition, due to popularity, many "strong" specialists move to Flutter and begin to promote actively.

Cons of Flutter

  • The framework is quite young, so it is not always easy to find developers who can create quality applications. Despite the growing popularity, the young platform is less relevant than using other solutions.
  • For many developers, the Dart language will be new, so you will have to spend time learning it. Despite the fact that it is very convenient for developing mobile applications, not all specialists want to delve into a new programming language.
  • The installation package is larger because it includes the Dart virtual machine for cross-platform support.
  • A certain amount of instability. The framework just recently came out of beta testing. It has fewer libraries. Some of them do not always work stably. But every day, this minus dissolves.

Flutter’s pros takeaway: 

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 For Mobile Development - Pros and Cons

Pros of Kotlin:

  • This is a laconic language. The code written in Kotlin will look neater and noticeably smaller than in the same Java. The language is very clear and accessible.
  • Fully Java compliant. The same classes will work great in both Java and Kotlin, giving flexibility to the developer. For example, a programmer can use both languages ​​in one project.
  • Thanks to the support of Google, Kotlin is now stable and has far fewer flaws than it could have. Despite the fact that it is a young language, it is comfortable and easy for developers to use.
  • Lack of an academic structure. Kotlin is a modern industrial language that was not created in an academic laboratory setting. The developers specifically created it in order to create effective applications for Android. This suggests that applications written in Kotlin Native have fewer problems and more functionality.
  • You don't need to rewrite all your code to include Kotlin in your existing Android application. It is enough to create only new parts in Kotlin, which is convenient for any developer using other programming languages.
  • The ability to create additional streams. Application processes that load the device's processor use rather lengthy operations. The thread is blocked until the entire operation completes. In Java, the problem is solved by creating a background thread. However, this leads to errors in the code and increases the complexity of the application. Kotlin has the ability to create additional threads, so the application works faster and better. In short, Multi-threading can always lead to errors in the code, it's just harder to implement in Java than in Kotlin.
  • Speed of coding. Kotlin syntax is consistent and intuitive. Therefore, developers need much less time to code. Brevity and quality - this is how you can describe the main features of this language. After all, the smaller the code, the fewer errors in it.
  • Ease of learning. Kotlin is equally suitable for experienced programmers and beginners with a basic knowledge of Java. The community is growing every day, and many developers are willing to share their knowledge. Therefore, even without experience, you can start learning a language and occupy a niche.
  • High level of security. The code creation rules are made in such a way as to detect errors not only at the time of compilation but also at the stage of code creation. For example, trying to access a null value is a stumbling block in many programming languages. But Kotlin eliminates such errors from the code.
  • Lazy Loading. This is a "trick" to load only the content you want. Kotlin allows you to make the Android application give priority only to the main resources, and the secondary ones load more slowly from secondary memory. This results in applications loading much faster.

Cons of Kotlin:

  • Unstable compilation speed. According to the developers, the compilation speed is unstable, and in some cases, it is fast. In others, it is noticeably slower.
  • Relatively small developers’ pool. There are not so many developers with good experience in Kotlin. Finding them is problematic since the language itself is young, and specialists have not yet come to the market.
  • Narrow community. Despite the fact that the developer community is friendly, it is rather small, so solving some problems is difficult.
  • It is not developing too fast. Due to the lack of a large number of specialists, the advancement of the language is rather slow. 

Kotlin’s pros: main takeaway

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.

Kotlin’s cons main takeaway

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 Karczewski

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
CEE IT 2022

The State of Central & East Europe IT Outsourcing and Offshoring 2022 Report

Belarus • Poland • Romania • Ukraine

Read now
home-05
Looking for mobile development experts to join your team?
There are dozens of vetted mobile development professionals in our talent network.
Get in touch