jaredcwhite 6 days ago

Is Flutter interesting as a way to create a cross iOS/Android app? I don't know, maybe. But I do know their web experience is atrocious. Terrible performance, no standard OS-level ergonomics, essentially Flash all over again with a single <canvas> tag. Why would anyone ever sign off on shipping something with this on the web except maybe some weird enterprise-y internal app?

  • satvikpendem 5 days ago

    It works great for apps, especially ones with lots of interactive or graphics heavy elements. Treat it like Flash, yes, you wouldn't make a game out of DOM interactions. You could, but most people used something like Flash to do so.

mike_hearn 5 days ago

I keep hearing good things about Flutter, it's seems like a bit of a quiet hit. We've added support for Flutter Desktop in the next release of Hydraulic Conveyor so it'll get a lot easier to distribute Flutter apps outside the browser soon. There's a demo of how to package Flutter apps built using Github Actions here:

https://github.com/hydraulic-software/flutter-demo/

(see the conveyor.conf file, it's a normal Flutter Desktop app other than that). That won't work with the current release but we should get the next one out this week or next.

This should be great for people who want to bring their cross-platform mobile app to laptops and other form factors without exploding costs by needing to write/maintain an HTML version too. That duplication really isn't ideal for a lot of reasons e.g. some users will end up trying to use the web version from mobile so you end up with actually 4x frontend dev costs (iOS, Android, web desktop, web mobile) and for smaller projects it's just hard to justify.

Traditionally desktop deployment was a huge pain and that pushes people towards trying to use Chrome for everything, because it handles updates and uploading a few files to a web server is easy. With Conveyor and easily available multi-platform CI for compiles that's fixed now, the hardest part is buying the signing certificates which is just a bit of paperwork and money. The problem with trying to do everything with WebAssembly and canvas is that you're paying a big perf hit and due to cache partitioning you can't really reduce the size hit of an alternative language and graphics stack by amortizing it across different sites like was once possible. And browsers aren't interested in making it easy for people to do that, they want to control the whole experience, so there's lots of paper cuts and apps written with Flutter are ultimately going to be best experienced outside the browser.

[1] https://hydraulic.software/

fnfjfk 6 days ago

Reinventing UI frameworks from absolute scratch is always going to be janky and playing catch-up, on every platform.

At least RN uses normal UIKit controls on iOS that work and feel like normal.

  • zigzag312 5 days ago

    > Reinventing UI frameworks from absolute scratch is always going to be janky and playing catch-up, on every platform.

    Why? UI framework build from absolute scratch can be build using same low level APIs as platform's native UI framework. Performance depends on framework's architecture and quality of the implementation.

    RN can only be worse or equal as the underlying native UI framework. UI framework build from scratch can be worse, equal or better.

  • kitsunesoba 5 days ago

    The problem I see with cross platform UI frameworks, at least on desktop, is that often they don’t come with a full compliment of widgets with the dev being told they’re on their own for surprisingly basic things.

    A lot of newer UI frameworks have nothing resembling a tableview with sort and columns/rows that can be rearranged with drag and drop for example, which is insane to me. These things have been standard in desktop OS UI frameworks for ages.

    This kills my motivation when trying these frameworks out. I don’t want to be hunting down some half baked third party dependencies for various widgets or rolling my own, I want to be writing application code.

  • mike_hearn 5 days ago

    Perhaps, but that didn't stop web apps!

bsaul 6 days ago

i don't get the comments : the article says that flutter is alive and thriving, yet the comments speak of the tech as something soon to be dead.

  • urbandw311er 5 days ago

    Then the truth is probably somewhere in between.

rektide 5 days ago

The Flutter 3.7 article on The Register[1] had great quotes throughout. Which often sent cold shivers down my spine.

> "Historically, people built for the web using the Document Object Model and HTML," explained Sneath. "And that was kind of the only way to build web apps. Now, over the last couple of years, between Canvas and WebAssembly, we've got these new technologies that enable a different class of web app experience. And so Flutter is unapologetically aiming at that next-generation class."

So, you're saying we will abandon DOM and HTML & use Canvas to push pixels in people's faces? That... does not sound very web like to me. The "different class" that Flutter is "unapologetic" about sounds like VNC or Flash; a completely controlled, locked down, isolated little fief nestled inside the web page. Again, like Flash.

> "We're aiming at this next class of apps that look very much like the kinds of apps that Flutter is designed to solve – high graphical fidelity, offering pixel level of control over apps, having a canvas where you can draw and manage every part of the environment yourself."

Not on Flutters priority list/not supported after the Flutter revolution: user-agency, web extensions, view-source, malleability, standards, interoperability, support from existing accessibility tools.

I actually think Flutter is an interesting set of tech & am glad to see another entrant to building apps. But every-time they open their mouth, it's to badmouth & insult the web, to highlight how their game plan to win is by becoming evil & ruining interoperability & standards as hard & fast as they can.

The priority system here seems deranged & anti-human to me; 'we take the only successful standards based hyper-medium on the planet, and we reduce it to a Canvas renderer that shoves pixels in your face, with 100% control from Google over what those pixels are and how they work.' We forfeit all user control, we give up all ability to read & parse & modify each other's web content. And for what? "Pixel perfect level of control?" "High graphical fidelity"? "Draw and manage every part of the environment yourself?" Bro, your app is not that important. There's other kinds of delight; I think users are waking up to how shallow & controlled & manipulative apps are, and doubling down on "we just need slicker design systems to really really delight our users" (and capture them for good!) is a limited game.

This is a nightmare, one where only a very very few players have control over the technological environment, one where humanity has no say, no stake, no control. What Flutter proposes is the most polarizing end of what Ursala Franklin talks about in technological society, where who can build the environment, who has say, how things form is extremely narrowly controlled. It talks to utterly prescriptivist ends where humankind merely receives technology as it is built from the corporation, and that end is forever & always enough (& all that is possible). The web, to me, has been defined & shaped by being more, by being better, by having a deeper level of engagement, owing to a malleable & open platform that users participate in, every time we install an extension, every time we run a user style sheet; a holism.

When we invited the "intertwingularity" back in the Cluetrain Manifesto days, there was a value system trying to come out, that humanity is empowered when systems are open & out there & when we can explore what is possible. I welcome technological innovation, but the wanton disregard & active badmouthing the Flutter spokespeople have for malleable systems, for standards & interoperation, their willingness to inflate their own importance by insulting & denigrating web extensions, user agency: it's an incredibly poor look for their would be new Flash project, for their attempt to make an impervious, inaccessible, unmodifiable prison of control within the web & atop native. I'd like to see a tone shift, where they talk about how they'll better work with the web, rather than usurp it's bones to build a new monstrous titan of app-dev.

Thankfully this 3.7 release actually has some perhaps possible good news, that maybe/perhaps Flutter can be intermixed somewhat with HTML/DOM on the page. The Register suggests perhaps Flutter's HTML/DOM mode and it's CanvasKit pixel-blaster mode can perhaps interoperate some. It's hard to tell right now how well Flutter might possibly be able to play within the web. But it's hard to recognize even the possibility- to see that the Flutter team really has any empathy what-so-ever for the web & web standards- when their rhetoric so proudly champions things that seem actively bad for the user, when so much of the work still looks like source-free, unmodifiable islands of Flash on the page; it wasn't good then, & it's still harmful now, & it's hard to appreciate the potential gain when it so lopsidedly enhances corporate control. But at least there is some evidence that Flutter is trying to do a little more interweaving than before... although again, it's hard to recognize that when the current rhetoric from the team is so mono-focused on their graphical capabilities above all.

[1] https://www.theregister.com/2023/01/25/flutter_3_7/ https://news.ycombinator.com/item?id=34519279

[2] https://en.wikipedia.org/wiki/Ursula_Franklin#Technological_...

  • timsneath 5 days ago

    It's a little dispiriting to read a screed like this, because it doesn't represent the work we're doing. I think a slightly deeper evaluation beyond a skim-read of a Register article might be worthwhile before jumping to such strong conclusions.

    In our talk, we explicitly say that today's web is the most amazing and pervasive platform ever built. And frameworks like Angular, React and vue.js serve the DOM-based model very well. Probably this will remain the vast majority of the web for the foreseeable future. But there are classes of apps like Rive (https://rive.app), Figma, or Google Sheets for that matter, that are hard to build on the web without using a technology like Canvas. I don't think that's "pushing pixels in people's faces" - it's simply using the right web standards for the job.

    Canvas itself is a relatively low-level standard: it's good for drawing pixels. And so it might be useful to have a framework that enables animations and perhaps even some UI primitives here. Flutter's web work is an attempt at solving that problem, because we've already built a portable architecture for these capabilities. If you were building the next Figma or Rive, perhaps you'd see something useful in our open source toolkit. That's it. Nothing so nefarious as to be "deranged and anti-human".

    I also can't let the accessibility comment go: that's a top priority for us, and we're very interested in reproducible issues there. It's been one of our biggest areas of investment to date.

    Our early prototype demo (https://flutter-forward-demos.web.app) shows some examples of how we hope this will be integrated into a regular web page. (Disclaimer: this is built with our unstable branch, so may have some bugs.)

    Disclosure: I work on Google's Flutter team.

    • gerash 5 days ago

      If I were designing flutter I would do exactly the same: bypassing all the legacy baggage of HTML, DOM, etc. and going straight to the pixels. The deal breaker for me is jank however and I do see some in the flutter-forward-demos page when I press the "resize" button.

      That said, I can imagine fixing jank on platforms you don't fully control is going to be difficult.

    • satvikpendem 5 days ago

      I've seen the above poster before and noticed how they post very similar comments on Flutter threads in specific, and they use extremely hyperbolic language like "deranged and anti-human" as you mentioned, which I've called them out on. If I were you, I'd simply ignore their comments as it does not seem that they will change their mind or even stop using such extreme language.

      https://news.ycombinator.com/item?id=34519279#34526671

      • rektide 3 days ago

        Right so, because I care about the web & the dangers this tech represents, I should be ignored. Because I think it's evil & damaging to humanity, you think that means I shouldn't be able to post. From a post you linked yesterday, here's another Flutter defender's take:

        > Not to mention, this is nothing new. We used to have Flash, after all.

        Building a new Flash on the web is a dangerous track to go down, and is bad for society. You've "called me out" on not liking hearing that. You ad-hominem attack the crap out of me when I post. Your qualms are centered around tone-policing, & you have concocted yellow journalistic muckraking/ad-hominem attacks to blow me off, or make off-topic excuses.

        You're absolutely right that I have long been around & made many similar comments. Should I be ashamed over a real concern? Does that change the danger here? Sometimes my language varies. It's yet more very-low-caliber anger to suggest that finding an example or two of somewhat more than mild language- over a fundamentally correct & dangerous issue that absolutely should raise alarm- is enough to cut me off. Where I come from, real & genuine people look for the best interpretations of what the other person is saying. False & shallow people use short & stupid arbitrary hurdles to try to trip each other up. Rather than complain & stick it to me about my tone, you should try understanding & acknowledging the content. Rather than diffuse, you should responsibly acknowledge why feelings are so high here: this is a mortal threat to the worldwide web of information, a subversion of it into another shallow corporate-controlled top-down app delivery platform (like Flash, like native).

        Maybe Tim should ignore me. That's fine. But I find your arguments to be misleading. Tim should ignore me because his effort destroy core values & principles of the interlinkable worldwide of information, that represents some of the best things humanity has done. Because what is he is doing is wrong & bad for user-agency, bad for the shared web of information, reducing everything we interact with from high-level malleable structures of information, to crude Canvas bitmaps. Maybe Tim should ignore me, but not because I once used a less than polite word.

        This is my track record on this issue of CanvasKit & it's danger. It's not all perfect, but the spirit is correct & wave it proud. This is a core technosocial topic, a good moral & just cause, against a new emerging Flash-grade threat to the internet, wearing a sheep-skin cloak of respectability by declaring flat low-level Canvas to be equal stature to the contentful structured HTML "web" (and badmouthing the DOM as only useful for some narrow "documents" use?). I generally am trying pretty hard most of the time to be civil & decent, but yes, you can absolutely find some more radical words in there too, owing to the radical & existential degree of this vast threat. Here's 3 years here for folks to judge for themselves across:

        https://hn.algolia.com/?query=rektide%20canvaskit&sort=byDat...

    • rektide 5 days ago

      Those quotes from The Register are almost entirely yours (unless there's another Tim Sneath)! Little of it is The Reg itself. I'm going off what you said Tim.

      I'm sorry you find this to be a "screed," but Tim, this reply feels inline with the quotes of yours I've shared that have amplified my sense of alarm. It's inline with what I know & what I've seen of Flutter over the years. I want to be hearing how the new Flutter is better at using DOM as much as it can, and only using Canvas here and there for special cases. Anything short of that is a new Flash coming back from bad-place to haunt us again; a bunch of pixels on the screen the user cannot control or modify, that don't have the standard high level hypertext interface but instead have a special-purpose interface designed only for graphics. Instead of acknowledging the issues & challenges though, you seem to be doubling down on justifying why apps-as-bitmaps is sufficient. So, my screed seems correct?

      Canvas does exist, and it has good uses. Yes, absolutely. Something like Figma is a graphical tool, a creative tool for expressing design. Having that fine control is appropriate there, and giving up some of the standards-based interoperable hypermedia is ok: there is a real higher calling for this task.

      But generally... Canvas kind of sucks & is a regression. If this screen we were typing into here was just a bitmap, I'd be sad. My form editor control wouldn't work, my vim integration wouldn't work, my wordcount plugin might not work, my restylers like Dark Mode wouldn't work, and I'd know that no one could ever open view source & grasp at the common lingua franca of the medium. If users had the choice, given two parallel/equal experienced, many would want a view-source capable experience. We'd want a rich hypermedia. We'd want structured data & layout.

      With Sheets, maybe the good outweighs the bad, but it's pretty frustrating & sad that the core part of Google Sheets is a giant bitmap with no HTML, that it's so resistant to Web Extensions. Maybe it has to be that way, for reasons, but it's a fallback position, and one that has negative impacts. Rather than be able to script Google Sheets with the web, we need a specific "macro" capability built in to the webapp to do anything at all powerful. How many apps will build their own macro system? How many wont? Either way this is a huge loss versus having the web itself give this power to use the users; it is a direct threat to user-agency, and I don't see you taking that challenge in a mature & responsible fashion. The pixels being pushed at us come with less freedom, less context, less malleability, less understandability to them. Some people wouldn't care, but over time, if we didn't have hypermedia at all, if there couldn't be at least some people to peer the covers, society would be a duller less interesting world, and less people would discover their passion for computing & creative digital work.

      You may be taking accessibility as a high priority, but it's really hard to envision that the hundreds of different Web Extensions that do accessibility are going to work out of the box at the same level they do now. You can try to provide other tools & capabilities & affordances, try to provide invisible parallel DOMs or use web apis to provide similar ish structure, but some tools people know & love will not work or wont work as well without actual HTML on the page. The Canvas is structureless, is not as rich a medium as the HTML hypermedium, and I continue to not see recognition that CanvasKit presents some compromise, that it degrades many of the better parts of the web, from the Flutter team.

      Is the DOM Renderer still a focus at all for the app? Is it a main focus? That would make me feel much better. Can apps mix DOM and Canvas renderers easily, so we can retain the hypermedium in many places? Making it easier for Flutter app-devs to be "web native", to use the higher-level, not just the lower level bitmap of the web, but the real hypermedium of the web, would make me feel better.

      These would be substantial rebuttals that would defuse the risk a Bitmap-oriented webdev experience has. Rather than a screed, this seems like a pretty basic, well intended concern to me. About the basic core of the web. I'm worried the users are being locked out. I'm worried the rich medium is going to become depthless flat. I'm worried prescriptive technologies will become normalized, that the web, as a unique place where users had power will be taken over & taken away. If Flutter can & will play with the higher level web ecosystem, I can welcome it, and embrace the possibilities of Flutter. But the defensive nature of your arguments- heavily defending Canvas without showing any sign of embracing the higher level web: that silence/omission seems inline with the quotes I've drawn from, appear alongside the other evidence I've seen as indicators of where Flutter is heading.

      • timsneath 5 days ago

        Yes -- to be crystal clear, we're not targeting the DOM. We focus on use cases that can and should be expressed in a canvas. We prefer a WebGL canvas, but even what we refer to as our "HTML renderer" only emulates Flutter's canvas capabilities (e.g. layers).

        If you are a web developer building with the canvas in mind, we aspire that Flutter is a useful tool. We encourage the use of one of the many other great frameworks out there (or no framework at all) if the DOM is the target. And we aspire to provide great interoperability and accessibility.

        The web is bigger than documents. And that's why web standards are bigger than the Document Object Model. I'm sorry you see that as badmouthing the web, because it couldn't be further from the truth.

        • rektide 4 days ago

          > The web is bigger than documents. And that's why web standards are bigger than the Document Object Model. I'm sorry you see that as badmouthing the web, because it couldn't be further from the truth.

          Most apps are best represented by DOM. You're not talking about using some of the graphical canvas capabilities the web has to do some graphical things. You're talking about using bitmaps to do all of your apps. It is a new Flash.

          Right now you have the grace of having few eyes upon your work. As more and more apps start rolling out where people come to understand- this is not a webapp I can script, I have no control over it, no agency- it's a giant bitmap on my screen which acts as a low-level alternative to actually using the technology 99.99999% of the higher-level web works with- I think you'll find that this characterization of your work as 100% web, as totally fine, will be ill received by the public at large.

          My lone comments right now are easy mode. And you dismiss them as inaccurate. But this low-level use of bitmaps to make entire apps is a big reducer of our capabiliites online, and I am confident that my protests will just be the start, if Flutter web starts to really take off. This is a regression to what the web has been to users, and turns the web into something more like native apps, where we have never had control. This is a loss for humanity. It has some upside too, for some developers, but most devs don't actually need that extreme & divergent set of non-high-level low-level interfaces.

    • matchbok 5 days ago

      Accessibility won't be solved because this is a Google project and most likely won't exist in 3 years.

  • mike_hearn 5 days ago

    "one where only a very very few players have control over the technological environment, one where humanity has no say, no stake, no control"

    Well, it's worth bearing in mind that what you call a standards based hypermedium is now completely unimplementable by anyone except Google, Apple and companies funded by Google. Insisting that everyone writes web apps doesn't mean software exists in some sort of communitarian utopia, it just means that it's the Chrome team that gets to decide how everything works. Like extensions for example, hence Manifest V3.

    There's no really deep reason Flutter or other toolkits can't support more interesting and powerful hackability than what web extensions allow. Look at the JVM - it's not the web, but with tools like JVM agents, JMX, classloaders and so on you can extensively modify apps that run on it even without source code access. That's how the Minecraft mod scene developed and it's why you can so easily write plugins for IntelliJ. After all, web pages aren't actually designed to be modified by extensions. It's usually a giant hack. They come with megabytes of minified JS and attempts to modify them frequently break or require constant maintenance. That's why there are relatively few extensions that see actual usage outside of ad blockers, the cost to keep them going is just too high. And that in turn is partly because web apps usually don't have any kind of plugin architecture comparable to what desktop apps have often provided. At best they might have some sort of Google Docs like store, where the web app developer gets to pick and choose what integrations are allowed, but nothing as open as something like Photoshop plugins or Office OLE objects, where the end user got to install things the original developers had never even imagined.

    So I reckon you're being kind of harsh here. HTML is hardly a technological utopia. Why shouldn't people try to do better? There's no reason progress and extension APIs have to be in tension.

matchbok 6 days ago

Flutter just needs to close up shop - I'm surprised it's still going after the layoffs. The value of a cross-platform SDK just doesn't make sense anymore. If you are a small startup, going iOS only is feasible. If you are a huge company, you'll need native devs anyway, so why add a Google dependency? Makes no sense.

  • Aulig 6 days ago

    Going iOS only is not feasible at all outside of the US, where iOS has a much smaller market share than their 55% in the US.

  • thewizardofaus 6 days ago

    I am sole founder of a bootstrapped hardware startup.

    My main competitor is iOS only. As I'm the only developer Flutter allowed me to create both iOS and Android apps simultaneously (with some tweaking).

    My customer base is approximately 80% iOS / 20% Android.

    • BoorishBears 6 days ago

      You just made their case.

      I've worked on some of the top apps in both the Play Store and the App Store in the past, and it's a well known fact: Android doesn't pay.

      No it doesn't literally pay $0, but while you can support Android for a ton of reasons, none of them should ever be: "We expect Android to directly pull its fair weight in terms of revenue".

      It might enable you to engage customers in other channels for example, like with your hardware product, but Android itself, as in IAPs and ads, will rarely ever catch up with iOS.

      -

      20% of your base being on Android and in exchange you've locked yourself out of a massive amount of development resources, end up building a ton on 3rd party components that bridge the least common denominator problem, spent a non-zero amount of engineering effort on a non-native experience for your users, you'll lag on platform improvements users get excited about...

      It's just not a good deal unless you're in a case where an outside factor bridges the gap. Most Flutter projects won't have a hardware product for that.

      • rhaway84773 5 days ago

        You’re right.

        Why should we as developers target plebes who can’t afford to buy $1000 dollar devices and opt for platforms that start at a fraction of that, ie the majority of the world.

        F’ing commoners.

        • matchbok 11 hours ago

          iPhone SE is cheaper than many Android phones, and will last much, much longer. Most people only get 2 years out of an Android phone because of how poorly designed the OS is. So, no, it's not a luxury item.

        • captainredbeard 3 days ago

          It’s not classist to target consumers that spend money.

        • BoorishBears 5 days ago

          Apple makes what is easily the best value of any mobile device with the SE line, and I already called out that you can support Android for reasons other than raw profit.

          Maybe save the childlike angst for when you have an actual point.

  • spenster 6 days ago

    > The value of a cross-platform SDK just doesn't make sense anymore.

    It makes perfect sense to the market. Flutter in fact fills a niche that does pay off in many use cases. Is it the perfect fit for everything? No, but for many small dev shops "going iOS only" is not feasible at all, since they need market penetration across platforms; and going native for two platforms is not practical since they don't have the dev resources.

  • realusername 5 days ago

    Without Flutter that's the opposite, only the Android app would have existed and I would have gave up on iOS. Flutter is the only reason the iOS app exists at all.

    I'm in a market where 95%+ of users are on Android and the lower quality of the dev ecosystem on Apple platforms isn't exactly helping.

  • prennert 5 days ago

    We did use flutter to build something like a companion app for our B2B product targeted at enterprises. One dev supported Android and iOS and performance was good (no battery issues, etc for an app that was mostly always running). It was a blessing that we chose a cross platform approach as our users did not decide which the devices they use, corporate does. And it can change its mind.

    I do get the fear of the Google dependency, though. I did feel lucky that support did not end before we were done with it.

  • gman83 5 days ago

    There's a reason they held their conference in Kenya. Flutter is very popular in Africa & Asia. For American & maybe European startups iOS only is feasible, everywhere else not so much.

  • thefounder 6 days ago

    I assume you think the same about electron

  • BaculumMeumEst 6 days ago

    i recall speculation that they planned to deprecate or replace the android sdk with flutter

    • saurik 6 days ago

      That would require someone actually having the power to be able to make such a decision, but Google internally seems to just end up with squabbling camps that try to defend their turf.