Comparing Flutter with Native iOS and Android - Overview of Kotlin, Swift, and Dart

One of the most important questions companies face when developing a new app is the type of app they want to create. Should they develop a "native" app or use a cross-platform one? Apps based on native code generally run faster and can utilize all the features of the operating system. However, the popularity of cross-platform apps is growing because they are built faster and cheaper than native ones, while still being able to include some native components. Choosing between a Flutter app and native iOS and Android apps also determines which programming language and technology you will need: Kotlin, Swift, or perhaps the Flutter framework with the Dart programming language.

Which of these three technologies is best for your project? As you might guess, there is no universal answer; it all depends on your goals and expectations for the new app. Therefore, to help you decide, we have gathered all the necessary information about these three technologies and compared them in this article. 

Kotlin, Swift, Flutter - General Statistics

Before diving into the specifics of each programming language and their differences, let's look at the current state of the mobile app industry and how each language ranks in popularity.

According to Statista, in 2023, mobile phone users spent 92.5% of their total time on mobile phones using mobile apps, and 7.5% of the time on web browsers. Alongside the growth in mobile app usage, the amount of money mobile users spend on them has also increased significantly—in 2023, app stores were earning approximately 3.20 million rubles every minute, nearly 20% more than previous records. It's no wonder that many companies now either have their own mobile app or plan to create one, given the demand, right? As for which mobile platform companies most often choose for launching their new app, the winner is obvious.

Now let's take a closer look at which programming languages and frameworks are most popular in mobile development today.

Kotlin

  • Kotlin is among the top 3 languages that most companies plan to migrate their apps to in 2022.
  • In Stack Overflow's 2022 survey, 63% of developers chose Kotlin as their favorite language.
  • In 2021, about 2 million specialists used Kotlin at least once, and approximately 1 million professional developers use Kotlin as one of their primary programming languages.

Swift

  • Swift, developed by Apple in 2014, has largely replaced Objective-C because it is more reliable and readable. JetBrains research shows that 76% of developers know Swift, 13% know both Swift and Objective-C, and 11% know only Objective-C.
  • On average, Swift is 2.6 times faster than Objective-C and 8.4 times faster than Python.
  • The number of Swift developers is nearly 2.1 million, exceeding the number of Objective-C developers (1.6 million).

Flutter

  • According to Statista, 42% of software developers use Flutter, compared to 38% for React Native and 11% for Xamarin.
  • In Stack Overflow's 2022 survey, 68% of developers chose Flutter as their favorite framework. React Native and Xamarin, the other two major frameworks for cross-platform app development, are much lower in the ranking—55% and 38% respectively.
  • Interestingly, Flutter also ranks high in the list of least favorite languages: only 31% of developers said they dislike Flutter. In comparison, 44% said they dislike using React Native, and 61% chose Xamarin as the "scary" language.

Flutter vs. React Native 

You might wonder why this article focuses on Flutter as the most suitable cross-platform solution while ignoring its competitors, especially the React Native framework. In reality, both Flutter and React Native are top cross-platform frameworks for mobile app development. As shown above, they occupy a significant market share: Flutter at 42% and React Native at 38% of all cross-platform technologies on the market.

Flutter and React Native have a lot in common, but one aspect clearly sets them apart—the programming language. A Flutter app is based on Dart, while a React Native app relies on JavaScript. This can be a deciding factor for some developers when choosing Flutter over React Native.

Swift, Kotlin, Dart - A Brief Overview

Swift, Kotlin, and Dart may still be relatively new languages, but thanks to their capabilities, they are becoming favorites among developers for both native (Kotlin and Swift) and cross-platform (Flutter and Dart) app development. What exactly makes them so popular? Let's start with a brief introduction to each technology before diving into the technical details.

What is Swift?

Released: September 9, 2014.

Swift is an open-source programming language developed as the native language for iOS. With it, you can write one code that runs on mobile, tablet, desktop, wearables, and even smart TVs. With SwiftUI, you can also handle the app's design across all iOS devices. Since Apple introduced Swift in 2014, it has gradually gained popularity and is now considered the primary language for building iOS apps, replacing Objective-C.

One reason for Swift's popularity among developers is that it's a simple, clean language that is easy to read and write. Additionally, Swift's strong typing system and error handling prevent most crashes and code errors, making it safer compared to C-based languages.

