Flutter app development is gaining popularity for a good reason. The framework created by Google has proven to be a reliable solution for businesses of various scales and powers the products of BWV, Alibaba Group, Nubank, eBay, Toyota, to name but a few.
The Surf team has developed Flutter apps since 2019, and this article is about the current strengths of the framework and insights our company has gained.
Basic principles of Flutter development
Flutter is a cross-platform software development kit (SDK) for creation of web, desktop and mobile applications using a single code base. It is also referred to as ‘UI framework’ — a set of UI elements, which comprise an application and can be personalized during development. Flutter offers vast creative possibilities to build beautiful products with native look and feel on various devices. Flutter features and architectural solutions make the development process fast and suitable for quick prototypes and MVPs as well as complex applications and games.
How the framework works
A Flutter application is built around widgets, which can be called ‘building blocks’ of the app. Every interface element is a widget, which can be stateful (can change) or stateless (never changes). Flutter uses its own library of high-quality Material Design and Cupertino widgets, layouts, and themes. Besides, it is easy to create your own widgets, or customize the existing one.
Flutter’s engine is written mostly in C++. The framework utilizes Skia, an open-source high-performing graphic engine, which handles heavy graphics and animation, providing a smooth UX at 60 frames per second.
Flutter app development allows developing mobile, web, and desktop applications by a single team, out of a single codebase. This contributes to more efficient project management, better synchronization of release schedules, and cost saving of about 40% as compared to native development.
High-end user experience
Flutter doesn’t use native UI elements, instead, it updates an app’s appearance (fonts, colors, animations) automatically to match the visual style of the platform. This way Flutter provides designers with a great chance to create a native look and feel, treasured by mobile users.
Flutter app development provides developers with the possibility to add new features fast and easily and\or extend the user base seamlessly without breaking its function.
Fast Time to Market
With Flutter, the developer can easily experiment and try different approaches thanks to Hot Reload feature that updates the app the moment its code changes. This significantly speeds up the development process and bug fixing.
Being created by Google, Flutter receives full support and is surely viable for the further long-term development and extension. On the other hand, the framework belongs to the most popular one in the world and enjoys extensive community support, meaning more available resources and third-party libraries.
Cons to be aware of
Relatively low Dart adoption
Where Flutter app development is not the best choice
With all the above advantages, there are some tasks where you’d better choose native development approach for apps that are:
- brand- and feature-specific, designed for a standalone business;
- based on universally accepted MVP, MVVM, and MVC architecture;
- with a particular focus on native functionality and performance;
- native, without functional limitations or UI;
- gaming or AR-based.
Insufficient iOS support
It’s often mentioned that Flutter’s functionality may be better on Android than iOS. Being a Google product, it is more used by Android developers. The piece of advice for the developers focused on the iOS market is to follow Futter updates. Thus, the 3.0 version offers simplified iOS releases without the need to open Xcode to release the app.
Lack of experienced Flutter teams
Though relatively young, Flutter offers many prominent opportunities and it is vital to find developers who know how to make the most of it and eliminate eventual risks. Meanwhile, finding a skilled and reliable Flutter team may be still challenging.
What is at the forefront of Flutter development?
As of 2022, the SDK offers everything the programmers need to create user-friendly apps and speed up the development process. And the Flutter creators continue to work on further improvements.
One codebase expanding to more platforms
The current Flutter version supports six basic platforms: iOS, Android, web, macOS, Windows, and Linux.
More Flutter 3.0 updates
In May 2022, Flutter 3 brought updated support for macOS and Linux together with significant performance improvement and updates for mobile and web versions.
From the point of view of our team, if each release of Flutter got the name after its most prominent feature, Flutter 3 would undoubtedly receive the name of Impeller. The experimental Impeller is designed to precompile a smaller and simpler set of shaders at engine build time. This means compilation does not take place while the application is running. Thus, a major source of jank is eliminated. We have already tested Impeller in action and the results are amazing.
Comparison to other cross-platform frameworks
In spite of all above advantages of Flutter app development, React Native, Apache Cordova, Xamarin, Ionic and Native Script have also proven to be effective in cross-platform development. And we are always careful to advise our clients on the best tech stack that matches every specific project and compare tools by various criteria.
Hot Reload feature allows faster Flutter app development process and bug fixing. With Ionic, for example, things look less convenient because you have to refresh the app to apply any changes to the code. To learn about other differences between two frameworks, check our Flutter VS Ionic comparison.
As we described above, Flutter app development delivers native look and feel without using native UI elements. Not every other cross-platform framework does that. For example, Apache Cordova adopted another approach: it uses a web-based UI running in a WebView to maintain one visual style across different platforms. Read our Flutter vs Cordova article to learn which framework to choose according to your project goals.
Thanks to growing popularity, more and more companies of various sizes and with a wide variety of ideas turn to Flutter app development as a cutting-edge solution.
Supernova Flutter web app under early adopter program
Supernova was one of the first companies to use Flutter for creating a collaborative design system platform. The tool is compute-heavy, with demanding performance needs and uncommon visual operations. Flutter allowed access to the lower-layer rendering engine making it possible to build it their own way without building from scratch.
Richer UI\UX in Rive
The Rive team turned to Flutter as they looked for a tool that could handle heavy graphics rendering across multiple browsers and platforms and help them spend less time on development cycle management. The Flutter adoption resulted in easier maintenance of the codebase, simpler adding custom things, and richer experiences. The team is going to launch a MacOS desktop application.
KFC project powered by Flutter
KFC digitized business processes — reporting, scheduling, planning, and control — to integrate them into a single IT system. The Surf team was entrusted with creating a Flutter application for task management, for KFC shift supervisors, restaurant general and local managers. The solution is used to fill out various reports and checklists and is easy to use. As a result, it helps better control the workflow, save employees’ time, and maintain the in-house quality standards.
What can you develop in Flutter?
Since 2019, we at Surf have developed 15+ Flutter-powered products for various industries and contributed 30+ open-source packages to be used by the community. The experience proves that Flutter development really proves to work well for e-commerce and fintech, entertainment and healthcare.
The main goal of online shops is to sell more. Here attractive UI and smooth animations enter the picture.
Flutter app development can provide not only a consistent look over several platforms and a flexible system of customizable components and widgets but a constant number of frames per second. Impeller allows building user experiences for 120Hz ProMotion.
Flutter web uses two renderers, HTML and CanvasKit, providing developers with two approaches to ensure top displaying quality and supports a mechanism that allows displaying images and animations and increased performance due to shifting image decoding to the browser.
Benefits for fintech
For fintech and banking applications, testing is a critical part as no bugs or errors are acceptable. Flutter allows to cover every aspect with tests speeding up the development process. Flutter app development offers the possibility to write native automated tests with Dart and cover all test types starting from UNIT tests to widget tests and E2E tests (End-to-End). More details about Surf approach to automated tests in Flutter you can read in our dedicated article.
For one of our clients we completed a Flutter-powered B2C banking application project with test automation and the required infrastructure so that the bank can run the tests themselves. The code is 65% covered with End-to-End automated tests which implies the testing process with the detailed emulation of the user environment. Such tests ensure the detailed check of the product quality.
Framework power for large-scale businesses
Large-scale corporations set high requirements for security of the digital solutions they use for the workflow. Therefore, all IT contractors must undergo security audits prior to release including penetration tests and code audits.
Having several large-scale products under our belt, we have had good chances to make sure that Flutter development allows passing audits with the minimum issues possible. In addition, applications on Flutter can use the security technologies, including Touch ID, Face ID, or a fingerprint scanner.
Final word about Flutter app development
Surf is among Flutter early adopters and we have already had possibilities to check all the above ideas and insights in practice, and even more.
We believe that strong engineers don’t just use technologies, but improve them. This is why we contribute actively to making Flutter better with open-source solutions. Our Flutter team have developed our own approach to architecture in Flutter apps that help write cleaner code and cut back on maintenance and revision times and developed a set of libraries and tools to optimize Flutter development. We check the new ideas and approaches on our internal projects before implementing them in the production projects.
If you have any questions left, about Flutter strengths and weaknesses and\or any ideas to discuss about your specific project, do not hesitate to contact us.