| You’re welcome to think that, but it's not a dumb take — it is an aesthetic and technical take (you know, de gustibus non est disputandum). My attention is valuable (at least to me and those around me), and I choose not to waste that attention on applications that are built with a framework that quite deliberately disrespects the platforms I choose while presenting a badly drawn version of the thinnest layer. On macOS and iOS, Flutter pretends to conform to platform standards, but it does so very badly (I can always tell if I'm using a Flutter app; it's just off…and my battery life suffers because Flutter is such a bad citizen). Honestly, I probably wouldn't hate Flutter on iOS if it didn't pretend to conform to iOS standards while missing the mark (just like every Google app misses the mark on what an iOS app should look like; it's just wrong). On the web, Flutter is even worse by pretending that there's only one HTML tag, <canvas>, and throwing away _all_ of the rest of HTML to do everything else that HTML does, but worse and less accessibly. That, ultimately, is unforgivable and a waste of everyone's time. Regardless of how useful gioazzi's project may be, the technical choices made put it well outside of the boundaries where I am comfortable recommending its use to anyone — and that's fine. I posted a similar take about someone who did a Show HN about a project they made which required a Google login; I was interested in seeing what they had done until I saw that requirement. That technical choice, while a valid one, put it well outside of my "I will try this thing at all" zone. I shared this stance because I know I’m not alone, and people need to know if their architectural choices put them outside of the market they are targeting. I might or might not be in their market, but it's still a useful thing to know that there's this one asshole in Toronto who won't use it because they took the "easy" way out for pseudo-cross-platform support. (I do not have the same reaction to React Native, but that's because it ultimately doesn't try to emulate the platform.) |
I feel less strongly about apps not looking like system apps; in fact, I kind of dislike apps that try too hard to look like the settings page: I like when they bring some variety, some personality, something that makes them stand out. Though I agree that broken interactions are unbearable, e.g. apps that break the "swipe back" gesture.
It could have been a web app as well (in fact, the initial version was), but some offline functionality was needed, and service workers messing up caching and iOS not being a great player with PWA, it just ended up being more painful than it should have been.
Or we could have built 3 apps, which I would have loved (but we are a team of 3, and working on a bunch of other things at the same time). Flutter does have a fairly good developer experience (its hot reload cycle is unmatched in my opinion), but of course native development, with all the support libraries you get from the platform, is on a different level. (What even is native though? Is UIKit "more native" than SwiftUI? Is Safari native? And how about the web apps you open in Safari? It's JS code, but at some point it's compiled to ARM instructions, now running from the very same memory pages as Safari, does that make the web app native?)
Having said that, it's not like I need to convince you to try out our app, it's good that we have options and probably Apple Invites is what works best for you!
But out of curiosity, when is the last time you did try out a Flutter app? Because they have been improving a lot, in fact for quite some time they ran better on iOS than on Android thanks to the new Impeller rendering engine (now default on Android as well)[1]
They did some work for accessibility on Web, too.[2]
BTW it's funny you mention React Native, I last built something with it a long time ago... and it wasn't that good - but I just realised I do use some React Native apps right now, so I guess they also improved a lot; I should give it a shot again!
[1]: https://docs.flutter.dev/perf/impeller [2]: https://docs.flutter.dev/ui/accessibility-and-internationali...