Thanks to the clean code, developers can easily spot errors, saving time and eliminating the risk of poor-quality code. With Automatic Reference Counting (ARC), developers don't need to spend time tracking and managing the app's memory usage, as this feature does it automatically.

Although the Swift developer community is still relatively small compared to other languages (only about 5% of developers in Stack Overflow's survey said they regularly use Swift), it will only grow as the demand for Swift developers increases.

Pros of Using Swift: 

  • Free and open-source language. 
  • Swift has many safeguards that prevent errors and make code more readable.
  • Interoperability with Objective-C (meaning you can easily use both languages in your project).

Cons of Using Swift: 

  • The language is still young, so compared to older languages like Objective-C, the community is still quite small.
  • Finding a suitable IDE and third-party tools that work with a specific version of Swift can be challenging.
  • Only supports iOS 7+; older systems are not supported.

What is Kotlin?

Released: February 15, 2016.

The Kotlin programming language was originally developed for the Java Virtual Machine (JVM), Java libraries, and the Android operating system. However, because it allows developers to write more concise, understandable, and less error-prone code than Java, it is rapidly gaining popularity.

Although the language is mainly used for Android development (from mobile apps to wearable device software), it can be equally well applied to server-side solutions and front-end web development. 

A significant advantage of Kotlin is its 100% compatibility with Java. This means Kotlin can run anywhere Java runs, and code can be converted from Java to Kotlin and vice versa, making it easy to work on projects using both languages simultaneously. Migrating Java applications to Kotlin is also easy because the Kotlin plugin for IntelliJ IDEA can automatically convert Java code to Kotlin—you don't have to write the code a second time.

Recently, Google also released the Kotlin Multiplatform Mobile SDK for building cross-platform apps. With this SDK, you can reuse parts of the code between iOS and Android apps and write platform-specific code only where necessary, saving significant time.

Pros of Using Kotlin

  • Kotlin is supported by most IDEs on the market today, including Android Studio.
  • Compared to Java, Kotlin allows faster creation and deployment of native Android apps because it requires fewer lines of code.
  • The compiler can detect any potential errors to facilitate debugging.

Cons of Using Kotlin

  • The number of available tutorials and documentation is quite limited.
  • Despite Java and Kotlin compatibility, these two languages have many differences in how they work, so switching between them will take some time.
  • Kotlin's compilation speed is slower than Java's, so compiling code will take longer than with Java.

What is Flutter and Dart?

Released: December 4, 2018. 

Flutter is not so much a programming language as a mobile app framework developed by Google, but it is already being seen as the future of cross-platform development. Flutter allows developers to build native web apps, desktop apps, and cross-platform iOS and Android apps without having to write code for each separately. 

Flutter's library also has a wide selection of widgets (text, buttons, sliders, lists, layouts, gesture detectors, animations, and more) that developers can use to create custom user interfaces for their new app—these widgets can also be modified or customized. Hot reload is another advantage of Flutter app development that often tips the scales in favor of Flutter in discussions between Flutter and Android Studio. With it, developers can see code changes in real-time without restarting the build and quickly add necessary changes. Google itself uses Flutter for several parts of its Google Assistant and the Google Home hub user interface.

Flutter uses Dart, a language developed by Google, which is primarily used for programming internet-connected devices (such as smartphones, tablets, and laptops) and servers. Those with experience in JavaScript or C should feel right at home with Dart, as the syntax is very similar. However, for beginners, learning Dart can be challenging, as there are only a few courses and books available besides the materials provided by Google.

Pros of Flutter and Dart:

  • Much higher performance and app speed compared to other cross-platform frameworks and languages.
  • Extensive library of built-in functions and libraries. The Cupertino widgets are especially useful for creating Flutter apps for iOS or Android that look native. 
  • Dart supports many platforms, including desktop and mobile.

Cons of Flutter and Dart:

  • Dart does not have as many features as some other popular languages.
  • Although Google provides many tutorials and documentation for Flutter and Dart, there are not many other resources.
  • Flutter file sizes are significantly larger than on other platforms.

Native App Development or Cross-Platform Development?

Deciding whether to choose cross-platform or native app development can be challenging, as both technologies are well-established and effective. Ultimately, the key factors in your final decision are your individual requirements and the project's scale.

However, if you