9 ms·
> Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell You can't be serious. Maybe on Android, but
by deergomoo 2y ago
> Most people don't realize how many apps written in Flutter they use daily, simply because it's impossible to tell
You can't be serious. Maybe on Android, but on other platforms—especially iOS—they stick out like a sore thumb.
A number of them just look like Material Design Android apps awkwardly transplanted over, but I know that's down to the developer so I won't hold that against Flutter. But scrolling through the Flutter showcase[0] and calling those apps up to look at screenshots on the App Store—none of them look like native iOS apps. They don't look bad (mostly), but they don't fit in.
Don't get me wrong, I don't expect anyone else to care or even notice. But for those of us that do care, you can absolutely tell.
[0] https://flutter.dev/showcase https://flutter.dev/showcase
- divan 2y agoSure, but not every cross-platform app developer wants their app to look "native to iOS". Especially if you want your app to look the same on all platforms and/or have some creative design.
- pasc1878 2y agoThe trouble with this is most users only use one platform and so don't care. They just see the app as badly implemented as it does not match other apps on the platform.
- justmarc 2y agoWhy would an app not looking like a native app automatically be seen as badly implemented?
- jwells89 2y agoNot all non-native-looking apps are badly implemented, but a huge number of apps that use cross-platform frameworks do so primarily as a means to cut costs because the goal is to make development as cheap as possible, and that shows in other aspects of these apps too. This creates an association between cheap/lazy apps and cross platform UI frameworks. It’s kind of like the difference between VS Code and MS Teams. Same company, same underlying technology (Electron), but Code is good while Teams is awful because MS invests so much more in Code. Even so, Teams-type apps are what tends to come to mind when people think of Electron apps because those are so much more common.
- pasc1878 2y agoIn my case there is another reason - if it looks cross platform it is probably taking up more resources than a native app.
- divan 2y agoWhat kind of users/apps are these? I'm genuinely curious about this, actually. I have a couple of apps with 100K+ installs, and I talk to people who are actual users from time to time. I have never ever heard the claim that they don't like UI because it doesn't feel native. Like ever. But I can imagine that in some niches/demographics/app types it might be different. Can you share some evidence or explain how you built the understanding that users dislike non-native UIs?
- Eisenstein 2y agoA lot of people try an app and stop using it. Talking to active users seems you are missing the people who don't like it enough to stop using it.
- divan 2y agoI think it may be true only for the apps that are easily replaceable.
- satvikpendem 2y agoI've built apps with pretty high retention rate so even if they're annoyed, it doesn't seem like they really stop using them. Mostly though, based on user feedback we collected, not once have I heard anything about UI complaints. It really feels like this is a common refrain on HN about what HNers think happens in theory versus what actually happens in reality wrt user preferences.
- Eisenstein 2y agoNote, this has nothing to do with your app or this specific discussed GUI, but this is something I have noticed over time... I think that what is commonly seen by devs as complaining and being overly concerned with details that don't matter is instead a some of the time advocacy for doing things the right way for the sake of it. It is totally possible to build things that meet the bare minimum requirements for user retention and for people to not complain, but that doesn't mean that it is optimal. You can build Soviet style housing blocks that people live in that are completely functional and that no one will have any problem with, but the quality of life is degraded as opposed to what could have been built. It can be tough seeing through the grumpy nerd 'I want it my way because my way is best' and finding what is actually 'this is a good thing that we should be doing, and if we did there would be a marked improvement for everyone', but I would not forsake one due to the other.
- myko 2y agoI used to think this, now I think nobody cares except people "in the know" Every time I've ever mentioned it to anyone they really didn't seem to understand or care
- satvikpendem 2y agoIt really feels like an "HN bubble" type argument, I've literally never heard it outside of HN.
- deergomoo 2y agoI can appreciate that as a developer, but as a user I don’t particularly care that some company wants to ship identical looking apps on every device under the sun. I would prefer the apps I use to work and behave in a consistent way, using the same platform idioms I am used to. The software available and how it works was a large part of the reason I chose the platform I did. Of course, I recognise that, a. most people just don’t care about platform idioms, and b. the choice is often a non-native app or no app at all.
- brewii 2y agoPretty sure most large succesful apps have their own UI and UI design teams. Cant remember the last time i saw anything cupertino in an app. Even Apples own 'Home' app only loosely use cupertino. Id say the most noticable effect is the bottom modal sheet slide up effect. on ios the original screen animates into the background a little bit. Apps that dont implement this can be spotted but thats not unique to flutter at all and flutter even offers a pretty good cupertino scaffold package that does this animation.
- deergomoo 2y agoYou’re completely right, but that doesn’t change the fact that I think it’s a bad idea. For a company that used to care so much about user experience, Apple has been throwing a lot of it out the window in recent years.
- jwells89 2y agoThe two things that stick out the most to me are navigation behavior and text fields. Cross platform frameworks seldom get either right, with react native being particularly bad on the navigation front. There are variances between Apple’s apps but they’re all using some combination of UIKit and SwiftUI regardless which limits how “wrong” they can be.
- dwaite 2y ago"cupertino" is the name of a Flutter widget set, not of the native platform controls or L&F. Few Flutter apps are going to use cupertino because the whole goal of using Flutter is to create cross platform codebases to save development effort. To use an alternative widget set per platform is a huge amount of additional work, and having a cupertino app running on Android is even more of a sore thumb than a material app on iOS.
- oneplane 2y agoIn those cases, those app developers aren't doing cross-platform development, but are just trying to dump their app in as many places as possible. In such a case, why not just make a PWA and call it a day? Don't need an app if you aren't going to go native, especially with most apps being either content readers or CRUD apps anyway. In most cases, I personally rarely want an app, and I'll use a website unless they happen to have created a great native experience. And since most apps don't, I don't use them, and I don't have a lot of apps as a result.
- ascorbic 2y agoBecause most users have no idea what a pwa is or how to install it. They expect to be able to go to the app store and install an app.
- oneplane 2y agoThat is exactly the reply I was hoping for. Because that brings us straight back to the native issue; users also expect the app to work in a way that is comfortable and known to them.
- mirzap 2y agoDevelopers who think that way have no clue what their users want. Most iOS users want a native experience, not something else. When I see an app that doesn't have that, I quickly lose interest. Having the app look the same on all platforms is a dumb idea to start with.
- kelnos 2y agoAs an on-again off-again (currently off-again) cross-platform app developer, I always want my app to look like it fits in with the rest of the apps on whatever platform it's deployed to. As a user, I hate it when some app developer thinks they're cute and wants to skin an app differently or draw their own ad-hoc widgets.
- divan 2y agoFlutter showcase is a disgrace, to be honest. Doesn't represent the actual landscape even remotely.
- 8338550bff96 2y agoThat is good to hear and hopefully gets fixed. It has been some years now, but I did use flutter for some toy projects and liked using it - I am used to using ReactJS I found there was a lot of transitive knowledge coming from that background. Ultimately what dissuaded me from pursuing it for any bigger projects is a lack of examples of great looking production apps with complex requirements. When I was looking, I was seeing a lot of CRUD apps - display a form, click an upload button, ect. This was probably 2018/2019 when I was taking a serious look at it. All of that is to say: Quality app showcases do matter for whether or not devs will trust a solution enough to pull the trigger.
- divan 2y agoI don't know how to fix the showcase problem. With web apps, it's easy – just scan HTML, deduce what framework is used, and add it to your showcase list. With Flutter mobile/desktop apps it's not possible. And there are zero incentives for developers to send their apps for screenshots. You just ship the release and move on to the next tasks. I also discovered Flutter in 2018, and it kind brought joy into UI programming for me. I rewrote all web apps I had with Flutter and published a bunch of mobile apps, but the coolest thing is that I routinely make apps for my own (or my team's) use. For me, Flutter lowered the costs of UI app development so much that I could just spend a weekend making some neat, small, practical tool for my own needs. I really love making these "private" apps – no need to care about all corner cases for all users, no need to polish design for all screen sizes/font sizes. Don't even need to be released (TestFlight at max, if doing it for a team). It's just fun, and I wish more developers could have the same experience.
- binoct 2y ago> I don't know how to fix the showcase problem. This is trivial for any team that provides a framework/platform and spends any amount of time engaged with their customers - you know who your prestige customers are and you show off examples of the products they have built with it. The state of the showcase is just reinforcing the points made by the OP.
- ForHackernews 2y agoI miss the days when applications had their own look and feel. If your idea of great design is identical rectangles to all the other apps, I guess Winforms solved that use case 20 years go.
- deergomoo 2y agoIt’s perfectly possible to still have a unique look and feel without completely forsaking all the platform affordances. You get a lot of stuff for free or very cheap building using the platform toolkits: stuff that people internalise and expect to work without even realising it. I think it’s a bad idea to throw that all away.
- ur-whale 2y ago> but they don't fit in. You seem to say this like it's a bad thing?
- deergomoo 2y agoI think it is, personally. Mostly because common UI appearance and paradigms makes software easier to use, especially for non-technical users. But in this specific instance I was referring to OP’s claim that it’s impossible to identify many Flutter apps, which I dispute.
- satvikpendem 2y agoI think people might be talking past each other on this issue. If you are on one platform only, then yes having apps behave the same is nice for muscle memory. However, if you're using multiple devices and platforms, then I want Slack to work the same regardless of device, I don't want iOS native navigation on the iPhone and Windows native navigation on the laptop.
- lawgimenez 2y agoOn Android you can also tell the way the list scrolls. Especially on devices, 2-3 years older.
- deciplex 2y agoIf you're referring to the increased scroll speed with two fingers issue, that was patched within the last year.
- lawgimenez 2y agoUnfortunately, not talking about that.
- Capricorn2481 2y agoDon't elaborate or anything.
- satvikpendem 2y agoI think they're referring to the extra frame of latency when scrolling on Android. But then again, I've literally never heard anyone complain about that, I honestly don't think anyone notices, I believe the GitHub issue had to use a slow motion camera to even capture the issue.
- p_l 2y agoJust like a lot of the "web application packaged as mobile app" frameworks did in the past, except with ugly iOS styling that also completely mismatched the expected navigational patterns. What's worse, there are new applications with custom look and feel that do the same navigational sins today
- dwaite 2y ago> but I know that's down to the developer so I won't hold that against Flutter. That is absolutely an issue with Flutter, which throws away the underlying platform UX and draws to a canvas. It gives you relatively few tools to target "native look" controls for each platform without maintaining multiple UIs in parallel composed of entirely different widgets.
- nottorp 2y ago> the underlying platform UX and draws to a canvas Frame buffer? Canvas is the javascript term.
- Nekit1234007 2y agoFlutter uses canvas when targeting the web. (At least it was the last time I looked at it years ago)
- nottorp 2y agoCanvas is the javascript name for writing directly to a frame buffer :) There is a world outside the browser. For now.
- metalliqaz 2y agoCanvas predates javascript. For example, TCL's TK toolkit uses Canvas[1] [1] https://tkdocs.com/tutorial/canvas.html https://tkdocs.com/tutorial/canvas.html
- tauntz 2y agoIt's not specific nor limited to javascript. The term "canvas" in this context is much older and seems to be used across many platforms. Random examples from the (desktop) Java/Android/iOS world where the same semantics is used: https://docs.oracle.com/javase/8/docs/api/java/awt/Canvas.html https://docs.oracle.com/javase/8/docs/api/java/awt/Canvas.ht... https://developer.android.com/reference/android/graphics/Canvas https://developer.android.com/reference/android/graphics/Can... https://developer.apple.com/documentation/SwiftUI/Canvas https://developer.apple.com/documentation/SwiftUI/Canvas
- 946789987649 2y agoSounds a bit like plastic surgery... you only notice the bad ones.
- zaphirplane 2y agoOver time I have become convinced that the, fit in argument is not something that actual users care for. The sometime subjective aesthetic reasoning doesn’t mean the application can’t succeed. office ribbon is an example
- graemep 2y agoI think you are correct, but I think your example is a bad one. Most people do not have a realistic (their employer will use it at work, it even occurs to them that they could use something else) alternative to MS Office so will use it whatever MS does.
- signal11 2y agoA lot of users do care for fit and finish, but stick around with crappy UI because it’s not worth rage-quitting over. They do move when better UI + same-ish functionality comes along. The one sort-of exception to this is Enterprise Sales, where the people buying the software don’t always use it. But even there, corporate purchasers do get flak in annual reviews / feedback cycles for especially crappy enterprise software — so even there, especially crappy UI will catch up with you.
- zaphirplane 2y agoBut the question is will they move from a Java UI to a native windows UI, all else being equal. What if the Java UI is better ? What if the Java application is better
- m3talsmith 2y agoThe developer could use the cupertino framework for iOS releases, but usually choose not to.
- jamil7 2y agoI noticed the SNCF Connect app for France's rail was using it in their showcase which explains why the scroll views are so weird and busted feeling. They still stutter on a new iPhone. As a native iOS developer I'm somewhat biased and a lot of people likely don't care but it still feels off to me even for apps that use a complete custom design. I hope they can optmise away those kind of issues more as it's IMO always better to have alternatives. Side note: Is anyone using Flutter just for Android? I'm kind of tempted to try this as dealing with the Android build system and packaging is bit of a pain, despite Kotlin and Compose being quite nice.
- insin 2y agoYou still have to deal with the Android build system, `flutter new` just generates initial config for it and all the other necessary metadata (and that config can change between versions - I ended up manually diffing the generated stuff against a new app every time I upgraded). At some point I made the mistake of not touching the code for too long and upgrading Android Studio when suggested, and I was never able to (find the time needed to) get that app working again.
- jamil7 2y agoAh gotcha, I thought it was papered over a bit more with Flutter's tooling. Good to know.
- deleted 2y ago[deleted]
- jklinger410 2y ago> You can't be serious. Please keep your comments civil
- eternityforest 2y agoOn non-mac platforms material is already everywhere so they mostly don't look too out of place.