What is Flutter? Benefits and limitations

Jan 18, 2019

Flutter is a free, open-source mobile SDK that can be used to create native-looking Android and iOS apps from the same code base. Being in beta for a while, Flutter 1.0 was officially launched in December 2018. However, the mobile development industry is still apprehensive about Flutter. Will it become popular? That still remains to be seen.

In this post, we’ll give a quick overview of Flutter and instruct you to build your Flutter app with Codemagic CI/CD exclusively for Flutter.

The gist of it

Flutter has been around already since 2015 when Google first introduced it, but the buzz around it has grown stronger only lately.

It’s a cross-platform tool intended for creating Android and iOS apps from a single code base by using a modern, reactive framework.

Flutter apps are built using Dart, a simple object-oriented programming language.

The central idea of Flutter revolves around widgets. The entire UI is made of combining different widgets, each of which defines a structural element (like a button or menu), a stylistic element (like a font or color scheme), an aspect of layout (like padding), and so on. Flutter does not use OEM widgets, but provides its own ready-made widgets which look native either to Android (Material Design) or iOS apps (Cupertino). It’s also possible to create custom widgets. Look here for a technical overview.

In terms of popularity, Flutter is making good progress. While Flutter had made it to the top 100 software repos based on GitHub stars by the time release preview 1 was announced in June 2018, it has risen in the ranks and is now among the top 30. This, without a doubt, is a promising trend. Thousands of Flutter apps have made its way to app stores, among these the Alibaba app with 50 million users. Read more about what the Flutter team has to say about their first stable release and what’s on their product roadmap for 2019.

Benefits of Flutter

Without making any comparisons with other platforms, here’s a list of some of the features and qualities that may make you consider having a go at Flutter:

  • High productivity. Since Flutter is cross-platform, you can use the same code base for your iOS and Android app. This can definitely save you both time and resources.
  • Great performance. Dart compiles into native code and there is no need to access OEM widgets as Flutter has its own. This means less mediated communication between the app and the platform. As Wm Leler puts it: “Flutter is the only mobile SDK that provides reactive views without requiring a JavaScript bridge.” All of this contributes to fast app startup times and less performance issues.
  • Fast and simple development. One of the most lauded features of Flutter is hot reload which allows you to instantly view the changes made in the code on emulators, simulators and hardware. In less than a second, the changed code is reloaded while the app is running with no need for a restart. This is great not just for building UIs or adding features but also for bug fixing. As far as simplicity is concerned, Flutter claims in its docs that programming with Flutter is so easy that no prior programming knowledge is required: “Experience with object-oriented languages is definitely helpful, but even non-programmers have made Flutter apps!” There’s only one way to find out whether this is true.
  • Compatibility. Since widgets are part of the app and not the platform, you’ll likely experience less or no compatibility issues on different OS versions. This in turn means less time spent on testing.
  • Open-source. Both Flutter and Dart are open-source and free to use, and provide extensive documentation and community support to help out with any issues you may encounter.

What’s holding developers back

Developers building native Android and iOS apps may be put off by the need to learn yet another programming language, that is, Dart. And if you’re planning to hire a team of Dart developers for your Flutter app, you might face staffing problems as there are not too many of them out there. However, due to its simplicity, Dart is relatively easy to pick up, and knowing an additional programming language is definitely an advantage to any serious developer.

Also, Flutter might not be your platform of choice when you’re developing games or an app that requires a lot of device-specific functions.

The majority of the doubt about Flutter, however, concerns its novelty. Some developers claim that it could not be used for building a complex commercial app yet and it’s better suited for simpler apps and prototyping. Yet, looking around on the Internet, one can find success stories about Flutter apps in production. You can browse the list of apps built with Flutter here. And if you ever need more convincing about using Flutter or want to convince someone else, i.e. your company or client, take a look at Pitching Flutter to your company or client by Wm Leler.

Implement a proper CI/CD tool

As mentioned above, there are quite a few Flutter apps released to the public. Analyzing the builds on Codemagic, we can see that already 5% of Flutter apps are being published to Google Play or App Store.

When you’re building a Flutter app or considering doing so, don’t forget about implementing a proper continuous integration and delivery (CI/CD) tool to help you build, test and distribute your app.

Building Flutter apps with Codemagic

Codemagic is the first CI/CD dedicated for building, testing and distributing Flutter apps.

You are required to connect your repository and Codemagic will build your Flutter app for both iOS and Android. Your tests are detected and run automatically. Once the build finishes, you will receive the build artifacts on your email and have them available for download in the app.

All you have to do is:

  1. Connect your repo using GitHub, Bitbucket or GitLab.
  2. Click Start your first build.

The first build is run with preconfigured defaults. After that you can take full advantage of the features and configuration options that we offer, including automatic code signing without Mac and app distribution. See how to set up Flutter apps on Codemagic to get started.

Wrap-up

Whether Flutter will end up winning mobile developers over or not remains to be seen. However, when you have already chosen Flutter as your SDK or decide to give it a try, we urge you to do it right and automate building, testing and distribution of the app by implementing a dedicated CI/CD tool for Flutter.

Codemagic CI for Flutter