As mobile applications continue to grow in popularity, in order to remain competitive, companies need to find new ways to build their apps for all mobile devices. Of course, both Google and Apple already provide their own native languages for mobile development, but attempting to take this route is not only incredibly time consuming, it can also be significantly expensive. Thankfully, however, modern SDKs like Google’s Flutter have efficiently taken care of these problems.
But why did Google create Flutter in the first place? Well, Flutter was created to address the issue of constant compromise in mobile development, as developers were often forced to build the same application for multiple devices or to settle for portability at the expense of native performance. In this way, Google’s Flutter strives to deliver the best of both worlds in a single framework.
What Is Flutter?
Without a doubt Google’s reaction to React Native, though Flutter has already been around for a while, it began to garner attention in 2017 when the company promoted it at their annual I/O conference. All fanboying aside, however, in a nutshell, Flutter is a free and open source, cross-platform software development kit (SDK) that enables developers to build native applications for both iOS and Android devices. The Flutter framework is unique in that unlike other popular tools of its kind, it uses the hitherto unknown — but fairly comparable to JavaScript — Dart language, as opposed to some more commonplace technologies.
Today, Flutter is not only being used at Alphabet for a wide variety of software products (e.g. Google Ads, Google Pay and Stadia), but it is also being employed by popular brands including BMW, Nubank and Ebay.
When it comes to Flutter app development, its core concept is the use of a native canvas in which developers can draw widgets using low-level C++ and C libraries. This is similar to a number of game engines. Not only are developers able to apply object-oriented programming to any element, but they effectively have control over every pixel that is drawn onto the canvas. In this way, Flutter is essentially a widget-based technology. Since its initial release, the open-source framework has attracted a small, but active community of software engineers who continuously publish usable code examples and support developers whenever they need.
Is Google’s Flutter Good?
While “good” and “bad” are of course subjective concepts, if you are looking for a mobile developer or cross-platform mobile development services, you should know that Flutter inspires controversy:
Top 5 Benefits of Flutter
Flutter Has No JavaScript Bridge
The first in our list of Flutter benefits is the remarkable lack of a JavaScript bridge. Because most of Flutter’s native components are built into the framework itself (it uses standard Android and iOS build tools), unlike React Native and other cross-platform app development frameworks, Flutter does not require a JavaScript bridge to communicate with native modules. This greatly improves application startup times.
Flutter Provides Stateful Hot Reload
Whether investing in Flutter iOS development or even a brand new Flutter Android app, one of the SDK’s most noteworthy benefits is its highly praised “hot reload” feature. After all, hot reloading enables developers to experiment, fix errors, build UIs and add features while visualising the results. This is a testament to the cleverness of Flutter programming, as the framework will instantaneously rebuild the widget tree (after injecting Dart’s virtual machine with the updated source code files). In this way, Google Flutter strives to deliver pixel-perfect experiences across all devices. Bear in mind, however, that Flutter does not currently support hot reloading for the web.
Flutter Is Highly Customisable
Thanks to Flutter’s component-based architecture, Dart also includes its own — very useful — software repository that can effectively extend the capability of your applications. This allows developers, for instance, to build serverless apps with a Firebase-accessing package, or to add or do away with plugins enabling access to the accelerometer and camera. Even better, whether or not your team of developers is already acquainted with the Dart programming language, Google also provide some excellent guides for those familiar with TypeScript or Java. This makes it significantly easier to hit the ground running.
Flutter Is Fully Open Source
Because Flutter uses open source technology, the mobile app framework is also wildly permissive for both use and distribution rights. The engine’s multiple components and dependencies are covered by the licences listed here while the framework itself is self-contained and requires a single BSD licence. In fact, even Canonical, the company behind popular Linux distribution Ubuntu, have announced a new partnership with Google to bring Flutter to their upcoming releases.
Flutter Is Fast
Lastly, Flutter mobile development is fast due to a panoply of different factors. First, its hardware-accelerated Skia 2D graphics engine leaves nothing to be desired (except perhaps 3D 😛). Not only is the OpenGL-powered canvas surprisingly smooth, it works well on all major platforms and includes support for iOS’ Metal, Apple’s most modern graphics API. In addition, another timesaving Flutter feature is the amount of prebuilt components it ships with. Things like buttons, lists and drawers are readily available for all app designers — and the amount of components continues to grow. These can all be easily implemented using reliable Material design principles. And finally, the SDK also comes with a health checker to quickly find and resolve configuration problems.
Are There Any Cons to Dart & Flutter?
Dart Is an Unpopular Language
When developing Flutter applications, your company may be put off by the need to procure Dart developers, as the language remains relatively unpopular. By comparison, for instance, the native Swift and Java languages are considerably more utilised, and even its main rival React uses the far more popular JavaScript environment. Nonetheless, due to its overall simplicity and similarity to Java, C# and JavaScript, Dart is fairly easy to pick up, and will likely continue to grow in popularity.
Flutter Is Not Always Intuitive or Reliable
While Flutter does make it genuinely easy to create beautiful mobile and desktop applications — with both stunning and stable animations — should anything go wrong, particularly for Flutter beginners, your development team may find itself in a bit of a pickle. This is because performing complex tasks (e.g. updating required Flutter modules) will often call for plenty of research, and you might have to rely on community plugins which are actually notoriously unreliable. Furthermore, despite being fairly easy to learn on the surface, some concepts in Flutter may appear to be counterintuitive and there are copious amounts of boilerplate code.
Flutter Is Not for Game Development
Due to the limitations of the underlying framework, Flutter is also not ideal for game development. This is the case for any application requiring plenty of device-specific features (games will typically fall into this category). In the end, just as with React Native or the Ionic Framework, it is still not a complete replacement for developing fully native mobile applications.
Conclusion
So there you have it. Though at the moment, a number of software companies will only recommend the framework for MVP development, Google’s ongoing investment in Flutter means they are likely to support it for years to come. In fact, not only have Google announced an entire operating system built primarily with Flutter, but in May 2021, there were 200,000 Flutter apps in the Play Store alone. At the same time, of course, Google is known for killing off their past projects — such as Google Tango, for instance, which was quietly replaced by ARCore — so its longevity remains the subject of debate.
For all of the reasons spelled out above, though Flutter may not always live up to the hype, as an alternative to native app development, we at SPG are happy to endorse it — so long as this does not conflict with your company’s needs.