Flutter advantages - mobile app development

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 for mobile app development:

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.

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 or enterprise applications using Flutter, and we cover them in other blog posts on LeanCode Blog.

Flutter disadvantages - mobile app development

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:

  • In terms of mobile development, you need to be aware that in rare cases of new OS releases accompanied by some new platform-specific features, they may not be available instantly on Flutter. There is a delay between adding something to the operating system and making it available in Flutter, and it may require native implementation on your own before the Flutter team does it. Yet, out of all cross-platform frameworks, native implementation on Flutter is definitely the easiest one, and the fact that Flutter offers this alternative solution as a default for integrating all external libraries makes it very competitive.
  • Some say that Flutter apps might have a larger file size compared to native apps due to the inclusion of the Flutter engine in the app package. However, while it's true that app size can vary based on several factors, like the use of dependencies and assets. Despite this variability, Flutter's design philosophy and optimization strategies offer the potential for Flutter apps to avoid substantial increases in size. For example, Flutter offers features like tree shaking and code splitting, which help reduce the app size by eliminating unused code and loading only necessary components. So, to sum up, everything depends on the implementation.

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.

Is it possible to add Flutter to the existing app?

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 service, and we will check that for you.

You can also review our guidelines for using the Add-to-App feature in our article “Add-to-app: the overview and challenges,” which is based on a case of migrating a native banking app to Flutter.

Flutter Web app

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 for web 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 Desktop app

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 for desktop 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.

Conclusions

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 enterprise Flutter app examples, 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 app development.