In Flutter We Trust: How to Keep Your Business Confident in Adopting Flutter

PrimaryBid Tech Blog
PrimaryBid Technology Blog
9 min readOct 19, 2023

--

At PrimaryBid we’re constantly looking for ways to improve our products and services, not only from the user point of view but also on the technical side of things.

Last year was very important for our company since we’re continually challenged to bring our platform and products to the next level, with a focus on quality, testability, and scalability. That brought us to start a conversation about the future of mobile apps and how to best serve our customers.

We evaluated two options: (1) going full native in both iOS and Android or (2) using a cross-platform framework. Ultimately we decided on a cross-platform framework and identified Flutter to optimise our team productivity while building a world-class app. But once you start considering building your app in Flutter, there’s always a list of obstacles and questions you may face. Those are likely going to be related to:

  • Multi-platform development
  • Community support
  • Third-party integration
  • CI/CD workflows
  • Security
  • Hiring
  • Performance

Let’s dive into each one of them:

Multi-platform development

Multi-platform development is an approach that allows you to build a single mobile application that runs smoothly on several operating systems.

In cross-platform apps, some, or even all, of the source code can be shared. This means that developers can create and deploy mobile assets that work on both Android and iOS without having to recode them for each platform.

Benefits:

  • Effective resource management: You don’t need two different teams to build an Android and iOS app. In other words, you need fewer resources, and the product development is likely to be synchronised most of the time.
  • Reusable code: With cross-platform programming, mobile engineers don’t need to write new code for every operating system. The same applies to tests, they only need to write the tests once, and they will be valid on both platforms for most of the time.
  • Time savings: Due to code reusability, cross-platform applications require less code and when it comes to coding, less is more. With fewer lines of code, there are fewer places for bugs to emerge, resulting in less time spent testing and maintaining your code.
  • Attractive opportunities for developers: Many mobile engineers view modern cross-platform technologies as desirable elements in a product’s tech stack. Having a modern tech stack can simplify the hiring process for your team.
  • Opportunity to reach wider audiences: You don’t have to choose between different platforms. Since your app is compatible with multiple operating systems, you can satisfy the needs of both Android and iOS audiences to maximise your reach.
  • Quicker time to market and customisation: As separate apps take longer to develop, time to market has become a struggling factor for many businesses. By using a multi-platform framework, you can develop and launch your product much faster.
  • Feature Parity: As both applications are built from a single codebase features are simultaneously delivered to both platform applications, ensuring they remain synchronised. This stands in contrast to separate platform development where apps can occasionally deviate significantly in terms of feature release schedules and even the features themselves.

Community

Communities are essential nowadays to support any technology and framework. So it comes as no surprise when people ask if the Flutter community is big enough to help you during the development of the product and if Google will keep investing in Flutter.

To address these concerns we can take the community of React Native as a reference (as not many people would question its community size nowadays).

Flutter and React Native communication channels and community size comparison for October 2023.

From the above data, you can see that the Flutter community is more extensive than that of React Native. If we look at the results of the annual Stack Overflow Survey in the “Most Popular Technology — Other Frameworks” category, we see how much Flutter’s popularity has grown over the last few years:

Source: annual Stack Overflow Survey in the “Most Popular Technology — Other Frameworks” 2020, 2022, 2023.

It is also worth mentioning that there are plenty of reasons for Google to keep developing Flutter, such as:

  • Big brands have already invested in Flutter (e.g. Google Pay, CrowdSource, BMW, Crédit Agricole)
  • 600k+ apps in the Play store
  • Countless apps on the Apple Store
  • Used for internal apps at Google
  • Flutter is very successful and growing
  • The Flutter team is releasing regular improvements
  • Flutter is not only Google, the majority of contributors come from outside of Google

Third party integration

In the early days, Flutter was not supported by many third parties, but lately, things are changing:

  • More businesses support Flutter: Businesses can’t ignore the growing Flutter community and if they don’t adapt, they may lose clients.
  • Community-driven plugins: If you want to build a Flutter app that needs to integrate a third party, but no Flutter Software Development Kit is available, chances are that someone else before you had the same issue and they started the development of a community-driven plugin.
  • You may have a choice: In many cases, we may not be constrained to a specific third party to use, but we only have a set of requirements satisfied by different companies. If you have multiple choices, the availability of a Flutter SDK could drive your decision towards a specific product.

In the unlikely event that you are constrained to use a specific third party and you can’t find any Flutter plugin available online, you can still easily integrate their native SDKs in your Flutter app, using Platform Channels.

CI/CD workflows

Continuous integration and continuous delivery workflows are essential when building a mobile app. They allow us to integrate new code and deliver it with confidence, so it comes as no surprise if someone wonders if Flutter can be used with most of the CI/CD tools already available, or if it comes with some limitations.

