But, are there any successful apps made with PhoneGap? Writing apps in HTML5 is constantly hyped, but there isn't a single HTML app out of the dozens on my iPhone except Netflix. PhoneGap's app gallery doesn't have a single app I've heard of.
(The Netflix app isn't too pleasant, either, unfortunately.)
Define successful. Because, let's be honest, if I need an application for my company that will be used internally, does it matter if you haven't heard about it? Don't get caught look at this from just one point of view.
...but when I am it's by Joe Hewitt. TGIF!
Basically, they reuse cells like UITableView does.
Check out the video at ~16 minute mark.
Granted, there are other approaches you can take to get this behavior, but I'm not sure why you would. My impression is that they're using HTML5 in these areas.
I know that Facebook is very pro-HTML5 but I don't think there are any views in the native iPhone app that are not native UIKit or based on three20. I'll ask around, would be nice to now if there's any shared code at all on their end.
There is a lot of non-visible Obj-C, e.g., for controlling caching and other niceties.
Also: Love Zite, congrats on the sale.
Phonegap is a great feel good piece of technology, that browser enthusiasts can point to and say, "See this is what you can do with the web".
"Since PhoneGap Build uses Apple's standard development process to build applications, you will need to sign up for their developer program to build iOS applications on PhoneGap Build. You will also need a Mac to configure your certificate and provisioning profile."
What we are not having problems with is the fact that we only really have a single thread to do everything. All I can say is that I'm glad it wasn't my idea to build it this way.
I thought it might be worth looking into web workers, but everything seems to interact with the DOM so that's not much help either.
That's not a knock - a lot of people have that use case, and spend a lot of time on their own systems for deploying to multiple platforms. Consider internal apps, for example, that don't have to be massively visually slick and polished.
But ... given the very large differences between even similar platforms, and even between versions of platforms, you're not going to be getting much from this if you are building ultra-slick apps in which you really do need consider, say, how hardware acceleration or browser quirks fit into the picture.
I had to write some plugins to get my game working on Android (and there are still compatibility problems around opening intents), so PhoneGap apps definitely lose something in the usability department.
And of course animations are not successful in this environment.
Ads are a pain too, if that's important to you, with the Google Admob/Adwords migration happening and the mobile web vs app ambiguity.
PhoneGap seems helpful as a part of the app's main UI, but native chrome is still important to completing an app's functionality and usability. I don't see how Build solves that use case.
Still, it's a niche.
The more "consumer" your app the more likely it needs to be mobile. But I think there is probably a large class of apps where PhoneGap/Titanium make sense. Definitely in the internal business category where the audience is finite and the look-and-feel is secondary to the functionality and cost/ease of development and maintenance.
I would think there would have to be some type of "compiler hints" for particular app device builds.
What is wrong with this picture? If you can build your app as a web app and don't require hardware access then I'd think twice whether a native app is required.
Of course there is a lot of down-side to this, but it is what it is. I wish the App Stores, particularly the Android Market, would create a much more elaborate system of categories allowing people to narrow their browsing down to exactly what they want, then it wouldn't matter so much if there was a lot of useless crap in the app stores, because we would never see it.
We built a prototype mobile game in two weeks using PhoneGap and we were able to deploy to Android effortlessly. The visibility of the app store gave us (zero marketing, free app) brought in 2k downloads in two days.
That kind of free distribution is hard to replicate on the open web.
It's also pretty easy to just implement a registration fee, especially now with Stripe out in the wild.
If you're really looking to limit access though, you could probably use something like gumroad to get it off the ground.
After that incident, I resolved to take my web app to the various app stores and am working on that with PhoneGap now.
But there are also drawbacks, more specifically with Apple, if you have to spend a lot of time in the black hole review process.
If someone is trying really hard to emulate a native app's interface but without native technologies, I think they're already doing it wrong. Focus on the UX, not taking a different framework's exact visual style and copying it pixel for pixel.
I've been doing mobile web development for about a year now. I've done both PhoneGap and over-the-air mobile web/native apps (with embedded webviews that load HTML/CSS/JS from the web when requested). Both types of apps accepted by Apple and in the Appstore as well as in the Android Market. I would recommend rolling your own and not trying to imitate the look of native apps. One of the strengths of using HTML5 is that you can create a custom look and feel that doesn't look like every other app out there.
Since you mentioned Sencha and jQuery Mobile, here's what I think having used both:
jQuery Mobile doesn't really try to look native and it really doesn't "feel" native either. jQuery has it's own ui controls that more or less look identical on iPhone or Android. With jQuery Mobile, you do write HTML and have a more transparent view of that as well as of the CSS. But, you have to write HTML the "jQuery Mobile way" to utilize the UI built into the framework. You don't get as many widgets and ui-controls as you do in Sencha and overall, the look and feel is not of the same caliber either. But, it's smaller than Sencha, has your standard MIT license and is more easily modified.
I'm not blaming jQuery Mobile or Sencha. I think mobile browsers are just not ready for delivering a smooth UI experience that's up to par with native apps.
Yes, it lags ever so slightly, but faster CPU in iPhone 5 should take care of that. My only other complain is that they messed up calculating tap areas for tabbar/toolbar items - Sencha has tap area equal to the visual size of the button, whereas UIKit assigns entire section of the toolbar (44 pixels tall in portrait), which makes a lot of difference in tap detection. But I don't see why they can't fix it, and then it would be pretty good...
To be clear, I am still staying away from UIWebView in favor of UIKit, but I am getting increasingly interested in this.
This is always the reply of web developers -- even on the desktop! "Yes, it's slow now, but it'll be faster with new hardware!".
Meanwhile, the native applications use that additional processor power to do more stuff, and the webapps fall further behind again.
I also wonder where are the people who would appreciate this sort of contribution. They gotta be somewhere...
Mobile web frameworks get you an immediate boost in developer productivity, but down the road, those gains are given back as you try to achieve reasonable performance, which to some extent is a fools errand because you just have so much library code bogging down the browser/webview.
Other parts of a mobile web app, like CSS3 transitions, will perform as well as the browser/phone lets them. Using CSS3 for transitions and animations is definitely "the right way", but as of now, these are pretty clunky on most phones.
Right now i guess either rolling your own framework or looking into alternatives like Zepto.js makes more sense.
Sencha Touch is free now (not sure when that happened). And the multi-hundred kb framework isn't much of an issue since it's bundled up in the native download and always local to the device.