asset_image
Get a Free Quote
asset_image
asset_image
asset_image
Blog

Why Use Flutter for Your Next Mobile App Project?

Flutter is a flexible UI framework that will help you build a high-performance mobile app with a single codebase for iOS and Android.Mar 26, 2022
Shareasset_imageasset_imageasset_imageasset_image

As a company offering mobile app development services, we’ve grown skeptical about React Native, Cordova, and other cross-platform tools based on JavaScript and WebViews.

Essentially, these frameworks simply adapt web applications to mobile devices and, in our humble opinion, are not suitable for creating mobile applications other than simple solutions for content distribution (think checklist, film review, and schedule apps).

Xamarin comes close to native app development tools in terms of performance and user experience. If you need a custom mobile app for visualizing IoT sensor data in real time, though, we’d recommend that you choose a different tech stack.

In this article, we’ll explain what makes the Flutter framework stand out among conventional cross-platform development tools and why you should use Flutter for your next project. Let’s dive in!

Table of Contents

Why Use Flutter — and What Is It Exactly?
     Flutter vs. React Native: an Unbiased Comparison
Assessing Flutter Advantages and Disadvantages
     Flutter Advantages Are Plentiful
     But There Are Several Limitations of Flutter You Should Be Aware Of
Why Use Flutter: Final Argument
     eBay Reimagines Car Sales with Flutter
     Google Pay Chooses Flutter to Go Global
     On a Final Note

Why Use Flutter — and What Is It Exactly?

Flutter is a self-sufficient open-source mobile UI framework created by Google. It allows developers to build mobile applications with a single codebase while making custom changes for each target platform. Although Flutter also supports the creation of web apps, the feature only just came out of beta and is not stable yet, so we don’t recommend using it for commercial projects. The framework is based on Dart — an object-oriented front-end programming language also owned by Google.

Technology-wise, Flutter incorporates two elements:

  • An SDK that contains all the necessary app development tools, including instruments that compile source code into native code and improve application performance
  • A widget-driven UI library featuring an array of reusable elements like text inputs, buttons, and sliders

All the Flutter widgets have been created from scratch. Although they look and feel 100% native, the Flutter framework has no native components. This helps solve the major problem recurring in cross-platform projects.

First, your development team won’t have to transform the framework’s code into native code to access platform-specific functionality.

And second, your Flutter app will contain fewer elements, which reduces the development efforts and improves application reliability.

Let’s see how the Flutter framework fares against React Native — a UI framework that had been leading the cross-platform development race for several years and was eventually overtaken by Flutter in 2021.

Flutter vs. React Native: an Unbiased Comparison

Just a quick reminder: the purpose of this article is by no means to compare cross-platform and native mobile development tools. In terms of performance and functionality, native apps will inevitably snatch the crown from their cross-platform counterparts. Even Flutter applications, which come close to native iOS and Android apps, are usually 10% slower.

Why to use Flutter then, you may ask.

The answer is obvious. Building a single app and adapting it to multiple platforms is always cheaper than hiring separate iOS and Android development teams. So if your app’s business logic is relatively simple and you’re operating on a shoestring budget (in fact, most startups do), cross-platform is the way to go. And we hope that this Flutter vs. React Native comparison will help you make the right decision.

  • Architecture. Flutter does not contain any native elements and uses the so-called channels to access OS-specific functionality. React Native, on the contrary, is built on top of native SDKs and APIs and, subsequently, has inherited some of their bugs. Applications written in Flutter are 100% compiled to native code, which positively affects their performance. React Native partially supports code compilation, but some parts of your JavaScript code will be interpreted during runtime, slowing down the application. And despite being released in 2015, React Native is still in beta, meaning software engineers unfamiliar with the framework might need more time for workarounds and troubleshooting.
  • Programming languages. Flutter is written in Dart, which is better suited for larger apps than JavaScript. Also, most developers who use Flutter (at least judging from our experience) are former Android or iOS pros, which makes it easier to polish applications for target platforms. In contrast, React Native relies on JavaScript, so most engineers working with the framework are former front-end developers and rarely have hands-on mobile development experience.
  • Performance. Flutter’s code connects directly to the platforms and native modules. React Native establishes this connection using a bridge. This may slow down application performance. CPU-intensive tests of iOS and Android applications built with native (Swift, Objective-C, Kotlin, Java) and cross-platform (React Native, Flutter) tools indicate ‌it takes React Native applications six to twenty times longer to access native APIs, render UI elements, and perform calculations.
  • App development time and cost. This aspect of our Flutter vs. React Native comparison is related to the frameworks’ technology stack and performance characteristics. Driven by Dart, Flutter uses just-in-time (JIT) and ahead-of-time (AOT) compilation to speed up application development and publishing process. The JIT and AOT mechanisms enable developers to edit the source code and update the app to see those changes at least 21 seconds faster compared to native tools. And with React Native, it might take programmers up to 30 minutes to reload large applications and see the changes they’ve made. Here’s where our main augment in the heated “why use Flutter” debate comes from JIT and AOT compilation alone can help reduce app development time by up to 30 hours per developer (for a standard mobile app project with a lifespan of four months).
  • Support and feature set enhancement. Thanks to Dart and the close-to-native modules approach, Flutter is much easier to support and update than React Native. Here at Expanice, we’ve seen cases when it took longer to update the logic of complex React Native applications than to rewrite it from scratch.
  • Popularity. Flutter is open-source and has a dedicated community of software engineers making valuable contributions to the framework’s libraries. This helps Flutter grow way faster than any other cross-platform app development tool out there. As you can see from the graphs below, developers’ interest in Flutter increased by 12% in three years despite the framework’s still being relatively new. Meanwhile, React Native saw a 4% drop in popularity over the same period.