To cover this point, we should always take into consideration that the final product built with Flutter is always a native package (.ipa, apk or. aab). This means that we can utilise every tool available to distribute native builds.

When it comes to testing, Flutter has its own command-line prompts that can be used when Flutter is available on the running machine, which nowadays is the case for most of the CI tools out there. And even if Flutter is not installed by default, you can always download and install it as part of your workflow.

Fastlane is also fully supported — if you are interested in knowing more about continuous delivery in Flutter, check their official page,

Security

The importance of security can’t be underestimated when thinking of adding new technologies to your tech stack.

The Flutter team is committed to ensuring the security of the framework and its ecosystem. They put measures in place to help developers build secure applications and there is a dedicated team addressing security issues as they arise.

Recently, Flutter announced its new compliance with the Supply-chain Levels for Software Artifacts (SLSA). This marks a significant milestone in enhancing the security of Flutter apps, benefitting you and your products:

  • Defined and trusted security standards: SLSA compliance ensures that Flutter apps are built with robust security practices. This helps with building trust among developers and users.
  • Future-Proofing: As security threats are constantly evolving, SLSA compliance ensures that Flutter remains resilient against emerging challenges.

Please keep in mind that the security of a Flutter application heavily depends on the practices of the developers who build it. Developers need to follow best practices for secure coding to ensure the security of their Flutter applications.

To help with that, the Open Worldwide Application Security Project® (OWASP) has set a list of the top 10 risks you should consider covering when writing mobile applications. Flutter has all the tools you need to write a secure application, and you can find more information on what those tools are and how to use them in this article.

Hiring

Flutter is a relatively new technology, and the demand for experienced Flutter developers is growing rapidly. As a result, the competition for top talent can be fierce, especially in technology hubs where there are many startups and established companies.

Senior and lead roles could be hard roles to fill if we consider that the first stable release of Flutter only happened in December 2018.

Flutter history. Info source: FlutterDevs.

On the other hand, the interest in the framework is rapidly growing and many developers who have learned Flutter report positive experiences.

Exceptional onboarding documentation is available, which helps connect fundamentals and common workflows from other popular languages with how it can be done in Dart/Flutter, enabling experienced devs to use their existing knowledge and experience when starting out on Flutter.

The ease of onboarding devs to Flutter meant that we could focus on hiring skilled Software Engineers, not just Flutter developers, knowing that they could quickly adapt. On top of that, Flutter comes with a great community and many ready-to-use widgets, which are very useful to anyone who is new to the framework.

Performance

You may be wondering if Flutter apps are as performant as native ones, and there’s no easy answer to this question.

Many articles describe the execution of benchmarks where the performance of Flutter and native apps are compared in different (and sometimes arguably valid) testing scenarios.

From the engineering perspective, a small difference in milliseconds when performing a test scenario is probably enough to state a winner, but does it matter if it can’t be perceived by the end user?

From my point of view, the app should run smoothly on the user’s device and should give them the feeling of responsiveness and readiness. Flutter can achieve excellent results by being designed to help developers easily achieve constant 60fps and 120fps when available.

Performance overlay with times to render a frame.

In the above animation, the top graph (marked “GPU”) shows the time spent by the raster thread, the bottom one graph shows the time spent by the UI thread. The grey lines across the graphs show 16ms increments along the vertical axis; if the graph ever goes over one of these lines then we are running at less than 60fps.

As you can see, even when fast scrolling through a long list of items, Flutter is still able to render a frame well below the 16ms required for 60fps performances.

One thing we can state for sure is that the final binaries will be bigger than the native ones. That is because Flutter core engine takes up 4 MB, plus, there is the framework and app code which makes app binaries a bit heavy in size.

So my suggestion is to check the market you are planning to release to, if the app size is something that could potentially drive users away, then pay the right attention to this metric.

Conclusion

At PrimaryBid we are more than happy with the choice we made last year to develop our new apps in Flutter. Our existing mobile team was able to pick up Flutter quickly thanks to the great documentation and great developer experience. We didn’t encounter any major blockers due to the framework choice and we managed to successfully pass security tests. The new apps are a big step forward and have been appreciated by our users and clients. To develop them was a very positive experience, and now that they are live we are looking forward to our next tech challenges.

Author: Lorenzo Greco, Tech Lead Manager and Principal Mobile Engineer at PrimaryBid. Lorenzo is a passionate Software Engineer with a decade of experience in mobile development. He loves every phase of the app development process, from design to deployment.

--

--

PrimaryBid Tech Blog
PrimaryBid Technology Blog

Learn more about how PrimaryBid designs, builds, and operates our systems and technology architecture.