Anecdote: I have an Ionic app that is used by 15,000 people daily. It looks like a native app. Nobody ever wrote me an email that the app is not native, not fast enough or anything else. Normal people want to get their shit done and move on.
Heck, one user apparently was a dev and came up with a suggestion (enable keyboard suggestions for text input fields) and he wrote me specifically which iOS UI element I should choose over some other element he thought I was using. I replied: thanks, but this is an Ionic app, it doesn’t use native iOS elements ;)
Native apps are totally overrated imho, unless you make heavy use of fine-grained input controls. Here, Ionic does have its limits. You can’t control the keyboard properly for example, unless you wire in some Cordova plugins.
Oh and JS doesn’t run in the background. This can cause issues if you do a lot of background processing.
But performance is not much of an issue anymore in 2018 and Ionic is the most polished web-based framework that is tough to distinguish from native apps.
A priority for us in 2019 is making keyboard and background processing easier!
I won’t post my app here, since this leads to opinionated discussions that serve no purpose. You will always find something that looks off (but you can find off-looking things also in pure native apps).
So to turn the question back to you: what bothers you and what makes it hard to have native-looking apps?
I took a look at this again today, using a demo I found online: http://ionic-team.github.io/ionic-conference-app/www/, which I converted to a web app by adding it to my homescreen. Please let me know if this isn't representative of the current state of Ionic development. Here's just a few of the things that seemed broken/were wrong:
* I can't scroll to the top by tapping the top of the screen.
* The appearance and behavior of the search bar is incorrect.
* The size of the segmented control in the navigation bar is incorrect.
* Scrolling the menu frequently breaks completely–as in, I can't scroll at all. This also happens in the "Filter sessions" page.
* Swiping on switches doesn't match the system behavior: I should not be able to move it until I lift my finger. The animation that changes the switches from "wide" to "circular" isn't correct either.
* I broke the scrollbar insets on the support page.
* I can scroll the navigation bar out of the viewport.
* The background color for pickers is wrong.
* The location from where a backwards swipe can begin is wrong.
* The touch target on bar buttons is too small.
* There is no vibrancy at all.
And from a stylistic point of view:
* Floating action buttons are for Android, not iOS.
* Hamburger menus that duplicate the function of the tab bar are frowned upon.
* Table view selection isn't correct–it deselects itself too quickly.
* Buttons should be render before the view loads, not after.
Maybe you should/could report these at https://github.com/ionic-team/ionic-conference-app/issues...
However: I'm sure you're right with all of the things you listed. If you go back to the original question, it was: "Do normal people notice?" And my point is still: Normal people won't notice. You listed small details, half of them I don't even notice (search bar, scroll to top, switches, size of segment control, background color of a picker). For some things, you surely have a point and if your users insist on the last 5% of polish for that stuff, go ahead, do everything natively.
But if you see the conference app, the list views, the switches, the segment buttons and say: Well, it might not be at 100%, but surely at 90-95%, and this is good enough for me and my users, then I'd urge anyone to check out Ionic. Because going native obviously comes with a huge cost and the benefits of a Cordova-based app might outweight these details. Obviously, this again boils down to the fruitless discussion of "does dev experience matter or should only the user experience matter". This, you can only answer yourself.
I'm a solo-dev running a business and I can clearly answer this question with: Dev experience matters to me and my users don't give a shit about these kind of details, at least not enough to NOT use my app. I can even say: I have enough users. If some don't use my app because of small UI details, so be it.
Normal people care about the tasks they can complete with your app and maybe missing features, but not small UI details.
And furthermore: even small details that aren’t perfectly polished aren’t necessarily a deal breaker. But of course, it depends whether or not your app is exchangeable and lots of competitors offer a similar experience or not (where polish maybe matters more).
I had great success by having my app generally different from the others. But I have to admit that it’s a niche app and not for the mass market.
Both.
> Because slow and laggy are no issues, especially on iOS with insane JS performance.
Not every iOS device can say this. And there are certain things that a webview just cannot do performantly, no matter how fast JavaScriptCore is.
> "Not looking right“ – I have never had a single email or review saying this.
People will not generally voice this to you, especially since they may not know what about the app looks wrong to them. But they might be put off from using it, or at least dislike it, without telling you.
> Normal people care about the tasks they can complete with your app and maybe missing features, but not small UI details.
I really believe that both things are important, especially since small UI details might sometimes be things that are important to them. Take accessibility support, for example, or inclusion of keyboard shortcuts.
> And furthermore: even small details that aren’t perfectly polished aren’t necessarily a deal breaker. But of course, it depends whether or not your app is exchangeable and lots of competitors offer a similar experience or not (where polish maybe matters more).
This is true, obviously, but in my experience, at least on iOS, polish is very important. Apollo, the Reddit app, is a good example: it's has found a niche where people use it over competitors because it's more polished (it's not enough for me, but I'm especially picky.)
> Apollo, the Reddit app, is a good example: it's has found a niche where people use it over competitors because it's more polished
I'd say this is actually a bad example. Because apparently, Apollo distinguishes itself from the official Reddit app, because it is more polished. So being polished is the sole differentiator. My point is: If your product is unique in some way that doesn't rely on polish, nobody gives a shit.
Sure, your app might be a bit better if it was native, but implementing everything natively comes with a huge cost. I, as a solo developer, can't support 3 platforms (Android, iOS, web). So Ionic or Cordova-based apps are golden.
> People will not generally voice this to you, especially since they may not know what about the app looks wrong to them. But they might be put off from using it, or at least dislike it, without telling you.
Yes, they might not tell me, they might just ditch the app. But there are thousands of reasons why people ditch apps and I'd argue that polish is the least important of them. The most important is whether people or not understand the workflow, whether or not it matches how they thing about the tasks they want to complete.
You make it sound as if native was always superior to web-based apps. Let me give you a counter example:
My app is not native, but it works completely offline and focuses on "expert" users in my niche. A competitor is truly native, but it doesn't work offline. It saves all data to the cloud and has noticeable lag when an item is saved. This app, despite being native, is "less polished" than my app, because of this noticeable lag.
What I'm saying is: If any small dev team or solo dev tries to weight the tradeoffs between native and hybrid/web-based (and I thought about these things for a long time, way too long actually, before I settled on Ionic): Just go with hybrid, because polishing an app is way more than native UI controls and native UI controls might actually be the least important one.