Why use Flutter in 2024

Vlaho Poluta

How does BMW deliver a seamless experience through the My BMW app? Flutter. Toyota's infotainment system? Flutter. WeChat? Flutter. Highly regulated financial sector? Also, Flutter!

These cases vary, but they all share a common thread: Flutter, an open-source framework created by Google in 2017, can be a better choice than native development and other cross-development frameworks. Let’s explore when and why.

Building high-performance, visually appealing applications with ease

A rapid development cycle becomes paramount for effective iteration during the development phase. Leveraging Dart’s compiler technology, Dart can be compiled, and by extension, Flutter, for multiple architectures. When an app is ready for production deployment, the Dart ahead-of-time (AOT) compiler stands prepared to compile them into native ARM or x64 machine code. 

The outcome? Excellent performance, ensuring the best possible user experience. On the other side, there is a just-in-time (JIT) compiler used during development which provides incremental recompilation (enabling hot reload), live metrics collection (powering DevTools), and robust debugging support.

Flutter’s hot reload feature empowers engineers to view the effects of their code changes instantly. Gone are the days of needing to restart the entire application with every code modification. This immediate update capability enables engineers to rapidly experiment with and refine their code, resulting in a more efficient and iterative development process.

In addition, Flutter distinguishes itself from other cross-platform solutions by not relying on web browser technology or native UI components specific to each operating system. Instead, it employs Skia/Impeller for rendering. In this regard, Flutter shares more in common with game engines like Unity than other cross-platform development frameworks. The diligent Flutter team has painstakingly recreated all Material and iOS (Cupertino) UI components for engineers to employ within Flutter. This is particularly beneficial for crafting custom UI.

Finally, Flutter proudly boasts its status as an open-source framework. This means that its complete source code is freely accessible to the public. Engineers can explore and contribute to the continuous improvement of the framework without incurring any cost. This openness fosters transparency, collaboration, and community engagement. 

Speaking of community engagement – the Flutter community of over 2 million engineers is thriving. Countless resources are readily available to assist engineers in mastering the full potential of Flutter. This growth is also evident in the increasing number of stars Flutter has garnered on GitHub and its popularity in Google search trends. In fact, Flutter has overtaken React-Native to establish itself as the most popular cross-platform development framework.

When to use Flutter and when not to

Flutter is well-suited for applications where there is no requirement for interactions with highly specialized native functionalities. It shines in applications heavily relying on networking and highly customized user interfaces (UI).

Flutter’s hot reload feature offers a rapid and cost-effective solution, enabling quick iterations and reducing time-to-market.

For example, Flutter is an efficient solution for building financial and health/fitness applications. It is chosen for its ability to create secure, visually appealing experiences across mobile and web platforms. It offers benefits such as the convenience of a single codebase for efficient development, quicker market entry, and easier creation of polished user interfaces, complete with interactive graphs and charts.

Flutter is also becoming a suitable choice for IoT projects because it’s starting to integrate better with platform-specific features like Bluetooth Low Energy (BLE). As the IoT space keeps growing, there’s a higher demand for IoT apps. We’ve noticed that more Flutter BLE libraries are emerging, making connecting and working with IoT devices easier. This was a big drawback for Flutter in the past, but it’s not so much of an issue anymore.

Also, perhaps a more curious use case for Flutter is using it for Minimum Viable Product (MVP) development. Its hot reload feature offers a rapid and cost-effective solution, enabling quick iterations and reducing time-to-market.

Deciding between Flutter and native development

If you want to streamline development and reduce the workload, Flutter is an excellent choice for small and large teams alike. If you prioritize fine-tuning and taking full advantage of platform-specific tools and features, native development is the way to go. It provides greater control over the user experience.

Deciding between Flutter and React Native

If your project has special design needs, pick Flutter. If it needs to look like typical iOS or Android, go with React Native.

Enhancing Flutter is a constant work in progress

Flutter has undergone a significant transformation over the years, evolving into a more mature and stable framework. This progress has been driven by a collaborative effort from the community, which has actively identified and addressed issues, resulting in a more robust framework. Google’s commitment to Flutter’s growth is evident through the consistent introduction of new features and capabilities, including improved performance, new widgets, enhanced tooling, and seamless integration with various platforms, to name a few.

For example, in recent notable updates, Flutter has introduced support for WebAssembly (Wasm), enabling more efficient code execution and enhanced performance. Additionally, Impeller now precompiles essential shaders during the Flutter Engine’s build, resulting in faster and more stable animations and improving the user experience. Also worth a mention is Flutter Add to App, which simplifies the integration of Flutter into existing applications, allowing for seamless cross-platform operation, albeit with potential development overhead in complex integrations between native components and Flutter.

More significantly, although it initially offered support exclusively for iOS and Android, Flutter has since expanded its reach to include web, Windows, Linux, macOS, and even embedded systems, as noted in the regularly updated Flutter release notes.

However, so far, our primary focus with Flutter at Infinum has been on mobile development. Our position is that while Flutter has made significant strides, there are areas in which it still has to catch up with web development frameworks like React or Angular. This discrepancy is expected, given their long-established presence, Flutter’s reliance on CanvaseKit, as well as Flutter’s limitations, like the absence of SEO optimization, occasional issues with hot reload functionality, and an overall mobile-oriented look and feel.

Tailoring the tool to fit the task

In the ever-uncertain future, especially within the AI app development landscape currently taking shape, our approach at Infinum remains – business as usual. We continue utilizing whatever tool best suits the job to develop high-performance, eye-catching applications for clients across various industries.

Resources for learning Flutter

> subscribe shift-mag --latest

Sarcastic headline, but funny enough for engineers to sign up

Get curated content twice a month

* indicates required

Written by people, not robots - at least not yet. May or may not contain traces of sarcasm, but never spam. We value your privacy and if you subscribe, we will use your e-mail address just to send you our marketing newsletter. Check all the details in ShiftMag’s Privacy Notice