The Adoption of Flutter
In 2020, after doing nearly 10 years of native Android development and some Flutter on the side, I accepted a contract to investigate if Flutter had what it takes to build a new mobile grocery app at Albert Heijn. Albert Heijn is the largest e-commerce retailer in The Netherlands. The app I worked on is for a (Dutch only) home delivery service called “AH Compact”, available on the App Store and Google Play.
I loved the Flutter development experience so much that I founded the Flutter Netherlands community, together with Pieter Otten and René Floor. At our meetups we constantly hear a lot of positive experiences from other enthusiastic Flutter developers in the Netherlands.
From the reports from the Flutter team itself, and the well known “Cross-platform mobile frameworks used by software developers worldwide from 2019 to 2021" report we can learn that as of 2021 Flutter is the cross-platform technology-of-choice. Then I started thinking; “I never worked with any other cross-platform before and I’m probably not the only one”. I had a strong feeling Flutter is expanding the overal percentage of apps that are built with cross-platform tools.
I decided to create a survey to help me validate that hypothesis. Another decision I made was to create a set of questions that I could ask the Flutter community only, as to not slide down in yet another Flutter vs native battle. There’s still a lot of heated reactions from the established native development community whenever Flutter is even mentioned as a viable solution to build mobile experiences. Part of that emotion is a completely natural reaction to change, and showing a fear for it, but that’s for another post.
I sent out the survey to the Flutter Netherlands, Flutter Community and Flutter Study Group Slack groups. A friend shared it on Discord and I shared a post on Twitter and LinkedIn. Within 2 days I received 129 responses (that’s how awesome the Flutter community is!). After the initial flood of responses it slowed down and I saw no big changes in the outcome with the latest additions, so I closed the survey at some point. Without further ado, it’s time to show the results and give my interpretation on this data.
Are you a professional Flutter developer?
Easy question, with a pretty remarkable result. Most of the respondents are enjoying a full-time Flutter gig!
How much experience do you have with Flutter development?
Around 87% of the respondents has more than 1 year professional Flutter development experience. I interpret that as; a large part of the group has more than 1 year of hands-on experience with Flutter development and therefore has a pretty good understanding of what Flutter is and how it is benefitting them. This gives me a lot of confidence that I’ll be getting some good information out of the rest of the questions in this survey.
When we just look at the full-time developers the more than 1 year experience percentage even goes up to 95%.
After what period did you feel you knew enough about Flutter to start building (features in) an app?
Nearly 1 in 3 was up-and-running in less than 2 weeks. 3 out of 5 in less than 1 month and 7 out of 10 in less than 2 months. My own experience is that I was up-and-running in about two weeks and I’ve heard others with the same experience. I double checked if it had to do with having many years of development experience in general, or a native mobile background, but that didn’t shed any new insights on the numbers.
How did you experience the transition to Dart?
2 out of 5 had no trouble migrating to Dart and even loved the experience. Another 2 out of 5 thought it was fine and Dart is just another modern, typed programming language that fits their needs in building great mobile experiences with Flutter (that is basically describing me as well). The last bigger chunk (1 out of 10) thought it was okay-ish, but did miss features from their previous language. Lastly, one respondent liked to get away from Dart if possible and another prefers Kotlin over Dart.
So a big majority of the respondents had little trouble migrating to Dart and a lot of them even found it an enjoyable experience.
What was your main expertise before you started developing Flutter apps professionally?
The outcome that the majority of Flutter developers have a native Android development background (44.1%) was not surprising to me. I see and hear that all around me. To me this says two things; The first conclusion I draw is; since both Flutter and Android are Google technologies Android developers are more inclined to try out this other tool that the company behind Android is promoting to build mobile experiences with. The second deduction I make is that Android developers are more open minded than iOS developers as it comes to trying out new tools and frameworks.
That only 13.4% of Flutter developers are coming from another cross-platform tool struck me as surprising. I thought this percentage would be much higher. I guess I was wrong, but this does support my hypothesis that the group of developers who are building mobile experiences with cross-platform tools is growing because of Flutter and at the cost of native Android/iOS development.
When the respondent answered “Cross Platform Development” I asked them two more questions
You can draw a couple of conclusions from the first chart. One is that even though the total number of React Native projects must be very high, only a small percentage of these developers are moving to Flutter (3 out of the 129 respondents) so I guess that makes React Native developers happy where they are. More happy than the Xamarin developers, at least!
The percentage of developers who use Xamarin has decreased from 26% in 2019 to 14% in 2020 and only 11% in 2021 (according to the Statista “Cross-platform mobile frameworks used by software developers worldwide from 2019 to 2021” report) and a lot of them are apparently migrating to Flutter. A lot less Ionic developers did the same. So my simple conclusion is that Ionic is more loved than Xamarin.
This graph is pretty conclusive. Most developers, coming from other cross-platform tools, are happier to continue working with Flutter than working with their previous cross-platform tool. This is pretty huge and says a lot in my opinion. Once you’ve gone Flutter, you don’t want to go back. At least that’s very likely for people coming from other cross-platform frameworks.
How many years of software development experience in general did you have before you picked up Flutter development?
I find this chart very interesting. Here we can see that the majority of Flutter developers are migrating from other platforms and are not so much starting with Flutter as their first developer job.
What are you going to do when your current Flutter project finishes?
Nearly half (47.9%) of the people will try to look for a new Flutter project once their current project finishes and around 45% says Flutter is now in their skill-set and wouldn’t mind a new Flutter project, or do something else. So in conclusion, around 95% of the Flutter developers are happy where they are at the moment and would be fine, or even happy to pick-up another Flutter project after this one. Only 2 mentioned they didn’t want to work with Flutter after their current project and 1 person mentioned they want to do Kotlin Multiplatform next.
This matches what I hear and see when I talk with people in the Flutter community. There’s a lot of enthusiasm and who wouldn’t want to stick around and be surrounded by people who love what they do in efficiently and effectively building mobile experiences and making an impact doing so!
What are you using Flutter for at the moment?
Interesting here is that most people are using Flutter to build new apps (81.1%). Next use case are personal projects (55.1%) then web & desktop (29.9%). 17.3% of the respondents are migrating native apps to Flutter and only 11.8% are adding Flutter to their native app via the add-to-app feature.
Creating a 100% Flutter app is the most (cost) effective way of leveraging all the benefits of Flutter. I know a couple of companies who created separate apps to validate Flutter and after that some make the decision to migrate their native apps to Flutter. In larger projects building new features in Flutter and at some point migrating features to Flutter with add-to-app is the most effective way not to disrupt the existing user base and meet the (high) expectations of your customers and stakeholders, while still benefitting from e.g. building these new features once in Flutter.
What are the things you like best about Flutter?
The clear winners are “Ease of use” and “A super nice development experience” with both 81.1% of the respondents ticking that box. 3rd place goes to “A single codebase has so many advantages” as being the biggest selling point in getting buy-in from your management… Develop 1, get the rest for a fraction of the development cost of the first platform you’re targeting. The 4th place is for “The Flutter community is just awesome!” 💙.
I’m creating a separate paragraph for that 4th place. 90 out of 129 people found the Flutter community one of the things they like best about Flutter. Think about that for a second… Out of all the other things that make Flutter so great, the community finishes on the 4th place. Community matters for the majority of Flutter developers out there. If you’re stuck you can easily shout out to the community and they’ll help you out. Passionately helping you achieve your goals without asking anything in return. That’s what’s making working with Flutter so great. You’re part of an enthusiastic movement where there are always people around, willing to share knowledge help you out! Super awesome!
Finally, this question also had an “other” option. Three people filled that in. Somebody answered: “Most other framework have a steep learning curve with many basics to cover. Flutter is the opposite of steep.”. Clear, thanks! Another person answered: “Flutter + Unity (I made unity_widget)”, so that must have been Rebar Ahmad 😉. And the last “other” respondent typed: “Faster development time than native iOS” and I can confirm from an Android point of view; It is my experience as well that it is just easier to build mobile experiences in Flutter than in Android.
What are Dart/Flutter’s pain points or flaws and where is it lacking or not working?
Clear winner here is that the community is not invested in Flutter web (yet) with 55.9% of the respondents ticking that box. Someone also answered that they use Flutter web at the moment, but can understand why people would never switch to it. Others also mentioned the lack of SEO support. The narrative is that Flutter should be used for web applications and not for content web sites (where e.g. SEO is essential). So you can use that as a guideline.
Second place is for people not liking the quality of the 3rd party plugins (or even the official framework packages and plugins are not all stable, or well supported, says one person in an “other” response).
Third place is for people saying they struggle with the native side of things. That is something which shouldn’t be overlooked. Of course you can build great functionality in your Dart codebase, but once you need to dive into the platform details, build plugins or just the sheer distribution of your app on all platforms, you will benefit from having some native platform skills.
The full list of “other” responses on this question:
- I use Flutter for web, but I can see why web developers would never switch to it.
- Not just 3rd party, even official camera plugin still contains bugs and does not support ‘all’ functionality (like switching camera lenses)
- Not as expressive as TypeScript. destructuring, inheritance.
- Code generation can get a bit bloated, but it’s ok I guess.
- Flutter desktop and web are basically still alpha.
- Flutter web is not there yet, but I believe will get there very soon!
- Other platforms should be added only when the currently supported platforms are a bit more mature and have less issues.
- Performance improvements might be hard to achieve, more performance could come out of the box like easier multi-threading support (Coroutines?)
- Web-socket is the biggest problem in Flutter.Dart isn’t yet as mature as let’s say Kotlin or C#. Missing reflection and value based enums the most currency.
- Lack of consensus in the community (state management, payment, responsiveness). Community is newSEO on Flutter web, Load Speed of Flutter web apps
- I spend more time to convince the clients that Flutter is the right solution for their needs than that I develop. As an enterprise employer I need more official resources to share with clients.
Conclusion
First of all I’m humbled by the community for sharing this information with me (129 people responded within a two days!). And I just love being surrounded by enthusiastic, open minded people, willing to learn a new way to build user experiences with, and loving it (half of the respondents will try hard to find another Flutter project if their current project finishes and nearly all respondents who came from another cross-platform tool like Flutter better).
Then, my earlier assumption that the total percentage of apps being built with cross-platform tools is increasing because of Flutter. This was just a hunch and even with the answers in this questionary I will not draw any hard conclusions. Companies like Google or Statista / Slashdata are better equipped to investigate trends like this over the years.
My hunch has become stronger after my survey though! Or even an educated guess. With the majority of Flutter developers having an Android, iOS, Web, backend or no development background at all I think it’s a safe bet that the cross-platform community is growing, just because of Flutter!
How do you interpret this data?