Key Disadvantages of Flutter You Should Know About
TABLE OF CONTENTS
What is Flutter?
Flutter’s Unique App Space
Since the release of the framework in 2017, Flutter has become a benchmark for application development. Initially built by Google to build cross-platform mobile applications, it’s a highly performant framework that has gone from strength to strength in the last five years. Yet, with several competing options currently available, what is it that makes Flutter stand out amongst the crowd, and what are the disadvantages of Flutter you should know about before deploying it within your teams.
For teams, Flutter is a framework that can achieve a lot in building highly attractive, dynamic, and innovative applications. Flutter itself features a revolutionary way of approaching mobile app development that is exciting, novel, and interesting for developers. Many of these attributes, however, are ones that companies would rather avoid when it comes to commercial application development.
Businesses typically thrive on stability and predictability to grow and succeed. New workflows, architecture changes, and tooling upgrades can easily be disruptive and counter-productive. While re-thinking the way you build apps from the very ground up can promote untapped productivity—it’s worth carefully considering the pitfalls and drawbacks before undertaking such a vast change.
In this article we take a look at what sets Flutter apart from related frameworks and technologies. Exploring what the framework is and what the disadvantages of Flutter are when it comes to adopting the technology within your teams.
What is Flutter?
Flutter is Google’s flagship open-source tool for building responsive and attractive applications. Released in 2017 for building cross-platform mobile apps, the technology was recently overhauled in March 2021 to release Flutter 2, a framework capable of building for the web, desktop, and new smart devices.
The release of Flutter 2 addressed some of the platform’s most glaring weaknesses by introducing support for PWAs (progressive web apps), and SPAs (single page applications), and allowing developers to port existing Flutter apps to the web. Introducing features and functionality the technology has been missing since its launch, Flutter 2 has added a suite of improvements to address some of the biggest objections to teams adopting it.
Similarly, The ecosystem surrounding Flutter has grown to include packages and tools for most leading tech solutions. Today, Flutter apps can be built for Windows, macOS, Linux, the web, and both major mobile platforms at once.
Flutter’s Unique App Space
When comparing Flutter to frameworks that target the same platforms and similar goals, consideration has to be made towards how extensive and capable Flutter’s tools are when it comes to application development. Strictly speaking, Flutter isn’t a framework or library in isolation. Flutter is a more complete solution, accurately described as an SDK (software development kit) that includes a wider array of tools and support for application development.
To be clear about each term when it comes to software engineering:
- A library is a piece of code that can be imported into an application to perform a limited function or role. TensorFlow and OpenCV are examples of libraries that can be imported to provide machine learning or computer vision to assist an application
- A framework is a more expansive piece of code that provides an architecture or scaffold for building software solutions on. A quality application framework, such as Angular will provide a stable foundation for developers to build an app on—requiring only that developers fill in the blanks with the specifics of functionality and design
- In comparison, an SDK should contain everything you need in the tooling, support, libraries, and frameworks to build high-quality software. With an SDK, it should be easily possible to build a working application with minimal functionality without any external tools.
Flutter falls into the latter category with a unique rendering engine, front-end components, and the APIs necessary to build successful applications leaning on the Flutter toolset.
Some drawbacks to this comprehensive approach to tooling come from the prescriptive nature of the technology for design and development. By defining specific toolsets, a unique language, and specific workflows with the Flutter SDK there are more limited options when it comes to making the tooling fit your workflows.
Flutter’s architecture can be broken into three layers that define how the technology works. The first of these is the foundational layer, a platform-specific embedder that is used to interact with the underlying operating system of the target platform.
The embedder provides access to device services such as input, accessibility, and system threads. The primary role of the embedder is to allow Flutter apps to integrate into the target platform and provide the translations necessary between the two.
The core of Flutter’s technology comes from its engine. It’s this engine that supports the majority of Flutter’s unique functionality from rendering components within apps to the compilation toolchain that builds them. The engine effectively acts as a go-between from the Flutter framework to the underlying system—wrapping C++ code in Dart classes that can be exposed to the developer.
The level at which developers interact with Flutter is typically at the uppermost framework layer. It’s this layer that developers refer to when citing the rich set of libraries and tools the technology provides to support feature-rich application development.
Drawbacks of Flutter
As with any engineering tool or decision, due diligence requires weighing up the benefits and advantages against the drawbacks and pitfalls of the Flutter framework. With Flutter, the drawbacks to the framework can be particularly limiting and prohibitive when it comes to application development projects.
Large and Weighty Apps
Applications created using Flutter, and packaged with its corresponding tools, are inherently larger than apps created natively. Even some competing frameworks can build comparable applications with a smaller footprint. The requirements to include the framework’s engine and widgets with apps means there’s more to package into applications.
With device space often at a premium, this can be a significant factor in convincing users to download an app. This drawback alone almost completely prohibits Flutter from being used to target instant apps due to tight footprint restrictions.
While this is an area that is rapidly improving in recent months and years, it’s still likely to impact the technology in a big way for the next couple of years.
Limited Community Support
For many of the same reasons that the framework suffers from a limited ecosystem of third-party libraries and tools—the technology also suffers from a comparably limited community of developers. Without the necessary time or widespread adoption to grow yet, both of these are inevitable impacts of choosing any relatively young technology.
Due to the comprehensive nature of Flutter and its associated tools, the technology can feel somewhat restrictive to developers more used to assembling projects from the many available frameworks and libraries out there.
If the Flutter workflow doesn’t fit with your existing practices then it can be a significant challenge to adopt the technology into your firm.
Often cited as both the most powerful and advantageous features of the technology and also the most significant disadvantage of Flutter, Dart is both flutters biggest weakness and greatest strength. The language is a powerful, productive, and accessible one—but it’s also one that’s seen limited use and even more limited expansion over the last 5-6 years.
Being locked into a relatively niche language when it comes to application development is a factor of Flutter that warrants significant consideration before adopting the technology.
Flutter then, is an immensely powerful and productive tool that is growing increasingly capable with each passing day. With some of the technology’s most glaring disadvantages addressed in its latest update, it’s a tool that’s evolving to play an increasingly large role in modern application development.
Despite recent improvements, however, there are still some significant disadvantages of Flutter that are well worth your consideration before investing in the tooling and technology. Complete due diligence for your firm means carefully measuring the impact of these drawbacks and creating the strategies to overcome or work around them within your development teams.
What are the disadvantages of Flutter?
Flutter’s most significant disadvantages come from the use of the Dart language. While Dart is a powerful, productive, and highly-reliable language for application development it is one that’s seen limited adoption, features a limited number of additional tools and libraries, and remains relatively niche when it comes to application development.
Flutter itself is also prone to creating apps with a large footprint, resulting in applications being more resource-intensive and cumbersome when deployed to user’s devices. This all but prohibits Flutter’s use for deploying instant apps on mobile platforms and makes convincing users to download your app that little bit harder than a comparable application with a smaller footprint.
Being a young framework, some of the disadvantages that impact developers most is the limited size of the ecosystem of tools and third-party libraries available to help. Also a consideration of leaning on Dart, this impacts the size of the community available to troubleshoot and solve issues as they crop up during design and development.
What are the limits of Flutter?
Even with the latest updates and release of Flutter 2.0, the technology is still only capable of targeting a limited number of platforms in comparison to other technologies or even native development.
Each of these issues are improving over time when it comes to Flutter development, but if you plan to adopt the technology for your upcoming project then you should be aware of limitations to the tools, platforms, engines, and support that are currently inherent to using the technology to build applications