Pros & Cons of Flutter Mobile Development

avatar
Wojciech Rozwadowski
Pros & Cons of Flutter Mobile Development

Since iOS and Android became the main platforms for mobile app development, creating cross-platform products has been appealing for both developers and app owners. As a result, different technologies have emerged to accommodate cross-platform mobile applications. One of the latest additions to the mix is Flutter. What is Flutter mobile development all about, and what are its pros & cons? 

What is Flutter?  

Interestingly, Google started working on Flutter back in 2015, but it remained in the beta stage before it was officially launched in late 2018. Since then, it has definitely been growing in popularity and capabilities. And there are a few good reasons for that. 

It started as an open-source mobile UI framework that helped developers build native-looking Android and iOS apps. Not too long ago, however, Flutter started supporting the development of desktop, embedded, mobile, and web apps from the same codebase. And where there’s less code, there are fewer bugs. 

What’s also worth mentioning is that Flutter apps are built with Google’s programming language Dart. In release mode, it’s compiled Ahead-of-Time (AOT) into native code for multiple platforms, allowing Flutter to communicate with the platform without the need to go through a JavaScript bridge (as in React Native, for example). This improves app startup times and their overall performance. In development mode, though, Flutter is compiled Just-in-Time - which is what makes it possible to hot-reload/restart fast. But we’ll get to that. 

There’s no doubt that the language itself is fast, object-oriented, and quite powerful, but it often loses in comparison to more mature technologies like JavaScript or C# that power React Native or Xamarin respectively. 

Speaking of the competition: despite the fact that React Native and Xamarin are still used more widely, Flutter is on the rise. According to Google's Tim Sneath, this UI framework is now taken advantage of by nearly half a million developers who claim to use it on a monthly basis. With its integrated rendering engine, testing and integration APIs, and ready-made widgets, it’s a solid contestant to other technologies that enable cross-platform mobile development. How is Flutter different, then?

Pros & Cons of Flutter Mobile Development 

It’s no secret that each solution has its advantages and disadvantages which ease or impede mobile app development to some extent. Flutter has a number of benefits that keep attracting developers and app owners, including: 

  • Relatively fast development, which saves you time, effort, and money (at least at the very beginning, but we will get to that). Like any other cross-platform technology, it allows you to use the same code base for building separate iOS and Android apps. This, in turn, speeds up the whole development process and means that you don’t need two teams working on the code for a single platform.

  • Flutter’s “hot reload” makes it possible to make changes to the code and see the results immediately in the app preview, without the need to recompile the code. This way, you can easily fix bugs and experiment with different UI elements and features once you’re at it. 

  • Full customisation & fast rendering thanks to Flutter’s layered architecture. It’s said to “give you control over every pixel on the screen” and let you overlay & animate graphics, video, text and controls without limits. 

  • Flutter also works for web and offers proper documentation, allowing you to check how native controls work,

  • What’s more, it also separates UI from native controls, which eliminates a lot of nuances and errors made by smartphone manufacturers. These might not happen too often, but are difficult to omit with native development. Separate UI also means having a unified view on all system versions without an effort.

Is Flutter all about pros, though? Not quite. We tested it out in practice to see whether that’s the case. Here’s what cons we found: 

  • Flutter is still an immature framework. It hasn’t been around for long, which is why it’s still not entirely stable. A number of more or less problematic issues remain, along with a lack of more advanced features that leverage the capabilities of operating systems. Many of these features are not yet supported, with plenty of libraries being in the pre-alpha stage and showing limitations when comparing them to native counterparts  (i.e. Google Maps).  

  • Dart is also pretty immature. When comparing it to Swift and Kotlin, it’s basically like taking a step back - it has either fewer features or the existing ones are not exactly well-refined.

  • Flutter apps are quite large and “heavy” to start with. They occupy a lot of space and take longer to download or update.

  • The look & feel is not 100% the same as with native solutions. Basically, Flutter doesn’t create native components. It somewhat replicates Android’s Material Design and iOS-specific components with its Cupertino library, but it’s not exactly the same. It’s visible especially with different system versions where text fields or buttons vary from one another, yet stay the same in Flutter.  

  • There are no single “guidelines” when it comes to developing Flutter apps, which can be problematic when building more complex software. 

  • The framework, as well as Dart language, are changing rapidly at times, which can make maintaining the code difficult in the long run. Plus, given the track record of infamous “projects killed by Google”, the future of Flutter might still be uncertain. 

When should you use Flutter, then? 

It’s clear to see that Flutter is not mature enough to handle more complex projects, at least for now. At the same time, however, it’s a good solution for an MVP (especially for startups). Actually, it’s a common pattern with all relatively new technologies.   

Essentially, whenever you have an idea for a mobile app but you’re not exactly sure whether it’s a good one: build your MVP with Flutter to cut costs and see your idea in action. If the MVP becomes successful, you should start thinking about “turning it” into native mobile apps instead. 

Let’s face it: developing two separate apps from the start would take much more time and money. That’s also one of the reasons why startups with limited resources turn to cross-platform solutions like Flutter. Reusing code helps them bring their ideas to life without making substantial investments. 

More established enterprises also seem to appreciate Flutter’s ability to build highly-branded experiences that support multiple platforms. If that’s something that might interest you, you should consider giving this cross-platform technology a try.     

Which is better: Flutter or React Native? 

Flutter is said to be a strong contender to React Native. For now, though, React Native is more mature and stable - not to mention that it takes advantage of the most popular programming language, JavaScript, and already has a large community of users and supporters behind it. 

At the same time, however, Flutter seems to be growing at an unprecedented rate. It also happens to be faster than React Native - there’s no need to go through a JavaScript bridge, and thanks to the use of Dagger it’s easy to write & compile code at speed. It might be just a matter of time before it’s used more widely. 

This doesn’t mean that other cross-platform technologies become obsolete, though. After all, the nature of both Flutter and React Native allows to reduce time-to-market and makes developing mobile apps more efficient, which attracts increasingly more developers and app owners.

Here’s a short comparison of Flutter vs React Native:

The verdict? Both Flutter and React Native have their pros & cons when it comes to cross-platform mobile development. Flutter definitely has its limitations, but the benefits are hard to ignore for specific use cases. Essentially, if you want to reduce development cost & time, and release the app on all available platforms simultaneously - Flutter can be a good choice. 

Each app is different, though, which is why you should always go after a solution that can support your goals and strategy in the long run. If you’re not sure what technology to choose for your project (and whether you should actually go for cross-platform mobile development) - give us a shout

In the meantime, you might also see our comparison of React Native vs Native Apps.

Authors

avatar

Wojciech Rozwadowski

blog comments powered by Disqus
6 min. read
50%

More to discover

avataravataravatar
Karolina Antonowicz, Miłosz Michałowski-Żuk, Mikołaj Saik

What are mobile push notifications and what are the best practices for introducing them?

Mobile push notifications are becoming increasingly more popular and are starting to be considered as one of the more common communication channels, while being equally if not even more functional than the others.
10 min. read
avataravatar
Karolina Antonowicz, Mikołaj Saik

Indoor navigation and the best ways to implement

Everyone of us has probably experienced the situation of leaving a store with empty hands. According to the Retailtouchpoints, nearly 96% of shoppers leave a store without making a purchase at least once in their lifetime.
8 min. read

Is there anything we can do for you?

We use cookies to enhance your experience. Read more about cookies in our privacy policy. Agree