Hacker News new | ask | show | jobs
by brundolf 1507 days ago
The main thing that makes a non-native app stand out today isn’t performance, it’s all the little UI inconsistencies. And not just the shapes and colors; the font sizes, the types of transitions that happen between screens, the “pressed” and “loading” states on buttons (or lack thereof), etc. The modern web gives you everything you need to do all these things, but you don’t get them for free. And many devs don’t think to implement these details, and even if they do give them attention and make the experience good, it may still be inconsistent with the host platform. That’s what’s hard.

For this app it makes total sense, because it already seems to have a pretty custom look and feel; there’s nothing that needs imitating. Many others out there are probably in a similar boat, but certainly not all of them.

3 comments

The number of "native" apps where I discover I can select and copy UI elements because it's all actually HTML...
Isn't that a good thing? Text should be selectable and copyable by default, since that does not induce any harm whether the user do it or not, but the reverse is not true.

The number of times a Windows UI shows me an non-copyable error code is vastly greater than the number of times I wish I cannot select any text (which is zero).

I don't know about the Windows 10/11 UWP stuff, but in any good version of Windows you can hit control+c on any standard dialog to copy the error text and the text of all buttons to your clipboard.

It's a little annoying that you can't easily make subselections in dialogs, but that's been a core Windows UI design element going back to Windows 1.0.

It's a grossly underadvertised feature of Windows and I bet the people reimplementing the Windows UI for the third time in ten years don't know about it either.

The copied content is often mixed nonsense like a comment combined with a button text.

How often do you want to copy button text like “Ok”, “Cancel”, etc? Never…

It's pretty handy when reporting an error or bug. Often the text is more involved than ok/cancel.
On iPhones at least with latest OS, using built in OCR is supposed to be especially easy now. Maybe that has been exaggerated now, but if it is a one step thing, that could be better than being able to copy as copying stuff sometimes includes things you don’t want and can’t exclude.
Yeah. You can prevent that too with a CSS property, but again, it’s not the default; you have to have enough time and attention to detail to go out of your way and handle it
My favorite feature in recent iOS is that you can defeat that CSS property by taking a screenshot and letting the phone OCR the image, then copy paste from the result.

Disabling copy is abused by all sorts of apps. (Yelp street addresses are a prime offender.).

I’m not convinced allowing it to be disabled is a net positive.

It’s fairly essential for things like buttons and tabs that get tapped all the time and have mostly non-content text. But it does need to be used sparingly
This used to be the norm on older versions of Mac OS, and that was good. It would help enormously when writing blog posts (e.g. copy the descriptive text somewhere rather than transcribing it) or searching the web for the content of a en error message that popped up.
Do you think muggles actually care about this? I tend to doubt it but I am asking with an open mind.
Absolutely do non-tech-savvy people care about this. It’s like a film — they may not be able to explain it, but they know a good film from a bad one.

I’m the “tech guru” for many of those who know me, and I’ve seen people of all ages struggle with mobile UIs. There’s two axes with two values, making four categories that I find problems fall into:

- Simple concept + familiar UI: User is at fault (usually a misconception). I rarely see problems in this category.

- Complex concept + familiar UI: User struggles to understand what they’re trying to achieve. A little bit of extra info helps them make sense of the situation. Very easy to help the user over the phone in this situation. Often, thanks to good UI, the user figures it out themselves.

- Simple concept + strange UI: The user knows what they want to do but can’t understand what the UI is conveying, can’t find the UI controls, can’t express what they want via the UI controls, or sometimes don’t even realise something is interact-able. Even if the user understands the concept, they often struggle to succeed after stumbling their way through the app for any length of time, and need assistance. Apple iOS’s “swipe from different corners to get notifications & control panel & home & etc” and “three fingers/hold to do textual things” are good examples of this.

- Complex concept + strange UI: Situations in this category can get so difficult & time-consuming that it’s often easy to just do what the user is asking for on their behalf, or give them a step by step process they can repeat.

The things that make a UI familiar or otherwise are subtle, like what makes a film good or bad.

