In less than two years since Google released the first stable version of Flutter in 2018, the project gained 109K stars, 15.4k forks, and 21,870 commits on GitHub. By using Flutter to build their Google Ads and Google Assistant apps, the creators of Flutter show a serious commitment to make it the next big thing.
Big companies, like eBay, CapitalOne, or Square, eagerly add Flutter to their tech stack. Does that mean you should jump on the bandwagon? In this article, we dive into the pros and cons of using Flutter SDK from a business perspective. We also share some thoughts from Peter, Fullstack Developer at Proxify, who told us why programmers love Flutter so much.
What is Flutter SDK?
Flutter is an open-source UI software development kit. In addition to a react-style framework, this toolkit includes an own rendering engine, a rich set of ready-made widgets, unit and integration testing APIs, plugin APIs, and command-line tools for building and compiling apps.
A short Flutter review shows that it’s a more comprehensive alternative to React Native and Xamarin cross-platform mobile app development tools. Just like other solutions Flutter helps to build Android and iOS apps out of a single code base. What distinguishes it from the rest is that it doesn’t work as a wrapper on top of the native UI components. Instead, it draws a native-looking UI from scratch. To get an idea about how this works, let’s take a look at the Flutter stack.
“Flutter is not only a competitor to React Native, which is what people usually compare it to, but also to Qt because of licensing. Companies like Sony are developing the next generation of embedded hardware UIs with this technology. ” – Peter, Fullstack Developer
What’s under the hood?
Flutter UI builder has a unique technology stack that makes it different from other cross-platform development solutions and powers its killer features.
Dart programming language. Flutter’s framework is written in Dart, an object-oriented programming language. Its syntax is intuitive, concise, and simple, which allows developers to do more with less code. This language is general-purpose and suitable for writing web, mobile, and desktop apps. Programs written in Dart tend to perform fast and stable.
JIT and AOT compiler. Flutter leverages two different methods for program compilation during app development and for deployment: Just-In-Time (JIT) and the Ahead-of-Time (AOT) compilation. JIT method enables the hot reload feature that speeds up the development process, while AOT ensures fast start-up times and stable performance for Flutter apps after release.
C++ programming language. Flutter’s engine is built with C++. It powers fast and efficient Dart runtime and compiler, handles core APIs and plugins, interacts with the graphics library for code rendering, and processes file and network I/O.
Skia graphics library. Unlike competitor tools Flutter draws its own widgets independently. It uses the Skia library for rendering UI instead of relying on platform-specific components that ship with each device. This reduces the communication between the Flutter apps and the mobile platforms and minimizes chances for the UI to break on any particular OS version or device.
Knowing the Flutter stack and architecture specifics, you might already have an idea about some ways how Flutter can outshine its alternatives. However, let’s zoom in on every feature that your business and your development team might benefit from.
Does Flutter benefit your business?
Fast and cost-effective development. Flutter requires two times fewer man-hours to develop a cross-platform app than is needed to build two separate native apps. Although other frameworks promise the same, with Flutter you receive a very advanced MVP that has look and performance very close to native. The fast development speed is achieved through using out-of-the-box layouts, templates, and widgets as well as through productive and fast development cycles.
Custom design without pain. Flutter is a good choice for building apps with unique and memorable designs. Compared to other cross-platform solutions Flutter requires less time for UI polishing. The problem with other toolkits is that they rely on widgets shipped with iOs and Android platforms to render custom UI elements. This causes a lot of compatibility issues and requires tedious testing across different OS versions. In contrast, Flutter uses its own graphic library and renders all widgets independently. This allows you to create a brand-driven design and share it across iOS and Android with fewer chances that the UI breaks on either platform.
“I would recommend Flutter over React Native if you are looking for a mobile app, that runs platform-specific code like Swift or Java since these can be easily added, and using native APIs is much better than React Native.” – Peter, Fullstack Developer
“Flutter is becoming the most supported UI framework for devices running Android since it's promoted by Google and allows to create cross-platform apps with native performance. It's fast like C++ with a garbage collector.” – Peter, Fullstack Developer
Innovative and promising technology. Flutter SDK gets updated quarterly for stability and performance improvements and new features releases. Being curated and used by Google, the Flutter project has active support. You can count on its longevity and be sure it keeps up with the most recent Android and iOs platforms’ capabilities.
Will your developers enjoy Flutter?
Sets of customizable widgets. Flutter’s framework has a layered structure that includes separate libraries for animation, gestures, widgets, etc. The framework is really flexible as all of its parts are optional and replaceable. It allows developers to use the out-of-the-box sets of Material Design (for Android) and Cupertino (for iOS) widgets as well as write custom ones with Dart.
“Making animations is where Flutter really shines. Do you want to animate a container? Just use the AnimatedContainer widget. It's never been that simple to create apps with complex UI and fluid user experience.” – Peter, Fullstack Developer
BLoC and Redux for complex app architecture. In Flutter, everything is a widget which makes it easier for developers to create large apps. They can fit all visual, structural, platform, and interactive widgets together without much effort. Stateful and stateless widgets give developers fine control over what parts of the app need to re-render on a state change.
“Flutter widgets are wrapping each other and are organized in a renderable tree. Variables get passed down the tree exactly like props in React. Stateless widgets don't track internal state while stateful widgets do. This means I can trigger a re-render by setting the state of a stateful widget. Flutter’s business logic component (BLoC) allows accessing or modifying state inside widgets that are not in a relationship with each other. Each state is stored in a separate container and is accessed with an architecture similar to publish/subscribe. BLoC works as a publish-subscribe messaging system. A widget can subscribe to a topic and other widgets can publish to a topic. This way the subscribers can access the state from widgets they are not related to, by listening to the messages on a topic.” – Peter, Fullstack Developer
Hot reload for speedy development. Hot reload is Flutter’s killer feature that lets developers see the changes they apply to the code in less than a second on emulators, simulators, and hardware. Moreover, Flutter’s hot reload is stateful. This means that developers can quickly iterate on a screen deeply nested in the app, without starting from the home screen after every reload. This way flutter programming workflow elevates your team’s productivity and allows you to experiment without delays.
Compatibility with IDEs and editors. Flutter works with popular code editors and integrated development environment solutions. Developers can easily add it as a plugin in Android Studio, IntelliJ IDEA, and VS Code. It means your team can write code using familiar editors with automation tools and debuggers, which raises their productivity.
Detailed documentation with examples. Flutter’s documentation is well-structured and complete. It’s rich for basic use cases and examples, which helps developers find answers to any questions and quickly resolve difficulties.
Repository of software packages. Dart provides software packages for extending your app capabilities. For example, there are packages for Firebase that allow your developers to make your app serverless, and packages for accessing smartphones’ hardware (cameras, battery, GPS).
“You can integrate more payment gateways with Flutter than React Native. This is caused by the ease of running the platform-specific code with Flutter. Most payment system providers implement their libraries in a platform-native language since it's safer than working with a web stack. ” – Peter, Fullstack Developer
A framework for automated testing. It provides APIs for writing automated unit, widget, and integration tests to speed up development and debugging. Flutter developers can use continuous integration services and run their tests automatically when pushing code changes. This allows them to timely check if the new code works as expected and doesn’t introduce bugs.
Support for the web. Flutter has production-quality web support after the release of version 2 on March 3, 2021. It means that you can build SPAs and PWAs with Flutter or update an existing Flutter mobile app to Flutter 2 and migrate it to the web without a rewrite.
Are there any drawbacks or limitations?
2D apps only. Currently, Flutter uses only Skia 2D graphics engine for rendering UI and doesn’t support 3D via OpenGL ES or similar, although this capability is planned in the long run.
Flutter desktop is in alpha. If you want to create an app with desktop support for Windows, macOS, or Linux, you’ll have to work on the target platform and use Flutter’s reduced alpha functionality.
Few plugins and libraries. Being a young technology, Flutter can’t compete with React Native by the scope and variety of libraries in its ecosystem. The choice of plugins is also not that wide. Occasionally, you might find that some components are available only for Android and require your developers to write the missing iOS version.
Large file size. The size of a compiled app remains a drawback of cross-platform development compared to native. Flutter apps are not an exception. The sample measurement of a minimum Flutter app showed that it makes 4.3 MB for ARM, and 4.6 MB for ARM 64. It means that you’ll have to put some effort into optimization to save space on your future users’ smartphones.
Looking for a Flutter expert?
Flutter promises great advantages to businesses that adopt it. That said, the number of experienced developers who work with Flutter SDK and Dart programming language is not that big. Finding a great Flutter development team to create your app can still be challenging.
On Proxify.io you’ll find specialists with experience in building Flatter apps of different complexity. Whether you need a quick MVP or a solid and maintainable app, they’ll help you make the most out of Flutter SDK. Get in touch with us now, to have a perfect Flutter developer matched to your project within two weeks.