Why do people hate on PhoneGap so much? Specifically, I mean when people complain that the UI of the apps produced with PhoneGap don't "feel" right. PhoneGap sacrifices the quality of the UI for benefits in other areas (a boost to development speed, and making it easier for a novice developer to get started).
The argument against PhoneGap seems to be either that there isn't a place at all for such a technique, or that people think the benefits don't outweigh the drawbacks. Another option is that people dislike the developer accessibility aspect out of pure snobbery.
However, I rarely hear people making these arguments. I just hear (not necessarily in this thread, but in previous ones) "blah blah it sucks blah blah why not write native code blah blah".
The UX is the absolute most important thing. Anything that sacrifices the user experience just to make it easier to develop is a bad tool. It's a tool for the lazy.
I've seen a pretty complex app which had been implemented a both a native iOS app, and as a PhoneGap app. The PhoneGap version launched faster and was smoother.
I suppose the lesson of the story is that the developers matter more than a the framework used.
in my experience more often than not the only people who can tell a well-done app is phonegap/cordova rather than native are nit-picky, self-righteous developers. if it works as advertised, users are generally happy and cannot tell the difference... and, unless your app is built specifically for developers, that's all that really matters.
I've noticed this, too. The arguments are more recently drawing around how the UX harms users...but wouldn't this be true of any HTML5 app? Does PhoneGap have some voodoo magic abilities to ruin the UX beyond what any HTML5 app is capable of? Otherwise, are you saying HTML5 apps are bad? PhoneGap is a wrapper that provides native-API to HTML5 apps. It doesn't automatically add horrible UI or whatever people think it does.
Crap PhoneGap apps and crap native apps are no different from each other.
Yeah, I deal with this on (almost) a daily basis. My response is, "I'm not LOOKING to emulate the iPhone interface. I design my own buttons and widgets" There is nothing that does a great job of emulating the iPhone interface. And even if you DO get close, it looks foreign on an Android device. As far as performance, all these kids that follow a few Obj-C tutorials and build a couple of forms in Xcode make me crack up. You're NOT gaining performance, you're probably leaking memory like crazy because you don't understand C very well. I agree with the sentiment of the snobbery. Hey, if you write Java and Obj-C at the speed that I can code a web app, great. But don't complain when mine looks nicer than yours... and the performance isn't THAT much different.
So much wasted effort to achieve something which a) doesn't really work well b) comes for free if you just go native.
And your Android users will of course be super happy to find a bad iOS interface which is just slow.
And once you are done imitating the iOS interface, the real work only begins ;)
My team is working with a company whose site is just shy of the top 100 in the US by traffic. Big company, been around for almost 100 years. What surprised us was that 50% of their traffic comes from mobile browsers. They even already have mobile apps for both iOS and Android, and still that much traffic goes to their mobile site. Also of interest: iPad users get the normal site. So 50% of their traffic is from phones.
What do you serve to those people? Bug them to get the app anyway? On large sites involving several different divisions of a company, the native app probably only has 10% of the functionality. And serving the full "desktop" web experience might not be possible or desirable.
While I think it can be a huge mistake to try to completely mimic a native app on the web, you can make the experience much better by at least adopting some mobile UI patterns. And in those cases, the tips on this list will save you. (Our work with this company involved adding stuff to both their "desktop" and mobile sites. We didn't use PhoneGap, but did use several of the tricks on this list.)
As an aside, almost all of these tips have nothing to do with PhoneGap. They all apply just as well to any mobile site that's going to be using transitions to look like an app.
It won't ever really 'feel' like a native app but it might look like one if you try real hard. My own experience and Facebook's too is that you just won't get the performance and you'll also be dealing with quirky CSS/HTML rendering.
Edit: That's not to say that you can't make an app work, but you shouldn't try to make a typical app using mobile framework that tries to mimic a native app such as jquerymobile or others. If using a non-standard UI it can probably work where the user isn't expecting it to work and feel like a UITableView and every other basic thing in iOS.
I agree -- it is exceptionally difficult to create the look and feel just right in HTML5, CSS3, and JS. I swear that there's an "uncanny valley" for look and feel. To me it is better to bring over some of the "ios"-isms without duplicating the UI (and failing to get 100% right).
If the original title begins with a number or number + gratuitous adjective, we'd appreciate it if you'd crop it. E.g. translate "10 Ways To Do X" to "How To Do X," and "14 Amazing Ys" to "Ys." Exception: when the number is meaningful, e.g. "The 5 Platonic Solids."
It is called Apache Cordova now, and it is a set of implementations (one for each platform) providing JS hooks into native APIs, so they can be called from JS in a web view, so your web app runs in a native app container.
Phone gap is now a set of technical/busisness services for managing Cordova projects, such as Build deployable packages for all platforms via a web service
PhoneGap is getting better with every release, and it isn't too hard to make a nice, functional app. The promise of cross-platform holds only for so long - until either a plugin doesn't exist for the platform or a platform-specific glitch gets in the way, but overall it is a fun and rewarding thing to work with.
Clients want apps in stores. It's much easier to promote than mobile web apps. And even though for a nicely looking, nicely working cross platform phonegap app you will be paying a lot of money (the tweaking takes a lot of time between different phones/pads), it is still cheaper and faster than going native.
We advise native for productivity apps and such; day to day use apps should be fast and snappy, while promotional apps / marketing apps should look pretty.
It sounds like you make apps for people. Assuming you have someone on staff who knows iOS and someone who knows Android is it still faster to do it in PhoneGap? We attempted a phonegap app which ended up failing because of performance reasons. We rewrote the app in native iOS and it didn't take nearly as long as the original phonegap did with the constant tweaking in an attempt to get it to look and perform acceptably.
My current client is using PhoneGap to enable publishing to numerous device types without the need to hire developers for each platform. Particularly important due to their customers' global spread; supporting multiple platforms is a decided competitive advantage and finding devs is tough these days.
One thing I didn't notice, but is important in stoping overscroll is to se the UIWebViewBounce property in Cordova.plist to NO. This ensures you don't have to worry about things like ScrollFix which almost-but-not-quite-solves the same issue. Why Cordova defaults this to YES is beyond me.
Nothing kills the illusion of an iPhone app feeling native faster than getting rid of overflow bouncing in a scrollable view. I understand there are performance benefits, but it feels so wrong on iOS.
Unfortunately, the app is still in review with Apple, so not at the moment. I also didn't realize this post would do so well with HN. I will work on a more in-depth follow-up with some working examples. Thanks so much for reading!
They make a /huge/ difference, especially if you stay within the tile size.
In fact, using translate3d and CSS animation is pretty much the only way to get smooth animation - if you do it with pure JS (setting left/top styles), things get very herky-jerky.
The argument against PhoneGap seems to be either that there isn't a place at all for such a technique, or that people think the benefits don't outweigh the drawbacks. Another option is that people dislike the developer accessibility aspect out of pure snobbery.
However, I rarely hear people making these arguments. I just hear (not necessarily in this thread, but in previous ones) "blah blah it sucks blah blah why not write native code blah blah".
You said it yourself. PhoneGap is an easy way to get a sub-par user experience and that is what matters the most, not development speed.
I suppose the lesson of the story is that the developers matter more than a the framework used.
Crap PhoneGap apps and crap native apps are no different from each other.
My team is working with a company whose site is just shy of the top 100 in the US by traffic. Big company, been around for almost 100 years. What surprised us was that 50% of their traffic comes from mobile browsers. They even already have mobile apps for both iOS and Android, and still that much traffic goes to their mobile site. Also of interest: iPad users get the normal site. So 50% of their traffic is from phones.
What do you serve to those people? Bug them to get the app anyway? On large sites involving several different divisions of a company, the native app probably only has 10% of the functionality. And serving the full "desktop" web experience might not be possible or desirable.
While I think it can be a huge mistake to try to completely mimic a native app on the web, you can make the experience much better by at least adopting some mobile UI patterns. And in those cases, the tips on this list will save you. (Our work with this company involved adding stuff to both their "desktop" and mobile sites. We didn't use PhoneGap, but did use several of the tricks on this list.)
As an aside, almost all of these tips have nothing to do with PhoneGap. They all apply just as well to any mobile site that's going to be using transitions to look like an app.
Edit: That's not to say that you can't make an app work, but you shouldn't try to make a typical app using mobile framework that tries to mimic a native app such as jquerymobile or others. If using a non-standard UI it can probably work where the user isn't expecting it to work and feel like a UITableView and every other basic thing in iOS.
http://ycombinator.com/newsguidelines.html
Unless it's changed a lot since 1.0 I don't believe it's some kind of WYSIWIG iPhone maker that creates bloated, terrible, code.
Phone gap is now a set of technical/busisness services for managing Cordova projects, such as Build deployable packages for all platforms via a web service
We advise native for productivity apps and such; day to day use apps should be fast and snappy, while promotional apps / marketing apps should look pretty.
It sounds like you make apps for people. Assuming you have someone on staff who knows iOS and someone who knows Android is it still faster to do it in PhoneGap? We attempted a phonegap app which ended up failing because of performance reasons. We rewrote the app in native iOS and it didn't take nearly as long as the original phonegap did with the constant tweaking in an attempt to get it to look and perform acceptably.
http://maxogden.com/fast-webview-applications
https://github.com/codecomputerlove/PhotoSwipe
Here's a simple HTML5/Photoswipe/Phonegap app I wrote that you could experiment with:
https://github.com/stungeye/HTML5-Tumblr-Mobile-App
Explained here: http://mobilehtml5.stungeye.com
In fact, using translate3d and CSS animation is pretty much the only way to get smooth animation - if you do it with pure JS (setting left/top styles), things get very herky-jerky.
We use them to emulate the Facebook / Path / Twitter swipe to move the main panel, performance isn't 100% of native - but it's pretty close.