tl;dr - URLs delivered a better experience than native desktop apps; they can do the same for mobile apps.
update: see my follow-up post - HTML5 App Stores don't go too far enough.
When we discussed Sencha's Fastbook app on the mozilla.engagement.developers list Robert pointed out that Sencha compared their HTML5 app running in mobile web browser to Facebook's HTML5 app running in an iOS WebView - the way Sencha & PhoneGap packaged HTML5 apps actually run. It's widely discussed, as we did with Fastbook, that HTML5 apps perform worse in iOS UIWebView than iOS Safari. There are similar stories about Android WebView performance, and Tulsa Web Dev and HTML5 PhoneGap developer Rod just posted a similar performance-related anecdote about BlackBerry WebWorks.
That made me think, "PhoneGap is just that - a stop-gap." ... "we should drop this whole PhoneGap App nonsense and go (back) to mobile web at simple URL's" since:
- App discover-ability & installation sucks
- App content discover-ability sucks
App discover-ability & installation sucks
A couple months ago, my wife and I took our daughters to Incredible Pizza. When we sat down, I saw this table-tent:
I spent a couple minutes trying to make this "check-in" UX work on my wife's phone. The table-tent literally reads: "TIP: A QR-Reader App is necessary to scan QR codes. There are several free ones available. Check your app store." So, here's what I did to find an app:
- Connect to Incredible Pizza wifi
- Tap "All apps"
- Swipe down to "Play Store"
- Tap "Play Store"
- Tap "Search"
- Type "qr reader"
- Swipe thru a huge list of apps
- Pick one at random (*)
- Tap "Install"
- Tap "Accept & Download"
- Wait for download & install
Android prompts me with a wall of permissions that I have to accept in order to install the app. And because app updates with new permissions can't be automatically downloaded & installed, many app developers just make their app request all permissions.
* Especially interesting to developers - I picked a free qr reader app at random, verifying that App Stores are more like casinos than gold-mines.
Content discover-ability sucks
Once I had the QR reader app, I started to use it to check-in to Incredible Pizza on Facebook:
- Hold the phone in front of the card
- Tap "Visit Link"
- Tap "Browser"
- Go thru 5 redirects to a prompt to open native Facebook app
- Facebook opens
- Wonder: "Why am I trying to do this in the first place?"
There was no human-readable URL on the card. I had to choose between "Browser" and "VZ Navigator" that came with the phone from Verizon. The redirects took about 20 seconds. Finally, since they don't deep link into the native app, I ultimately end up just staring at the Facebook app as if I'd opened it myself - nothing there at all about Incredible Pizza.
This totally obscures the app's content, and value, from the user. If I package my HTML5 app with PhoneGap I have to also register a custom URL scheme to link to a specific part of it - something PhoneGap doesn't help you to do(?). And even when you do it, you will need to make and deploy an update to the app anytime you want to add new URL-driven logic to it, invoking another round of app review.
The Plain Old URL approach
Contrast the above experience with a more traditional web approach:
- Connect to Incredible Pizza wifi
- Tap Browser
- (Maybe) Type "incrediblepizza.com"
- (Maybe) Tap "Yes" at a geolocation prompt
Incredible Pizza could immediately give me the store-specific web page via captive wifi portal with big buttons for location-and-date-specific coupons, facebook check-in, etc. Or, if I'm not on their wifi, I type "incrediblepizza.com" to get the same thing via geolocation. In addition to a simpler experience, deploying new or updated content is as simple as updating the website.
So why package HTML5 apps?
Considering all the above, I usually ask web devs using PhoneGap: "Why are you using PhoneGap instead of just putting an HTML5 app at a URL?" and they often reply "everyone wants an app." This "everyone wants an app" situation is a problem we developers and designers should address - but not just technically. We should work with our clients and customers to consider the full user experience of native vs. web - especially app installation & content discover-ability.
... although many brands and creative agencies believe that they need to develop iPhone apps, what they need in reality is a good mobile site. It costs less to develop, manage and work across all handsets.
- HTML5 - The End of Apps | Mobile Europe
If you're making an HTML5 app, consider - do you want to make a native desktop application? Why or why not? Then consider if the same reasoning is true for the native mobile application. Consider the URL experience for your customers. Walk your clients thru both native app and URL experiences on mobile devices. We used web URLs to deliver a better experience than native desktop apps - we should do the same with mobile apps.
Good HTML5 Packaging - URL Bookmarks
Vendors like Mozilla (disclaimer: my employer) and Google are also working on manifests to install HTML5 apps on Firefox (OS) and Chrome (OS). Opera and previously(?) Microsoft (via Silverlight) use the W3C Packaged Web Apps (Widgets) standard. I like these efforts if they contribute towards a consistent "installation" experience that works more like an enhanced bookmark. I.e., turn this:
- Visit URL
- Tap "Add to ..."
- Tap "Add to Home Screen"
- Tap "Add"
into this:
- Visit URL
- Tap "Add to Home Screen."
But next time you make an app, consider the tried-and-true web experience:
- Tap Browser
- Type URL