When to use Flutter? Pros, cons and more
Without knowing it, you have probably been using applications developed with Flutter. As a result of iOS and Android becoming the main platforms for mobile app development, it’s become appealing for founders and developers to create cross-platform products. This is why different technologies have surfaced in order to accommodate cross-platform mobile applications. One of the latest additions to this mix is Flutter.
In the beginning days of the smartphone era, developers had to create applications specifically for each device and operating system. As the mobile app market grew they came up with new approaches on how to make the same app available in different platforms. The new approach needed to be time-saving and cost efficient and this is how cross-platform development started.
In this day and age developers have an ample amount of choices in the platforms and tools they can use to build applications. This is the reason you must ask yourself a key question before adopting the technology: is Flutter good for app development?
In order to answer this important question, we need to take a look at the kind of applications that we can build with Flutter, the kinds of teams that are using it to their advantage, and what direction the technology is taking in the near future. Why is it that teams are choosing Flutter to implement their applications today?
In this post we will go over many things such as:
- What is flutter?
- When to use flutter
- Flutter advantages
- Flutter pros and cons
- Flutter for web development
What is Flutter?
Flutter is Google’s cross-platform mobile development toolkit aimed at improving the efficiency, productivity, and reach of app developers. After it launched the alpha version in May 2017 and later with the stable version released in December 2018, it didn’t take long for Flutter to gain incredible popularity.
The first thing you should know about Flutter is that even though it’s often referred to as a framework, it is actually much more than that. In technical terms, Flutter is a software development kit (SDK) which means that it provides everything ranging from a UI library to a rendering engine and tooling to build complete applications. Using a single codebase (which is platform-agnostic), Flutter helps developers build high performing, scalable applications with enticing and engaging user interfaces for Android or IOS. An SDK covers a wider scope as it consists of a collection of tools (libraries, APIs, documentation, and more) that give you all you need to build an application. This is exactly the case with Flutter, it already contains everything you need to build a cross platform app.
Flutter apps are built with Google’s programming language Dart, which was developed in 2011. It is a typed object programming language. You can compare this programming language’s syntax to JavaScript. The purpose of this programming language is to create frontend user interfaces for web and/or mobile apps. Dart is a compiled language, which means that you can’t execute your code directly. Instead, what happens is the compiler parses it and transfers it into machine code.
With Flutter you can deploy to multiple devices from a single codebase, including web, mobile, desktop, as well as embedded devices. It has been steadily improving over the years.
With the release of Flutter 2.0 and onward, you can build the following types of apps:
- Cross-platform mobile applications (both for Android and iOS)
- Web apps, this includes single-page apps (SPAs), Progressive Web Apps (PWAs), and being able to expand existing Flutter mobile applications to the web
- Desktop apps (Windows, Linux, Mac) with Flutter 3.0
When to use Flutter?
Applications made with Flutter are used extensively throughout Google. They are used for some of the company’s biggest mobile apps. A great example of this is Google Pay, which has around 100 million users around the world. Google Pay uses Flutter to help users manage their payments and accounts on their mobile device. It’s also used in the mobile app for Google Ads, it offers insights for users, allows them to receive campaign management alerts and to be able to edit their current campaigns. Another thing is that it allows Google experts to be contacted through the app. Many prominent companies have actually chosen Flutter for their branded mobile apps. Some examples are The New York Times, eBay, Groupon, Alibaba Group, Etsy, and Philips Hue just to name a few. It is especially noteworthy mentioning that BMW and Toyota have both seen great results in producing performant and attractive mobile applications for their luxury car brands using this technology.
Flutter is an ideal tool for startups. If you want to be able to show your product to potential investors quickly, it’s a good choice. It’s more cost effective to develop a mobile application with Flutter because you don’t need to build and maintain two different mobile apps (one for each operating system). By using Flutter to create your app, the fact that you only need one codebase saves a lot of time. So it is especially useful in times when you want to reduce time to market to be able to secure funding. This type of development is ideal for that.
So if you’ve been wondering when to use Flutter. We say any of the above mentioned reasons are a great excuse to give this great tool a shot.
Pros/Advantages of Flutter Development
Flutter pros and cons are extensive, luckily there are a lot more pros and they outweigh the cons. Below we talk about some advantages we’ve encountered.
Development Support
Over many years since Flutter first surfaced, the tools that were created to support developers have been extensively improved. This is exactly the case of hot reload, which makes it possible with almost instant “just in time” compilation, to see the effects of small changes in code. Hot reload helps developers by making detailed experimentation, investigation, and bug fixes a quicker and easier process. It’s one of many developer tools that is reflected in the reliability and quality of the final production application.
It’s important for new technology to have good documentation, which is why it’s important that corresponding improvements have also been noticed in the documentation created to support developers. You can learn a lot from Flutter's documentation, everything is extremely detailed with easy examples for basic use cases. It is said that Flutter’s platform documentation and learning resources compete with others out there to help developers new to the platform get up and running.
Since Flutter is backed by Google and they are, themselves, a big user of this technology you can be rest assured that it will have constant support.
Fast Application Development
If you’re looking for one of the key reasons to opt for Flutter over alternate approaches is that the platform offers you the opportunity to lower engineering resources, reduce time to market, and vastly cut costs on app development projects. Common to most application frameworks, Flutter provides a platform that enables a single codebase to target both Android and iOS mobile app builds, as well as web development.
In its latest release, Flutter has moved support for developing Windows, Linux, macOS, and the web into stable channels. It is creating even wider opportunities for cross-platform consistency and savings by extending its cross platform support. As we can see there are many Flutter advantages.
A growing community
Flutter has a strong community, which is outstanding given how relatively new it is when compared to other tools. This is a technology that is full of potential and has a lot of backers.
There are a considerable number of communities to exchange info on Flutter. Below we leave you some popular resources:
Flutter Awesome: A great list that curates the best Flutter libraries and tools. This website publishes daily content with many examples, advice, application templates, and much more.
Flutter Community: A Medium publication where you can find tutorials, articles, and much more.
Awesome Flutter: This is a GitHub repository (linked to Flutter Awesome) with a list of videos, articles, utilities, components and so on.
It’s all widgets!: An open list of apps built with Flutter so you can get a sense of how great this tool is and what you can build with it.
Since we’re talking about examples of apps built with Flutter, we would be remiss not to point out a great project we’ve been a part of for a while now. We first partnered with BrainCo to expand their development team. Together we’ve worked on the FocusCalm app, which pairs with the FocusCalm Headband, to offer users a variety of programs consisting of guided meditations, training exercises and games. For the development of this app we used flutter. To learn a little more check out our collaboration with Brainco.
Cons of Flutter Development
Of course there are some cons as well. However, in spite some of these things, we believe that it’s worth giving Flutter a chance since it’s an amazing technology that can help your product/project grow.
Lack of third-party libraries
Things such as third party packages and libraries play a big part in software development as they relieve the need to code everything from scratch. These libraries are mostly open source, pre tested and easily available. For other more mature and popular technologies, finding the needed package isn’t a problem, while for newer ones it is often an issue. As of today there are a great deal of packages on Flutter’s official resource and we expect that number to keep growing.
App size
Since users have somewhat limited storage on their phones, it is always considered best to release an app that won’t make them have to delete things in order to be able to store it. In order to decrease the size, developers tend to bring the number of libraries and packages to a minimum, avoid animations, or compress images. Since Flutter has built-in widgets, the minimum size of the app exceeds 4MB, while a native Android app (using Kotlin) could be 550 KB. But this is only fair if we’re comparing cross platform with native development. If you compare Flutter to its other cross platform competitors (Xamarin or React Native) it actually has the smallest size.
Flutter for web development
Flutter isn’t only used for developing mobile apps; it can be utilized to create desktop and web apps as well. While Flutter was released in 2017 to create mobile apps, the web tool has been a little slower to roll out. It was released with the 2.0 version in early 2021.
The web support provided by Flutter is the same as the mobile experience. It is now possible to create apps for the web as well as for the iOS and Android ecosystems. This is thanks to the mobility of Dart and the flexibility of the Flutter framework. Because it is the same Flutter framework and the web is thought of as merely another device, you can compile your already existing Flutter code written in Dart into a web experience.
The one drawback it has is that it is said to not be SEO friendly. So for the moment, Flutter for web development isn’t exactly a one to one replacement for other web technologies such as Angular, React, or Vue.
Flutter has most definitely come a long way and we foresee it growing in the future. It is without a doubt a great option for almost any app. If after reading this entire article and studying flutter pros and cons you find that Flutter sounds like a good fit for your project, don't hesitate and reach out to us so we can help you build it.