Hacker News new | ask | show | jobs
by flyosity 5392 days ago
I've done usability studies with users who use native apps and PhoneGap-based apps and users are clearly perplexed by PhoneGap apps because of numerous usability problems like 1) they're choppy, 2) they look/feel slightly different, 3) they don't behave like user's think they should. Users can tell the difference between a fully-native app and an HTML interface wrapped in an Objective-C downloadable.

It's like the uncanny valley where humanoid things get so close to being fully realistic that the small difference in their behavior or look & feel causes people to be totally turned off. If it looks like a native app but doesn't quite behave like one, it's noticeable and (at least the people I've talked with) do not like it.

1 comments

hmmm...there's part of me that's just offended by the idea of having to write an application twice.

Maybe the HTML5 experience isn't good enough, but it truly sucks to have to write the app once for each platform.

I'd love to see the specific examples you're talking about; details like whether the apps were made by people with equivalent skills, and whether you're REALLY talking about the same app being judged better or worse.

Because it's so easy to write HTML5 and JavaScript, well, lots of idiots do it. If the study compares an app written by a median HTML5/JavaScript app developer with an app written by a median ObjectiveC developer, then it's not the environment you're actually comparing.

It's the norm to have to write applications for the platform you want to run them on. Nintendo 3DS, Playstation 3, Wii, Steam, Android, iOS, Windows... these are all different platforms. Write-once-run-anywhere is a myth and it seems that web developers deploying to one platform (the browser) still can't grok the idea of multi-platform development that desktop, mobile and game developers have understood for years.

You can't get the best experience for each platform if the tools and frameworks you use are dumbed down to accommodate the lowest common shared experience across everything.

I actually do my development in cross-platform native code. My currently library can target iOS, Android, and Windows, and I'd be able to add most other major platforms pretty trivially.

I agree that some UI changes are necessary between platforms as different as the PC, the Wii, and a touch-screen-based phone. But I very much disagree that you can't take advantage of solid cross-platform tools. I've written such tools, in fact.

Some native code to interface to native UI is necessary, but none of the native UI is really rocket science, and something offered natively on one phone can typically be done manually on another. Then it becomes an abstraction in the cross-platform library, and your code doesn't need to know how it's implemented.

But then again I'm a game developer, so I guess you've admitted that I could potentially already understand cross-platform development. ;)

Have you used Sencha Touch or the other mobile app frameworks? They're good but not great. There's still a real difference in the user experience between them and building a real, native app. It's fairly obvious due to clunky scrolling and choppier animations throughout the app.
No, thought I've read about Sencha Touch and several others.

I am planning on having a Web-app component to my next product, actually, and have been reading about them all; Dojo and jQuery Mobile are the two finalists I'm considering.

But the primary app is a game, and the production values for games make doing them entirely as web apps not an option.

Clunky scrolling would be a problem, sure, as well as choppy animations. I'll have to see what can be done when I actually dive in to writing the HTML5/CSS components.

The thing is, it's certainly POSSIBLE for web apps to animate better than they do. It may not be time for web apps to take over on phones, but it's only a matter of time. Processors in phones are getting more powerful, and the WebKit-based browsers are being optimized; scrolling animations really shouldn't be significantly slower done in JavaScript than they are in, e.g., Java on Android.