I was surprised when I learned Flutter actually runs as native code without needing a JavaScript bridge like so many others.
Although similar to something like React Native - Flutter does paint the screen. Personally I see it as a potential Electron replacement in the future.
From what I’ve seen Impeller is also a big help on iOS. Screen jank was pretty bad for us when Flutter was using Skia as a rendering engine, although when I last messed with Flutter (~6 months ago) Impeller felt almost production ready but iirc there were still a couple small things, not sure if they are better now.
Personally I’ve become a big fan of Flutter, especially for back-office/utility type apps. We would follow all the Material Design 3 guidelines and when it comes to time spent, if you need to develop the same app on more than 1 platform, it’s worth consideration.
I’ve found some people will say: “But it’s hard to get it to look like a native app in Flutter” but for me I’ve always seen that as more of a skill issue. You are literally painting the screen, you can get whatever pixel perfect design you want, if it can be Figma’d it can also be Fluttered and to be fair there are Cupertino widgets and you absolutely can get the best of both/many worlds if you want. Just like how on the web you can do a transform based on device width to switch between the mobile or web view, if you desire you can have different widgets show up for different platforms and give everybody a native feel. I personally still think that’s easier than writing/maintaining multiple individual apps.
I think the biggest downside though is that search engines don’t do well with Flutter Web. It isn’t the nice easy to crawl HTML, and it’s really hard to get a flutter app indexed or to give it good SEO. There’s also silly rules that search engines have about how the content displayed to the user vs crawlers has to have the same data. (I.e. when the web-crawler asks for your page, you are supposed to give it a page with the same data you would give the user.) The best we could do to improve SEO was to make the landing page a page that in the background ran all the same queries and shoved the data into HTML tables, with a popover that said “this is a page for robots that had a button that said “Take me to ABC.com” and a check box that said “automatically redirect me next time” that we stored in a cookie. It was hacky and not a good user experience.
For now, whenever I need to do anything GUI I will use React for the web and Flutter for everything else, but it would be nice to truly be able to only use 1 framework for every platform, which to be fair I’ve used Flutter web and it isn’t all to bad if it weren’t for the issue with search-engines web-crawlers. For apps that don’t need SEO.. Flutter is a great choice. I suspect we’ll see a lot more SaaS apps building in Flutter in the next few years. I think it’s on the cusp of being mature enough to be seriously considered for production scenarios.
I’m just mostly worried about the ecosystem. Google chose Dart for flutter after the results of a lot of research that only Google scale companies can do and to be honest although it IS a lesser known language it isn’t a bad one. It’s AOT and JIT so the hot reload is amazing. It reads like “insert most language you know” here. If you know how to code nothing in Dart should be drastic or surprising. If anything I’d almost say Dart is boring, which I like boring things. I’ve experience with a handful of languages, and for me Dart ranks highly in terms of usability/ergonomics. But there’s a not unsubstantial risk that Google could decide to drop the ball and Flutter could become kind of like the Windows phone. Really great, but canned because people didn’t build enough things for it.
If I were on the Flutter team I’d be most focused on figuring out how to deal with SEO issues. (assuming impeller does indeed provide a full fix for the screen jank, I’d assume it’s gotten better in the past few months, can anyone comment as to if it’s “there” yet or not?)