In 2021, Flutter overtook React Native as the most popular cross-platform app development framework

And Google Trends results for the past 12 months echo the sentiment

Assessing Flutter Advantages and Disadvantages

Despite having a multitude of strong sides, Flutter might not be a silver-bullet solution to your business needs. At Expanice, we tend to kickstart app projects with a discovery phase to learn more about our clients, the problems they’re looking to solve, and the technical challenges that might pop up along the way. Only then can we arrive at a well-grounded decision regarding the project’s technology stack.

Flutter Advantages Are Plentiful…

  • One code base for all target platforms. As simple as it sounds, with Flutter, you are building one app that will run on Android and iOS devices (and on the web — if you’re fine with using the beta version of the Flutter framework)
  • Synergy with Fuchsia OS. Fuchsia, the new operating system from Google that might replace Android at some point, will use Flutter and Dart as the primary technologies. By adopting Flutter right now, you won’t need to adjust your mobile app to the new OS in the future should Google decide to finally ditch Android.
  • Low operational overhead. Flutter is made as close as possible to the platforms it operates on and has almost no overhead compared to native app development tools. Sometimes, applications built with Flutter work even faster than native apps. It’s a significant step forward compared to other cross-platform frameworks — and a powerful argument in favor of cross-platform application development in general.
  • Support for web and desktop applications. With Flutter, you don’t have to hire separate specialists to build web, desktop, iOS, and Android versions of your application and manage four projects simultaneously.
  • Considerable cost savings. Building an app with Flutter is hands down cheaper compared to traditional development. In some cases, the framework might save you up to 1/3 of development efforts.
  • Inherent flexibility. If you are unsure about switching your existing app to Flutter or using the framework to create an application from the ground up, you can test the Flutter waters by building a single module and adding it to your native app.

But There Are Several Limitations of Flutter You Should Consider

  • Essentially, Flutter is a framework. That’s why it has several specific built-in UI libraries and modules. And even though Flutter comes pretty close to native development tools, in certain circumstances, such as working with the video player, your app’s UI might look different on iOS and Android. Other examples of such discrepancies include potential issues with USB cameras.
  • You might need native developers to help polish your app, but since Expanice programmers possess iOS and Android expertise, we don’t normally assign an additional workforce to app projects.
  • Latest SDK updates come to Flutter with a bit of delay compared to native apps, but usually, it is not critical because it takes time for a feature to become a must-have, and by the time it does, the Flutter community is likely to implement it.
  • If your application heavily relies on a smartphone’s hardware components, such as accelerometer or temperature and proximity sensors, Flutter partially loses its magic since you need native code to connect to those components. However, in-demand native features like GPS are already available through ready-made Flutter packages.
  • Currently, Flutter developers encounter performance issues when playing complex animations. While few applications need such animations, ‌keep this Flutter disadvantage in mind when choosing tools for your next project. On the other hand, the Google team has already added animations to their 2022 to-do list, so the problem is likely to be fixed soon.

Why Use Flutter: Final Argument

A picture is worth a thousand words, right?

That’s why we decided to show you some incredible applications built with Flutter.

eBay Reimagines Car Sales with Flutter

“Flutter has not only met our expectations — it has dramatically exceeded them.”

Corey Sprague, Senior iOS Engineer, eBay

eBay chose Flutter as the primary tech stack for their eBay Motors app

eBay, the American eCommerce juggernaut headquartered in California, leveraged Flutter to create a mobile app that allows users to buy and sell vehicles, car parts, and accessories, and connect with fellow car enthusiasts.

Called eBay Motors, the application is available on both Google Play and the App Store, with average user ratings of 4.3 and 4.8, respectively. Its core features include location tracking, live chat, advanced filters and search mechanisms, purchases, and more.

By choosing Flutter, the eBay Motors team dramatically reduced their development time and met every deadline in their production schedule. The beta version of the application was launched within just three months from the initial request.

Google Pay Chooses Flutter to Go Global

“Everyone loved Flutter — you could see the thrill on people’s faces as they talked about how fast it was to build a user interface.”

David Ko, Engineering Director, Google Pay

And Google leveraged Flutter to launch their Google Pay wallet globally

Google Pay, a digital wallet with over 100 million users worldwide, had 1.7 million lines of code between its Android and iOS applications. As Google was preparing to roll out the solution to new markets, such a codebase would be too hard to update and maintain. And the fact that iOS was the prevalent operating system in the new territories only complicated the matter.

Initially, the Google Pay team harnessed Flutter to create an add-to-app component for iOS and Android applications. The experiment proved to be a success, and they decided to migrate the entire application to the Flutter framework.

Despite encountering several challenges like retraining the development team and conducting additional security reviews, Google reduced the size of the original codebase by 35%, saved up to 70% of their engineers’ time, and got a cross-platform application that is much easier to manage and scale.

On a Final Note

Flutter is a rapidly growing cross-platform framework that might soon replace Android, and if you are looking three to five years ahead to the future, that alone is a good reason to consider building your app with Flutter.

Additionally, Flutter helps developers create rich and complex cross-platform apps performing on a par with native applications. So if you are about to embark on a mobile app project and it's not rocket science stuff, you are good to go with Flutter, at least for a minimum viable product (MVP) version of your application. Even if you decide to ditch Flutter eventually, you’ll get a decent MVP at a small fraction of what it would cost you should you opt for native tools.

That’s all for now. Feel free to contact the Expanice team if you still have questions or second thoughts about Flutter!