UI/UX designers come up with all these “clever” ways to do things, like the breadcrumbs interface on the Notion app, but many users simply don’t figure out how to use them. And they don’t think to use an element/gesture when they seek to achieve the very things which that element/gesture achieves.

I am a near-luddite on my mobile phone, but über-geek on a desktop. This weekend, I was trying to open a text file attached to a Gmail message, then search and copy some text.

Step 1: Use Gmail Android App to search my inbox for old emails with attachments with some text to me. Cool, found the email.

Step 2: Open the text file attachment. Gmail Android App does not open text files natively (weird, right?), so it defers.

I tried a few different choices. None of them allowed me to both search, then copy some text. (Note: I have a /very/ vanilla Android mobile setup.)

I spent fifteen minutes, then gave up and opened the original email on a desktop Linux web browser. I found the text, then copied, and sent back to my mobile phone by email. Then, I opened the email in Gmail app, copy/paste.

Sheesh. I thought: Am I an idiot? I felt like a struggling grandparent using a phone with the "big dialing pad" after that experience. (No offence to the big dialing pad -- always a big fan of the UX!)

> I spent fifteen minutes, then gave up and opened the original email on a desktop Linux web browser.

I guess you might be interested in GNU/Linux smartphones, Librem 5 and Pinephone.

Having a cross platform app (Flutter) with tens of thousands of users for a few years now I can tell you that not a single person has cared to far.

I get 20-50 mails daily through a very easy to use feedback and support function, but in none of those thousands of mails has anyone ever cared about how transitions are made or that a button doesn't look like a native iOS button.

They care about the value the app provides. About new functions or (in my case) report bad data to fix. That's why they download an app. Not because they want the button to look natural.

That's to say. I frequently get feedback about how they love the UX/UI of my app.

If there isn't a valid reason to create a native app these days I consider it a waste of time.

Can second this. Nobody ever said anything about these subtle details and I think there's a very good reason why that is:

Most native apps also have inconsistencies, lags, delays, especially if they connect to some remote web service. Heck, the iOS settings occasionally hang on my phone when I open the iCloud settings or if some Bluetooth device isn't correctly pairing or whatever.

I've seen beautiful native apps that require an internet connection all the time, because they save every little piece of data on a remote server and sometimes, the whole thing is super unresponsive.

For the muggles, this lag is a lot more noticeable than a transition or a button press that is not 100% optimal.

My Ionic app uses PouchDB and CouchDB, is offline-first/local-first and is responsive at all times, because it simply doesn't care if it is online or not. This is what users feel the most and it can feel a lot better than many internet-connected native apps.

You wrote: <<I've seen beautiful native apps that require an internet connection all the time, because they save every little piece of data on a remote server and sometimes, the whole thing is super unresponsive.>>

I have see this multiple times for enterprise software. It works when the data center is on the same continent, e,g., New York to Chicago or London to Frankfurt, or Santiago to Sao Paulo. Now add 20km+ roundtrip on fibre -- Tokyo to London. It is a horrible user experience. I have seen teams trip over that wire (pun intended) more than once in my career!

When one is drowning in a torrent of superfluous UI changes and the UX mediocrity of Windows, Android or Linux, poor software seems inevitable.

Those that do notice, likely assume that the dev can’t do better or doesn’t care.

What would you do if somebody did complain about your UI or UX, rewrite the framework’s UI controls and animations? Switch frameworks? You’d probably thank them for the feedback and say you’ll add it to your task list, where it will linger for weeks or months until it’s closed “won’t fix” because only few people asked about it.

I notice non-native apps. Even if it is very subtle: Apple has some menus around the iCloud settings interface that are actually a webview.

But what am I supposed to do, mail the dev telling them to make a native app instead? If they haven't made one, I understand that they can't afford it.

The iCloud settings are slow, because the backend is slow, not because it is a WebView.
On your phone, open Settings, then tap on your name (apple id), then tap on "payment and shipping", "subscriptions", or "media and purchases" -> "view account". All of those are webviews.
What's your point? You're just repeating what they said. WebViews which reach out to slow backends will render slowly. That's about it.
My impression is that lots of users have been so affected by frequent encounters of bad UI that they just internalized it as they're "bad at computers/technology" and become afraid of doing anything. Maybe they'll go read a book (on paper) or something.

