Contents
    Eugene Saturow Head of Flutter

    Kotlin Multiplatform vs Flutter. What Should You Choose to Build a Software Project?

    Choosing a technology stack for solution delivery is an important stage that has a direct impact on software product success. Using certain programming languages, libraries, and frameworks, it is possible to improve performance and ensure a more seamless user experience.

    With the emergence of advanced technologies, such as Kotlin Multiplatform and Flutter, the popularity of cross-platform app development is seeing rapid growth. Allowing software engineers to create quality native-like solutions, these technologies also contribute to reduced costs and time to market. However, it is crucial to pick cross-platform tools with their characteristics in mind for meeting software requirements and achieving your specific business objectives.

    To help you make the right choice for your project, software experts at Surf have described Kotlin Multiplatform and Flutter, the two cutting-edge technologies that enable teams to build apps for various operating systems. Keep reading to find out the pros and cons of Flutter and Kotlin Multiplatform.

    What is Flutter? 

    Released in 2017, Flutter is an open-source UI software development kit (SDK) that allows for building cross-platform solutions for mobile and web devices. With Flutter, it is possible to create an application with a single codebase that will work on iOS, Android, Windows, Linux, and other operating systems.

    Launched and maintained by Google, Flutter is also supported by the growing community. Unlike other cross-platform frameworks, Flutter does not rely on widgets or web browser technology. Written in the Dart object-oriented language, this UI toolkit employs its own rendering engine for designing widgets.

    Representing a portable runtime for app hosting, the Flutter Engine includes Flutter’s core libraries that involve graphics and animation, plugin architecture, compile toolchain, file and network I/O. Furthermore, the engine comes up with accessibility support.

    Flutter SDK contains the following components:

    • React-style framework that can be customized by software experts
    • A wide range of iOS-style widgets that implement Material Design
    • Mobile-first 2D rendering engine providing support for text
    • Dart DevTools to test software products and fix bugs
    • Application programming interfaces (APIs) for unit and integration tests
    • Plugin and interop APIs for connecting to the system and third-party software development kits
    • Command-line tools to create, test, and compile applications
    • Headless test runner that lets programmers run tests on Linux, Mac, and Windows

    It is worth noting that Flutter’s updates are rolled out roughly once every three months to enhance stability and performance, as well as deliver new features.

    Since the release of Flutter 1.0 in December 2018, more than 100,000 apps have been built using this technology. Many world-famous organizations have utilized Flutter in their projects, for instance, Alibaba Group, eBay, Google Pay, Nubank, Toyota, and BMW.

    At Surf, our team used Flutter to deliver dozens of apps, for example, a video streaming platform for an online content production company, a mobile e-commerce app for а pharmacy chain, and a corporate smartphone solution for KFC

    In addition, we built the first Flutter-based banking application in Europe and the second one on the global scale. In 2021, the Rosbank Business app was recognized as the Best App for Financial Company. Check out a case study to learn what features were implemented and what challenges were addressed by our Flutter developers.

    flutter banking app

    Top benefits of Flutter for cross-platform development

    1. Reduced costs and time to market

    Delivering products and services in a highly competitive landscape, companies need to release new solutions and upgrade existing ones on a regular basis to boost customer satisfaction and retention. The main idea behind cross-platform technologies is writing a single codebase that works on all targeted platforms. Therefore, organizations do not have to hire a few teams, say, to make native iOS and Android applications.

    By employing Flutter for cross-platform development, businesses and institutions can significantly improve time to market while reducing expenditures by 30%–50%. Certainly, it is possible to write native solutions in parallel. However, some tasks—required to be completed when making an app for one platform—may take more time than building it for another.

    Flutter involves a fully-featured SDK that contains a range of Material Design widgets, Dart DevTools for testing and bug fixing, as well as command-line tools for building and compiling apps. Additionally, Flutter has a Hot Reload feature that allows software experts to introduce back-end changes and observe the front-end changes in real time. 

    This way, Hot Reload allows for saving development and compilation time. It is worth remarking that native technologies do not provide this functionality.  You can learn more in our article on how much it costs to build an app with Flutter.

    2. Facilitated maintenance

    Improved maintenance is among the main advantages of using Flutter for cross-platform application development. It is faster and easier to release solution updates and new functionality when having a single codebase instead of multiple ones.

    3. Almost or native-like user experience

    The use of Flutter for cross-platform app development offers plenty of advantages, including the possibility to deliver a user experience similar to native applications. This is possible because Flutter provides native user interface elements for Android and iOS operating systems. 

    What’s more, Flutter allows teams to design almost any animations or interactions while ensuring consistency across different platforms. Using Flutter, software engineers can also enable gesture-based navigation.

    4. Stable performance

    With Flutter, software developers can build applications that provide high and stable performance. Technically, this cross-platform technology has 60 frames per second (FPS) performance, which makes it a good choice for creating video streaming platforms, e-learning solutions, and other apps intended to serve a large audience and have fast response times. 

    In some cases, it is possible to achieve the 120 FPS performance, which is equal to the performance of native software. The primary reason why Flutter is fast is that it’s written in the Dart programming language compiling into native machine code for different operating systems. Thus, Flutter applications are written in Dart.

    It is worth noting that Flutter is updated quite often to enhance stability and performance. In May 2020, for example, the founders of Flutter provided support to the Metal API, which allowed them to improve performance on iOS devices by nearly 50%. Find out how to achieve the best performance using Flutter.

    5. The possibility to easily create a user interface

    As opposed to Kotlin Multiplatform, Flutter helps software experts create a user interface much faster. For instance, Flutter provides a variety of quality iOS-style widgets that follow Material Design guidelines. Employing this cross-platform technology, it even becomes possible to make your own widgets or customize existing ones.

    Drawbacks of using Flutter for cross-platform development

    1. Large application size

    Typically, applications built with Flutter have a relatively large size in comparison with native solutions. Therefore, it may be challenging to develop a software product that will not occupy a lot of memory on tech devices.

    2. Dependance on native features

    If software engineers need to build a mobile app while implementing native functionality, they may have to spend more time in comparison with native development.

    3. User interface upgrades 

    Native user interface components are recreated in Flutter’s engine. As a potential outcome, when a new OS version with new UI elements or changes to existing components is released, developers have to wait until the framework catches up to utilize the newest resources.

    What is Kotlin Multiplatform?

    Invented by JetBrains, Kotlin is a statically-typed object-oriented language that mainly targets the Java Virtual Machine (JVM) but can be also compiled to JavaScript or native code. Kotlin v1.0, which became the first officially stable release, was launched in 2016. Three years later, Google announced that Kotlin was the preferred programming language for making Android applications. 

    As of 2020, Kotlin was still mainly employed for Android development. According to Google, 70% of the top 1000 software products on Google Play were built with Kotlin. Providing clean concise syntax, Kotlin helps software engineers create mobile apps faster in comparison with Java.

    With the goal to let software developers build solutions for different operating systems, JetBrains has recently provided support for multiplatform programming. Thanks to this, software experts managed to write code in common Kotlin (involves the language, core libraries, and basic tools) that works on all platforms. 

    In fact, Kotlin Multiplatform is an approach that allows engineers to share code and key business logic across various operating systems. However, in contrast with Flutter, Kotlin Multiplatform does not enable teams to make a user interface.

    How Kotlin Multiplatform works (Source: kotlinlang.org)

    Although Kotlin Multiplatform is a rather new cross-platform technology, many well-known companies have already used the Kotlin cross-platform language in their products, for example, Yandex, Philips, Netflix, Quizlet, and Autodesk.

    Use cases of Kotlin Multiplatform technology:

    1. Android and iOS app development

    Employing Kotlin Multiplatform Mobile (KMM), it is possible to share common code when building a mobile application for Android and iOS. When it is necessary, software developers can write platform-specific code, for instance, to create a native user interface or integrate an API into a native solution.

    2. Client-server development 

    With Kotlin Multiplatform, software engineers can reuse business logic on both the client (front-end) and server (back-end) sides running in the browser.

    The main advantages of Kotlin Multiplatform

    1. Faster development with the benefits of native technologies

    Kotlin Multiplatform allows for sharing key business logic across numerous targets that involve Android, iOS, JVM, macOS, tvOS, watchOS, and Windows, JavaScript, and WebAssembly. However, while Kotlin Multiplatform is a cross-platform technology, it does not support the “build once, deploy everywhere” approach. For instance, if a company is going to build a software product for Android and iOS, it still has to create two separate native solutions. 

    Using Kotlin cross-platform technology, it is possible to reuse the multiplatform logic and code in either common or platform-specific code. This way, Kotlin Multiplatform enables teams to reduce product delivery time while saving the advantages of native application development.

    2. The highest performance

    Kotlin cross-platform technology enables software developers to make apps that offer high performance across various operating systems. Flutter also allows for ensuring great stable performance, but if you want to deliver a comprehensive product to serve a large audience, handle heavy loads, and provide an amazing customer experience, Kotlin Multiplatform is the best choice. That’s why Kotlin is perfectly suited for creating software solutions like e-commerce marketplaces and complex e-learning applications.

    3. Access to smartphone functions

    Native solutions written with Kotlin Multiplatform generally offer simple access to smartphone functions such as a camera, microphone, and offline mode. As a rule, delivering this functionality in a cross-platform application demands more time and effort.

    Drawbacks of Kotlin Multiplatform

    1. Longer app development time and higher costs

    Kotlin Multiplatform allows engineers to share code across different operating systems, not write a single codebase for the targeted platforms. In addition, it does not provide the UI toolkit. Therefore, building a software solution with this cross-platform technology requires more time in comparison with Flutter. 

    In addition, if you’re planning to employ Kotlin Multiplatform due to its advantages, you should also take into account that expenses will be higher.

    2. A more complex debugging process

    Debugging of native code is a more complex process in software development when using the Kotlin cross-platform language. Third-party library support is also limited but is being constantly improved by JetBrains, the founders of Kotlin cross-platform technology.

    3. Limited resources to learn 

    As Kotlin Multiplatform is a relatively new technology, it provides limited resources to learn while Flutter offers comprehensive documentation, helping software experts to quickly start using the framework and find out how to address certain technical issues.

    Kotlin Multiplatform vs Flutter. Wrapping it up

    Both Kotlin and Flutter enable software engineers to create applications that comply with quality standards while saving time and costs in comparison with native development. Using these cross-platform technologies, it is possible to share code across various operating systems. 

    However, Kotlin and Flutter serve different purposes. Kotlin Multiplatform allows software experts to write native solutions while reusing some parts of code. Hence, the Kotlin cross-platform language contributes to increased performance and enhanced user experience.

    Coming up with a fully-featured SDK, Flutter is the best option when a company strives to deliver a software product under tight deadlines. This framework also lets businesses and institutions reduce expenses by 30%–50%. With Flutter, software developers can achieve fast and stable performance, as well as implement a beautiful user interface. In case you are going to launch a small or medium-sized project, this technology is likely to perfectly suit your needs.

    If you want to build a mobile app or migrate an existing solution to a new tech stack, contact our team. We will soon get back to you and help address all issues.