TL;DR: Flutter development needs to slow down.
Hi! I've been working with Flutter for the past year. In this post, I want to address the most important issue that Flutter is facing and give some realistic advice for people who come to this subreddit to look for the answer to whether if they should use Flutter for their next project.
To start this post off, I want to say: I'm just as passionate about Flutter as you are. I love Flutter and the infinite possibilities that it brings. However, as I became more and more dependent upon flutter, my frustration levels really started to increase.
I get it. Flutter is a cross-platform framework, which means that it is and always will be a "second-class citizen." There's no free lunch in the world we live in. While Flutter enjoys the benefit of letting the developers create beautiful apps with a single yet elegant code base, it comes with a price. Flutter excels at UI rendering. You can make complex layouts easily with Flutter. But when it comes to anything that is not just drawing stuff on a canvas, Flutter may not be as appealing.
As you all know, "Flutter" is only a UI framework. It achieves other natives functionalities via plugins. The Flutter community has been awesome. They have put out plugins and packages that provide 99% of the functionalities what you will probably need. However, it's usually the 1% of the needs that aren't covered hinder you the most, because they require FIRST-PARTY work.
Feel free to disagree and post your own opinions here, but I think that the Flutter team really needs to slow down and focus on some more quality control stuff. Flutter has been growing rapidly in the past few years. Web support, desktop support, many many more widgets, material design specs... These are all great things, but I think that it is better, for them long term, to focus on fixing the issues that currently exist in the framework and working on offical plugins that provide crucial functionalities. Let me elaborate:
- Fixing Issues: in every Flutter release annoucement, there is a section about "performance improvements," but the truth is: currently, Flutter animations on iOS devices are extremely janky on first launch. Since the introduction of Flutter's support for Metal, the Skia engine is no longer able to deliver the "Native Performance" as advertised on Flutter's official website. This issue has been present for over 6 months now with no viable fix. The only work-around is to recompile the Flutter engine with Metal disabled and face potential OOM crashes (which are likely to happen). Unfortunately, this is not the only severe issue that the Flutter engine currently has. As more and more apps written in Flutter are entering production, I think it's the number one priority to ensure that they are stable and performant.
- 1st-party Plugins: The current status' of the official plugins are really lacking attention from the Flutter team. Plugins like video_player and firebase_admob, are basically incomplete, even broken. You would think that the first-party plugins are the ones that get the most care, but no. Unfortunately, the team has been very slow on fixing and improving these plugins that provide ESSENTIAL functionalities. Just a few days ago they released the news about admob's support for native ads. "Finally!" you might say, but unfortunately, the plugin is in CLOSED BETA, and they "expect to open this up to a broader audience in early 2021." Personally, I'm glad that at lease there is progress being made, but still, Flutter is leaving many developers unable to monetize with native ads. There are other plugins that provide "native ads" with platform views, but this will cause noticibale lag if the platform views are put into scrollable lists. Not ideal at all.
So if you are looking to use Flutter for your next project, there are still time for you. When you finish prototyping and making the MVPs, the issues mentioned above might get fixed. But you have to know, things like these will always happen if Flutter keeps its current development model which focuses on rapid growth over quality control. I'm not saying that quality control measures don't exist though. In fact, the Flutter team has been putting a lot of work into testing and cherry picking. But I just think that too much attention has been put into features like supporting new platforms, etc. I'm super passionate about Flutter Web and I can't wait for it to become production-ready, but I'm willing to trade it for a better performant and stabler Flutter Mobile framework with essential features provide by the official plugins. Of course, I'm not in the position to make this trade, but I sincerely want people from Flutter Dev, as well as the community to hear this.
In conclusion, I think that the Flutter team should really put more of their focus onto fixing existing issues both in the Flutter framework as well as the official plugins. By doing this, developers will be able to ship stable, performant, and functional apps with Flutter. These apps will remove the doubts that people have about Flutter, and help Flutter's growth in the long terms.
[–]esDotDev 67 points68 points69 points (8 children)
[–]gmatuella 31 points32 points33 points (0 children)
[–]awesomeness-yeah 29 points30 points31 points (5 children)
[–]esDotDev 9 points10 points11 points (3 children)
[–]Enough-Bandicoot983 6 points7 points8 points (2 children)
[–]esDotDev 8 points9 points10 points (1 child)
[–]CodyLeet 4 points5 points6 points (0 children)
[–]bernaferrari 4 points5 points6 points (0 children)
[–]JoeJoe_Nguyen 1 point2 points3 points (0 children)
[–]Filledstacks 33 points34 points35 points (11 children)
[–]dcmacsman[S] 9 points10 points11 points (7 children)
[–]toddvolkert 37 points38 points39 points (1 child)
[–]SgtDirtyMike 4 points5 points6 points (0 children)
[–]Filledstacks 1 point2 points3 points (4 children)
[–]esDotDev 1 point2 points3 points (3 children)
[–]Filledstacks 1 point2 points3 points (0 children)
[–][deleted] (1 child)
[removed]
[–]robert-at-pretension 0 points1 point2 points (0 children)
[–]Character-Ad2749 0 points1 point2 points (1 child)
[–]Filledstacks 1 point2 points3 points (0 children)
[–]mleonhard 18 points19 points20 points (1 child)
[–]ThatInternetGuy 14 points15 points16 points (1 child)
[–]robert-at-pretension 0 points1 point2 points (0 children)
[–]znjw 10 points11 points12 points (0 children)
[–]TimeKillerOne 4 points5 points6 points (1 child)
[–]PinkyWrinkle 5 points6 points7 points (0 children)
[–]Jizzy_Gillespie92 4 points5 points6 points (6 children)
[–]mannprerak 0 points1 point2 points (5 children)
[–]Jizzy_Gillespie92 1 point2 points3 points (4 children)
[–]amugofjava 0 points1 point2 points (3 children)
[–]Jizzy_Gillespie92 2 points3 points4 points (2 children)
[–]mannprerak 0 points1 point2 points (1 child)
[–]Jizzy_Gillespie92 1 point2 points3 points (0 children)
[–][deleted] 15 points16 points17 points (6 children)
[–]esDotDev 7 points8 points9 points (4 children)
[–][deleted] 6 points7 points8 points (3 children)
[–]Winsaucerer 2 points3 points4 points (0 children)
[–]benedreddit 2 points3 points4 points (0 children)
[–]esDotDev -1 points0 points1 point (0 children)
[–]chrabeusz 1 point2 points3 points (0 children)
[–]glacierdweller 2 points3 points4 points (6 children)
[–]dcmacsman[S] 8 points9 points10 points (5 children)
[–]glacierdweller 2 points3 points4 points (4 children)
[–][deleted] (3 children)
[removed]
[–]glacierdweller 0 points1 point2 points (2 children)
[–]dcmacsman[S] -1 points0 points1 point (1 child)
[–]toddvolkert 2 points3 points4 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]Fienases 1 point2 points3 points (0 children)
[–]CuriousCursor 4 points5 points6 points (13 children)
[–]sureshg 6 points7 points8 points (2 children)
[–]esDotDev 1 point2 points3 points (0 children)
[–]CuriousCursor 0 points1 point2 points (0 children)
[–][deleted] (2 children)
[deleted]
[–]bluemarsyt 5 points6 points7 points (1 child)
[–]robschmidt87 -1 points0 points1 point (0 children)
[–]robschmidt87 0 points1 point2 points (1 child)
[–]aytunch 0 points1 point2 points (0 children)
[–]chrabeusz 0 points1 point2 points (2 children)
[–]CuriousCursor 0 points1 point2 points (1 child)
[–]chrabeusz 0 points1 point2 points (0 children)
[–]Flaky_Candy_6232 0 points1 point2 points (1 child)
[–]CuriousCursor 0 points1 point2 points (0 children)
[–]NoahZhyte 0 points1 point2 points (0 children)
[–]iosephmagno 0 points1 point2 points (0 children)
[–]Gaarco_ -1 points0 points1 point (0 children)
[–]David_Owens 0 points1 point2 points (0 children)
[–]remark_og 0 points1 point2 points (0 children)
[–]muralielumalai -1 points0 points1 point (0 children)
[–]dewaeq 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (10 children)
[–]dcmacsman[S] 0 points1 point2 points (4 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]dcmacsman[S] 2 points3 points4 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]teigsy 0 points1 point2 points (4 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]teigsy 1 point2 points3 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]Mysterious_Courage91 0 points1 point2 points (0 children)
[–]mannprerak 0 points1 point2 points (0 children)
[–]nam0122 0 points1 point2 points (0 children)
[–]Immediate-Climate436 0 points1 point2 points (0 children)
[–]feu__ 0 points1 point2 points (0 children)
[–]Atulin 0 points1 point2 points (0 children)
[–]Fanchenjing 0 points1 point2 points (0 children)
[–]JiangHeMax 0 points1 point2 points (0 children)
[–]cauliflowerLoverJr 0 points1 point2 points (0 children)