Whatever they do, complaining about the bad UI to the people who might have done something about it isn't it.

I think users almost always tend to blame themselves for bad UI because it makes them feel stupid. Therefore I think they tend not to complain.
When users raise an issue like this, I try to show empathy right away. I know they are already on edge thinking: "Am I the stupid one?" Of course, there are users with nothing but packing peanuts in their brains, but the good users with real brains... be good to them when they raise an issue!
Same. My default position is that the UI is wrong, not the customer. Obviously not always true, but for me, a good working assumption.
I agree. The knee jerk reaction of many otherwise highly educated corporate users when there is a UI issue: "Oh, I must be doing something wrong." So often, something is wrong on the server that is causing horrible lag or weird errors.

It is more amazing when you meet a very resilient user (think: senior sales staff -- they'll do /anything/ for a sales commission!). They just assume this is normal operating procedure. Only when things are horrible, do they ask for help. Then, you stand behind their desk and watch in horror at all the bugs they workaround (many times per hour!) in your app, but never report... Hat tip to these amazing users!

I also always wonder this, as it constantly seems like the only people I know who care are people who have gone out of their way to study UI; everyone else seems to find bespoke UIs "fun". It certainly doesn't seem to have hurt game developers much that every game has an unrelated UI..
Also desktop cross platform native GUIs. Programmers always complain about this, but most users are on windows and for them the GUI is just going to be ugly. No user is going to care that it is native.
> Do you think muggles actually care about this?

Yes, you nugget. That's why UX is a thing. Just because you know how to traverse your thinking patterns doesn't mean anyone else (wizzards included) can.

Surefire way to write garbage applications and APIs: don't think about the user.

I beat this mentality out of any junior that crosses my path. You're not paid to write code, you're paid to deliver a product. You studied how to write code. Massive difference

I think small bits of irregularity in a UX breed uncertainty, which breeds anxiety, probably even moreso for non-technical people who can’t quantify what they’re seeing. It may not be something conscious that they can articulate, but I’m confident that it matters.
As example there are cases when custom input fields on login screen are not triggering key chain access. Something anyone can notice.
Yes, I absolutely think they do, whether they realise it or not. Overall I believe that computers have never been harder to use and this "nobody cares" attitude is exactly why.

To use my father as an example, he sat at work with computers on his desk for 20 years, running everything from Windows 3.11 to Windows XP. He never had a problem using or understanding the computers in front of him because generally any pattern that he learned in one place would apply pretty much everywhere else on the system. Buttons had a uniform look. Radio controls worked the same way. Menus were in predictable places and had similar structures. Toolbar icons, if present, had a uniform appearance. Folders and files were presented uniformly. Tooltips appeared over many things if you hovered your mouse pointer over them. Embossing, solid, thick and dotted lines all had meaning designed to guide the user in certain directions. Disabled controls looked visibly non-interactive. Even "Open", "Print" and "Save" dialogs were globally consistent.

In that regard, older versions of Windows were beautiful in their simplicity — they were uniform and predictable. The same is true of classic Mac OS also. The reason for this is because both Microsoft and Apple spent a lot of time and energy working with real world users to figure out what made sense and what needed work. The result was that they both ended up with clear user interfaces that had learnable visual cues.

Then this aesthetic design trend started and now user interfaces have never been more unclear. Overwhelmingly UI elements are now flat or inconsistent in their appearance. It isn't clear at a glance which objects are interactive and which aren't, or what the side effects will be when you click on given thing. To make this worse, Electron happened, effectively leaving developers (who usually have completely insufficient understanding of user experience or design) to roll their own user interface toolkits and to build applications that end up looking nothing like anything else on the system. So now you don't just have to contend with the fact that the operating system controls aren't as friendly as they used to be, but now every application is out there trying to play by its own rules too, with their own designs and their own learning curves.

Now we're in a situation where very little of what you learn in one application makes sense or applies in another, which is the epitome of user hostility. I spend a lot of time trying to remotely diagnose wildly inconsistent applications over the phone and try to help him make sense of the mess that is modern day desktop computing. He rightly finds it confusing and overwhelming. Even in my own experience, modern macOS isn't much better.

At this point, Microsoft's "Official Guidelines for User Interface Developers and Designers" (2001) and Apple's "Human Interface Guidelines" (1995) should be mandatory reading for everyone who thinks they know better.

There's real psychology and methodology to building a good user experience. Every single detail matters.

This! This is my exact experience (well, with Mac:s and Amiga:s). My father introduced courses in Desktop Publishing and Digital video editing in the late eighties and into the nineties in his county school. He understood computers to such a degree that he could successfully teach others to use them.

He is older now, still fully cognizant and lucid and gladly aging has not taken its toll yet, but he has mostly given up on computers for the very reason you write about so well -- interfaces became more and more fractured.

Things are not where they ought to be, they look different across different applications on the same operating system, they behave in different manners, and all these idiosyncrasies add up quickly, so he resigned and became mostly a consumer of content rather than a user or creator of such. He still has an old PowerBook (next to his modern M1 one) with an old copy of Adobe Illustrator as a poor man's CAD to draw and print things like cable installations and load-bearing sections of walls. It saddens me because he has such a great talent.

While we came to where we are today as mostly a slow decline, I would say it was a two-punch combo that finally broke user interfaces for good: First the complete annihilation of skeuomorphism in favour of design without any cues whatsoever, it might have looked ugly and certain abstract concepts might not have mapped well to the semantics of the physical world, it still offered a clear distinction of what was "interact-able" and what was not. And second, the introduction of Electron-type applications finally ended it.

I'm not sure there is a way out of this hole, so I am mostly resigned to not complaining to developers of apps like the original author either. Because what good does it do?

And Google’s Material Design happened as well. Just a horrible pattern. “Assume all of your users are experts in the app you’re building.” I have no idea what half of Google’s icons mean.

With Apple’s Human Interface Guidelines, it’s as if they consulted with actual humans. Material Design? It’s as if they hate the humans that have to use their apps.

> “Assume all of your users are experts in the app you’re building.”

In Google's defense, I think the original rule is something along the lines of "assume all your users or experts in their field". Which is quite true, users pretty much all the time know what the outcome of what they want to do is, they are also knowledgeable in their line of work or hobby for which you are creating an app. So use their domain knowledge to help them along.

I’d like to triple-upvote this.
Hey, author here. Yeah you make a really good point, if I had to start an app today where the visual design was pretty close to the default iOS and Android styles that would definitely be a factor.

Funnily enough though (and this might just be my lack of skill in iOS development) I always find the UIKit components surprisingly tough to customize.

I would bet the last thing is intentional. iOS has a reasonably high level of consistency over all apps. Mostly because it’s hard to customize UI elements. And that’s what at least I like about it most
Yeah. And then there are also varying levels of in-between options: React Native lets you write and share JS code but delegates to native UI components on each separate platform, while I believe Ionic actually offers a set of UI components that are web-based, but are designed to adopt the look and feel of each platform as needed. Each of course comes with its own set of trade-offs

This was still a great case-study though! It’s good to have concrete evidence that the performance side of things isn’t an issue

> I always find the UIKit components surprisingly tough to customize.

Good - apps should look and feel like the platform.

Not if you're trying to make a playful app design like the author is doing. This design is halfway between a normal application and a game.

I would do silly things like clickable image views to get the style right if buttons don't provide the necessary customisability, were I in the author's position. I don't think anyone would be happy with that.

I'm all for platform consistency, which there is very little of these days, but for every API you restrict someone will find a good reason to work around it and that's where the ugly hacks come in.

Really disagree with this. Apps are rarely unique to a platform, and most users aren't on a single platform. I want Google Maps to look the same on the web regardless if I'm on macOS, Linux or Windows, and on my Android phone.
On the web that is fine. As a native app, it should fit in with the platform. On iPhone Google use the Android design language, and it produces apps which simply do not meet expectations.