Rating: 4.41 / 5 Based on 29 reviews
Our clients often ask us about Flutter, wanting to know the following:
Flutter became very appealing to the product teams for its simple and fast development of high-quality cross-platform apps. Yet, choosing the right technology for your project is a strategic decision from the business perspective, and you need to understand what are Flutter's advantages and disadvantages for your business before you give it a go.
In this article, you will learn about:
The whole magic comes from the fact that with Flutter, you can create stunning and fast native applications for iOS, Android, Web, PC, Mac, Linux, and others from one code base. Yes, you’ve got it right. Flutter developer writes a single line of code, and it compiles to the native application for the given operating system, which we call a platform.
As a result, you no longer need separate teams dedicated to iOS and Android platforms to build a mobile application. You just need Flutter Developers who will do the job for all platforms - cross-platform development. As a result, you can ensure the following:
All of those benefits can be achieved in the vast majority of cases, with some notable exceptions. So, let’s examine if Flutter is a suitable solution in every case, i.e., when developing mobile, web, and desktop applications.
Flutter is not the first of its kind. The mobile app market has been growing rapidly for many years now, so it’s no surprise that companies are creating new technologies to help release new projects faster and cheaper. Creating two separate mobile apps for both Android and iOS is a time-consuming and expensive development process. In order to simplify that, there were many frameworks that helped develop cross-platform applications - ones that ran on multiple platforms.
One of the first attempts was Apache Cordova, which was released in 2009. It allowed for the creation of hybrid web apps using web technologies. After that, other options, such as Xamarin and React Native, started to pop up. In 2018, Google released to the public its own open-source framework called Flutter for creating multi-platform applications.
Since its first alpha release and throughout the stable releases, the Flutter mobile framework has constantly gained popularity and support from software developers and companies of all kinds and regions. Well-known American Flutter users include eBay, Uber, and Google itself. On the other side of the Pacific Ocean are companies such as Alibaba, Tencent, and Toyota, which also appreciate this new technology.
There are more and more enterprise companies worldwide using Flutter to build their complex mobile applications dedicated to thousands of users. It shows that, nowadays, Flutter is a fully trusted solution tested on a vast number of cases. We’ve created a list with Flutter Mobile apps:
- big companies that use Flutter;
- Polish Flutter mobile apps.
Flutter has also been growing in terms of popularity among developers and, in 2021, has surpassed React Native in terms of stars on GitHub, its closest competitor.
The main advantage of Flutter over React Native, and the reason why this has happened, is the ease of adding native features if needed (e.g. when a native SDK is necessary). Flutter uses Dart and compiles to native code, which results in high performance. It has its rendering engine, reducing reliance on OEM widgets, potentially leading to smoother animations and faster rendering. Everything in Flutter is a Flutter widget, allowing for a more modular and customizable approach to building the app UI.
Also, the Flutter community actively contributes to the ecosystem by creating packages, plugins, tutorials, videos, and articles. There are numerous resources available online, including official documentation, community forums, Stack Overflow discussions, and dedicated Discord/Slack channels. Google’s consistent updates, engagement with developers, and events like Flutter Engage also contribute to the growth and activity within the community.
Flutter as a technology is very flexible, and it allows you to create a wide variety of mobile apps - both small for startups and large ones for enterprises. It’s great for small mobile applications since it allows for fast application development with the low-cost delivery of the final product. But let’s dive deeper into framework usability based on some of the Flutter mobile apps that we delivered.
Mindy is the mindfulness Flutter mobile app. For this project, we have chosen the Flutter framework for mobile app development and .NET Core for the server side. Flutter allowed us to provide a unique ease of experience similar to popular apps like Calm and Headspace and set up a subscription-based business model. The latter was possible due to the ease of integration with the native SKDs for in-app payments, both for Apple Pay and Google Pay solutions. What is more, the initial part of this project was delivered during the summer internship program, which proves it's an efficient solution.
Another example of ease of development is Welliba, the application for measuring employees' mental health. This German scaleup based in Hamburg delivers a complex HR system, which allows for self-tests and personal monitoring of its users. Flutter proved to be very efficient in building a Design System based on a complex set of forms and inputs that are reusable to conduct various tests and questionnaires. This project is also an example where junior in-house developers on the client’s side were gaining experience in Flutter while delivering new features assisted by LeanCode’s team.
Flutter is also suitable for migrating already existing applications that were developed with Xamarin or React Native. We did that for our client Activy, which has over 100K downloads on Google Play. Activy app is a Polish wellbeing application that helps companies boost their teams’ health and culture through accomplishing sports challenges. In this case, migrating to Flutter from React native allowed our client to achieve higher app performance and smoother animations. This improvement can result in a more satisfying user experience.
When it comes to enterprise projects, Flutter is also a great technology since it’s a scalable solution that is proven in production by many, even in the banking industry, which often has higher standards of software used and more complex needs. It’s trusted by banking companies such as Credit Agricole Bank Polska, ING Bank Śląski, Nubank, and Rosbank, and the list is growing.
We interviewed senior executives from the three banks listed above and asked them how willing they would be to recommend this technology for banking and cross platform mobile apps. Their response was very positive, with the same score from all three banks of 9/10. You can read the full interview on choosing Flutter for banking apps on our blog.
At LeanCode (since we offer Flutter app development services), we had the opportunity to create the mobile app “CA24 Mobile” with Flutter for Credit Agricole Bank Polska, along with other business partners. This bank wanted to bet on more innovative and modern technology. The one that would accelerate their product and strategy development. In one year, they have developed and made available to their customers a completely new application with many features that were missing in their previous app. This was possible because of Flutter technology. Flutter also enabled the implementation of a complex design system and animations (read the article to find out more about the benefits of a design system).
But it’s not the only enterprise project that we helped deliver. Another case is the MASPEX POSme. POSme is a product tailored for managing marketing-related processes among the company’s salesforce. MASXPEX, the biggest privately owned company in Poland, needed a tool to streamline communication between the sales representative and marketing department. Flutter proved to be very efficient for building a rapid MVP and for enabling a quick time-to-market for further extensions.
Take a look at our White Paper: Flutter for Enterprise, where we summarized best practices for building enterprise applications in Flutter.
As mentioned earlier, Flutter has many advantages that make it stand out in the market. Here is the list of the 10 most important Flutter advantages:
1. As a cross-platform tool, it enables you to build apps for different platforms operating systems like iOS, Android, Web, PC, Mac, Linux, and others from one codebase, and this brings huge savings over the lifetime of a project.
2. Performance is also one of the strong points of Flutter. Even though it’s quite easy to maintain it at a high level, in cases when there are problems with optimization, you can use “performance overlay” that allows you to check which actions are expensive to render and then easily optimize them;
3. Flutter’s exceptional performance works great with impressive support for animations. Everything is smooth and easy to use, with a stable refresh rate of 60/120 frames per second (depending on the device).
4. There are other strong points of Flutter when it comes to the user interface as well. The way it’s constructed allows designers to create one uniform interface that will look exactly the same across all supported platforms. At the same time, Flutter doesn’t restrict you and allows for platform-specific customization if you need it.
5. Thanks to Flutter’s huge library of packages, well-thought APIs, and great widgets provided out of the box, the team can write new features faster and cheaper with less code (check the list of the best Flutter packages on our blog).
6. If you want to use some platform-specific features, Flutter has you covered as well - thanks to easy-to-use platform channels that allow for direct communication with the native platform, you don’t have to worry about being locked out from using native features.
7. Being developed and maintained by Google provides assurance of ongoing support, updates, and improvements to the framework. Google is investing a lot in Flutter and rewriting its flagship applications on this framework. The fact that Google is focusing on Flutter is also visible in the number of updates that have appeared often (every few months) from 2022.
8. The Flutter community is full of engaged and talented developers who often contribute to Flutter development. As an example, we can mention our Patrol - Flutter UI testing framework that has been released as an open-source project to help devs test their mobile Flutter applications.
9. This popularity and the fact that it has surpassed other cross-platform frameworks make finding a Flutter developer easier, so in the long run, it should be easy to build an in-house team if needed.
10. Since Flutter apps have a single codebase, maintenance and updates become way easier. Changes made to the codebase reflect across platforms, reducing the effort required for maintenance.
Flutter, in general, is Google’s 2nd most popular open-source project, and with over 159K stars on GitHub (January 2024), it’s one of the most popular mobile frameworks available.
There are other specific advantages related to how you can build your application architecture using Flutter, and we cover them in other blog post on our blog.
Still, despite all the positive implications of choosing Flutter, there are still some drawbacks of which you need to be aware. Most of them are related to the case of creating a web app from the Flutter code, so they don’t really belong in this section. However, we have observed that many of our clients who have chosen Flutter for mobile development wanted to use it also for the website since this is fairly free, provided the mobile apps are already built using Flutter.
The main Flutter cons:
At LeanCode, we have already built 60+ Flutter projects, and it only once happened that we were not able to implement a specific feature using Flutter. It was the case with Apple AppClips. This feature is intended to demonstrate the app's features without downloading it; however, we think that this is Apple’s workaround to help developers avoid building the web versions of their apps, and as explained before, Flutter does that relatively for free. So, from the business perspective, this goal can be achieved in an even more user-friendly way.
Since its birth in 2018, Flutter has grown to be extremely powerful and competitive. Any problems related to its previous editions have been resolved, and Flutter is becoming the default choice for building new mobile applications worldwide. The only arguments against Flutter are currently related to the fact that Google may stop supporting it for internal reasons. Those are purely political arguments. Still, in this worst-case scenario, you need to remember that with the scale Flutter has already achieved, this gap will surely be filled by other community members.
But what if you already have a native mobile application? Now, once you know all the arguments in favor of Flutter, you may have some second thoughts after choosing the native approach. You need to understand that your choice was right, and only recently, Flutter gained enough maturity to convince established players to move their apps to Flutter.
How to migrate your native application to Flutter? Obviously, the most comfortable scenario from the technical perspective is a green field project where you can start everything from scratch. Yet, this would mean that the development of the current app will most likely be withheld, and this is not acceptable for the business.
The good news is that even if you have a natively built mobile app, you can still use Flutter to add new features. This feature is called Add-to-app and may be considered an advantage when you want to start your migration. The Add-to-App feature allows you to create new features and rewrite other parts of the native app development in Flutter while keeping your existing project.
Of course, you can also rewrite your entire app at once to make it use Flutter entirely. It may be a good idea if your app isn’t that complex, but at the same time, it is outdated and needs an update. With such migration, you can easily improve the UI and fix issues that occur in the app. If you have a project and you want to verify whether Add-to-App can be used in your case, you can use our audit app service, and we will check that for you.
You can also review our guidelines for using the Add-to-App feature in our article on Add-to-app, which is based on a case of migrating a native banking app to Flutter.
The current state of Flutter for web is ambiguous. On the one hand, the Flutter development team assures that it’s stable and production-ready since version 2.0 in early 2021. In reality, even though it’s becoming more and more stable with each update, there are still some problems that prove it’s not always a viable solution. For sure, it’s not a one-to-one replacement for technologies such as React, Angular, Vue, or Svelte. So, as it is often in the technology world, it depends on your particular requirements.
Firstly, you need to ask yourself if your product is mobile-first or if you want to focus on building just a website for a start.
“Yes, I want to have a web app as an add-on to my mobile app.”
If the former is true and the webpage is just an add-on to your mobile application helping you to handle some edge cases, then go for it. As an example, we can tell you the story of a fintech app for our French client, Alternative Loans Technologies. In their onboarding KYC process, there was a need to upload certain financial information (i.e., P&L and Balance Sheet). From the UX perspective, this is not so easy to do when you operate on mobile. Therefore, there was this idea to build in parallel the web version of an app to redirect them to the web for those users who failed to upload their documents when onboarding in the mobile app.
Another example is a project that we have developed for a cryptocurrency exchange company. For this client, using a Flutter for web solution helped to build a mobile app alternative way faster than if they started from scratch. We could reuse a mobile design and animations such as variable charts. Also, deployment of this web app has been easier - you only need to host it once, and it's available on all platforms. So overall, you can achieve good results with Flutter for web, and it shortens the development time.
Yet, if your primary focus is the web, and you don’t plan to build mobile apps in the foreseeable future, or the case for your mobile apps is weak, i.e., there will be no reason for the users to use your app regularly, then use the traditional web technologies.
If, based on the arguments above, there is a business justification for using Flutter for web, then you need to consider the main blockers from the technology perspective.
1. First of all, Flutter web does not support the SEO and discoverability of your website. The goal of Flutter is to provide “dynamic application experiences,” even on the web. As such, Flutter is not equipped with tooling for search engine optimization. Web crawlers simply cannot see the final rendered app. Even with the HTML renderer, the initial page source contains no elements of the widget structure – it gets created after all the resources are loaded and the JavaScript initialization code is executed. If your business relies on people searching for your website, the Flutter team themselves recommend using plain HTML instead of Flutter. However, this may not be a big problem for the cases where the website requires login, so the Google bots will not be able to penetrate it no matter what technology is used.
2. The other problem is with the application size. Flutter for rendering (i.e. generating) the website requires the Flutter engine, which size is about 1.5MB (CanvasKit renderer). In some rare cases, when you need to secure the highest speed of website loading or your website will be loaded in regions with a poor network, then this can become an issue.
3. Hot reload feature doesn’t work with a web app. This issue refers more to developer experience, but it’s worth mentioning. One of the most valued features of Flutter is hot reload – the ability to dynamically update code without rebuilding the app. This functionality relies on the underlying native Dart runtime. Since code is compiled to JavaScript on the web, this feature doesn’t seem viable. The available alternative is hot restart - the only difference is that hot reload remembers your state, and hot restart doesn’t.
As Flutter states: “Not every web page makes sense in Flutter, but we think Flutter is particularly suited for app-centric experiences: Progressive Web Apps, Single Page App, Existing Flutter mobile apps.”
All in all, recent additions to the framework make working on web apps significantly easier and allow for more use cases. Flutter web app development can be a good choice for your overall strategy, especially if your main cases are handled through mobile applications - then Flutter for web is a great solution. Flutter for web has been an officially stable product, and the team behind it brings exciting updates in each release. Yet, don’t rush with this decision, and make sure you are familiar with the disadvantages of Flutter for web, which were listed above.
Flutter can suit more than just a mobile app case since it effectively incorporates the "write once, run anywhere" philosophy into its way of working. Although, from the perspective of the Flutter roadmap, Flutter desktop app development is still a young solution and not as advanced as Flutter for web. Flutter in 2022 in its 3.0 version, came with support for native desktop platforms such as Windows, macOS, and Linux so that everyone can use apps written in Flutter on their computers.
Flutter for desktop shares some infancy problems with Flutter for web, such as a lack of packages, libraries, and some more issues. However, it has a very promising perspective because there are only a few technologies for building desktop apps and no major blockers for this one.
One of the bigger changes is that the impeller runtime is now available for macOS (besides mobile platforms such as iOS and Android) along with video_player_plugin. The main advantages of supporting Impeller on macOS are that it brings improved performance to the animations and eliminates the troublesome shader compilation issues.
In our opinion, Flutter, among other available cross-platform solutions, is worth recommending and also works better than Flutter for web.
Flutter is taking the market by storm, especially for mobile application development. Flutter app development has numerous advantages, including cost efficiency, faster app development, short time-to-market, and ease of team organization. Flutter is becoming a default choice for new, green-field projects, but it can also be used as an Add-to-App with existing applications written in native languages. If you are looking for a list of companies using Flutter, we prepared an article you should check out.
If you are unsure if Flutter is a good solution for your future application, we will gladly advise you on Flutter application development.