Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Mobile dev - Bypass apps and go straight to HTML5?
42 points by hymanroth 2444 days ago | hide | past | web | 54 comments | favorite
Assuming a mobile service needs to be launched in 6 months time, does it make sense to go straight to HTML5? Will the market be ready?

The recent release of the first version of JQuery mobile looks promising, for example.

There is a huge temptation to bypass native apps altogether (even with tools like PhoneGap). Not only does one avoid the app approval process, but, just like having to download plugins causes friction for desktop websites, giving users the opportunity to directly interact with a mobile-specific site as if it were a native app sounds like a big win all round.

The App Store / Marketplace is a very important distribution channel, which I wouldn't be so quick to dismiss.

Downloading an app in today's modern phone is almost as frictionless as entering a website.

Get the best of both worlds, build in html5 and put a thin wrapper around a webview with phonegap/titanium to get in the distribution channel

If you don't care about user experience, sure, do this.

Otherwise, build native apps.

If you can name one successful app that's just a webview then this might be an option.

The Bank of America app is a webview of their mobile site. It has excellent ratings, and is currently the #1 free app in the Finance category.

All that said, it's clearly not a native app. Transitions from screen to screen are slow, do not animate smoothly, and sometimes exhibit drawing problems.

The punchline: their app description announces an upcoming native app: http://itunes.apple.com/us/app/bank-america-mobile-banking/i...

For the average developer, using the App Store as a distribution channel is like playing Russian Roulette with your resources. If you don't have considerable marketing money to ensure your app makes it to the top of the iTunes category, your app will simply be buried beneath the horrible user interface of the App Store. It's a little better as far as Android is concerned but not much.

An app store is great for consumers, it sucks for developers. Especially the iOS AppStore where people spend huge amounts of time and money for an app that has a good chance of being rejected for any number of arbitrary reasons. And vendors like Apple go to great lengths to make extra sure your app code is not portable to other platforms, so it's not like you can share significant amounts of code between, say, Android, Windows, and iOS apps.

Enter HTML (5) mobile apps, which work basically the same across all platforms. Sure, you have to make adjustments for different capabilities, but that will even out over the next few years. Basically HTML 5 finally fulfills the promise of Java after all these years. Of course, there are a lot of apps that simply cannot be built with HTML yet, especially games...

App store is a great distribution, not marketing mechanism. You still have to do your own marketing. It's just very easy for people to buy an app by tapping a button. And it's the default. Many people would be suspicious of apps trying to charge them in Safari.

Of course, if you have a non-mobile web app and are offering a mobile companion, web version it's fine, but if you're building a standalone iDevice app that you want to charge for, AppStore is the only viable option.

You're submitting that marketing an html5 app is any easier than an app store app? The app store is orders of magnitude smaller that the web. Talk about being buried.

    Of course, there are a lot of apps that simply 
    cannot be built with HTML yet, especially 
Depends on the game - many genres do not require a lot of processing power (e.g. puzzle games, many turn-based games).

Yes, but it implies the user anticipating the use case... Would you download an app which talks you through fixing a car engine before you actually needed it, for example?

Plus, it's most likely to get users engaged as your app sits there in their apps list

Here is an example of where exactly what you are asking has been done to good effect.

By inserting a line of code in your normal website, we detect which device you are on and redirect you to a HTML5 + Jqtouch version of the site which acts and looks a lot like a native app (especially on the iphone)

See http://www.pocketdiner.co.uk

We've had no problems so far so the answer to your question is yes - HTML5 is mature enough for mobile devices from our experience.

This is a perfect example why web apps are still nowhere near native apps. For example (testing with a HTC Desire):

- The transitions are very slow and response times are too big.

- Pinch zooming a picture results in corrupting the design - overlapping buttons and labels and so on...

- You cannot use the Menu button

- You need a constant Internet connection to be able to work with the application

- The address bar shows all the time and takes a lot of place on the screen

HTML5 has offline cache.

WebKit has CSS has transitions, which are hardware-accelerated (at least on iPhone).

WebKit has <meta name=viewport> hack (hopefully standardized as @viewport) and touch events can be used to control zooming.

In iOS pages bookmarked on home screen are allowed to hide addressbar completely.

>You need a constant Internet connection to be able to work with the application

This would seem to be one of the biggest issues. Regardless of the function of the app, having it become really laggy/jumpy when connection loss occurs would be a non-starter for me.

Thanks - that is exactly what I'm talking about. But don't you have a problem with older mobile browsers not being able to render the site correctly?

Would you not arguably have more problems getting those same presumably older handsets to run your app?

Without describing what phones/operating systems you're expecting to target it's difficult to get specific. You will absolutely run into rendering issues between different mobile browsers, this will likely never go away, but the good news is the majority of the more recent mobile browsers are based off of, or will be, WebKit. If you go the Mobile Web application route and don't limit your scope to more recent phone OSes you're going to have to deal with the challenges of cross-browser development which could involve just as much time and effort as going a native application route with a helper framework like PhoneGap.

Well, we'd basically want to target them all! Given that people change their phones more often than their PCs, one would expect the installed mobile browser base to 'fresher' than the PC one. In other words, over the medium term (say 2 years) the rendering issue should hopefully fade away.

It's just a question of timing - when is it going to be OK to go 100% HTML5? (assuming, of course, the app is not particularly complex)

Ahh, I had assumed you were talking about a brand new application/service. If, as you mentioned in a reply to another comment, you're just exposing an existing web service to mobile phones then simply providing a mobile alternative to that service gets you a large percentage of your likely user base for a minimal effort.

If you're asking when 100% of the phones in your possible market will have browsers on them that are HTML5 aware/capable, I couldn't begin to guess. I don't think that will happen soon, but it's certainly happening at a faster rate than I ever thought it would be. This is the kind of question that can have a paralyzing effect however. If you want to provide a mobile gateway to your existing service you should go for it and you should implement to target the phones you expect the majority of your users to be using.

It was pointed out earlier, but it bears repeating, plan for what's out there right now. HTML5 has a lot of momentum in the browser space, but that doesn't mean it will be adopted in a uniform manner. Limit your scope if you have to, something is better than nothing, but right now the state of mobile browsers is in flux and I wouldn't recommend depending on 3rd parties to create a desirable environment for you.

I agree it's all about trade-off. Cleaner, faster, cheaper development vs risk of alienating some percentage of users with older mobile browsers. I was trying to get a feel for what people are currently thinking - but there doesn't seem to be an overriding consensus yet.

As regards focusing on what the stack looks like now rather than making an educated guess as to the not-too-distant future, here I have to disagree. Our business is all about well-reasoned gambles, and it seems pretty clear HTML5 will win the day for all but the most complex / intensive apps, so it really only boils down to timing.

Highly-respected VC Mark Suster made a similar point when he advised people to "skate where the puck is going" http://www.bothsidesofthetable.com/2010/10/17/skate-where-th...

I guess it depends on the app, but be warned that performance of HTML5 on mobile devices such as the iPad is orders of magnitude worse than in native apps.

So even something straightforward like, say, smoothly animating a pinch zoom on an image, is just shy of impossible on a mobile browser. Add any complexity to your scene, then try to animate it and you'll quickly start reconsidering building a native app.

Sound is another non-starter in an HTML5 app. iPhone (& iPod touch) will only play audio fullscreen. iPad's Safari will play one audio clip at a time, but only as a direct result of a user action. Video is also out, since Apple devices will only play it fullscreen.

Depending on what you're building, you might not need any form of animation or sound. But if you do, now is not the time to make the move to HTML5 if you want your thing to work on mobile devices.

It's not that slow. I know this because I've done it. You just need to use the HW accelerated transforms/animations. They're pretty easy to use, and documented. There are some undocumented css things which cause slow downs though.

Animation is as fast as lightning, with expert timing. In fact it's a little bit frighting what you can do with it. If you use js setTimer based animation it's not that great though. You need to use the css animation stuff really.

Audio can be played with no user action - again I know this from direct experience.

Only the small devices play video full screen (currently... I can't comment on upcoming IOS releases ;). The ipad can play them without going fullscreen.

You can't just use links, with click events. Understanding how touch input works with multiple fingers moving on the screen, not waiting for releases is different than understanding interfaces with a big screen and one accurate mouse pointer.

Expect to pay top £/$ for good iOS html5/css/js/svg/canvas developers that also have experience on iOS/android/nokia/palm... if you can find them.

Any idea where the market is for such developers? I intent to go the HTML app route, but I worry a little that I won't be able to get contracts for creating apps because I lack experience with the native side.

Hey, if you have a working example of two simultaneous audio clips playing in an iPad, run off a timer with no user click to initiate it, I'd absolutely love to see it and swipe the code. Ditto for smoothly panning and zooming a scene without the 'disappearies'.

That sort of thing is trivial in a browser, but it just falls down on apple devices. If you have counterexamples, you can save me a lot of grief, so please share them.

I agree with the above. Keep in mind that a lot of what you take for granted in a native app you'll have to build yourself. Scroll inertia, image carousels, determining a "flick" vs a tap, fixed tab bar - these are all something that haven't been 100% figured out. Yes, you can find solutions for each one, but try putting them all together and you quickly see the conflicts. Add in some caching of data and you'll learn that the HTML5 cache concept is different for each device.

I've tackled these issues personally, and at my company (iPad app). Keep in mind that your users will demand that your app at least feel native, if not the same UI controls. You think that you'll have the freedom to run on each platform, but in reality you'll be dealing with the quirks of each platform and that will set you back some dev time. Webkit is not 100% the same on each browser

What Phonegap gives you is a demarcation point to drop in your HTML code - and that's it. If you need API access for accelerometer, vibrate, etc then Phonegap can help. If your app is focused more on the user experience, then Phonegap cannot help you.

Do you really want to launch an app that will feel awkward on every platform, or just develop a native app for each major platform? That platform space isn't as large as you might think - iOS, Android, <pick your consumer markets third>

I'm a mobile product manager by day, my contact info is in my profile if you have any more questions.

For my upcoming game/app (threewiki.com) I actually built all three versions : )

First the complete, native iPhone version, then realizing that parsing HTML and storing with Cocoa is a pain. (Core Data is pretty good but too bureaucratic for simple things).

So in my second version, I moved all the data logics to an App Engine server, and just leave the app with a thin UIWebView layer in most cases, and only stores the user token on the phone. Mobile Webkit is pretty accurate but I didn't like how the animation turns out, just doesn't "feel" right. Besides, scrolling is much slower in UIWebView than the native UITableView, and you cannot change the tap-link style in UIWebView except a simple color overlay.

Then comes my final version, in which I use UIWebView for static content, and use UITableView & custom views/animation when there's interaction, and all model logics and data processing done on the server.

The app feels super smooth now. And it would be super easy to update because pretty much all the logics in on the server, so app is essentially a pretty "portal". Take a look of the video if you are interested threewiki.com

Why not both? I'm sure it's similarly easy in PhoneGap, but here's how easy it is to package a 1 page HTML5 app in Appcelerator Titanium for submission to App Store or Android Market:

wv = Ti.UI.createWebView({url:index.html}); win = Ti.UI.createWindow(); win.add(wv); win.open();

I'd say - build an HTML5 app, but add native wrappers (just Webkit) so you can push it to App Store or Android Store. That's what I'm doing now (after a couple of native apps).

on iPhone webapps are still not as good as native ones - you can't put them on App Store (a large audience) and they don't handle multitasking well.

Assuming your app can be done in HTML5.. if it's a game or it requires a lot of integration with platform then native is the way to go (duh)

Sure, cycle intensive use cases will probably use native code for a long time to come.

The idea of adding native wrappers around a pure HTML/JS implementation sounds very interesting - like having your cake and eating it....

It depends a lot on the use case of your application. The size of the task, the amount of return use, etc. For one-off, low usage apps a web app can be the better choice.

Also, it depends on how good you want the app to look and behave. With HTML you don't have as much control over how content is loaded, animated, etc. Be prepared to deal with really hard to debug crashes if you're making a heavy app.

Last, but not least, the frameworks: the amount of effort that has been put into the native frameworks makes up for a lot of the (perceived?) ease of using HTML, but having to invent a lot of wheels. But again, it really really really depends on what your app will be doing.

Is it possible to wrap a HTML5 site into an application? I mean, to make it appear as an app on the phone, even in the app store, but it's just using the browser to connect to the HTML5 site?

Yes - that is for example what tools like PhoneGap are helping with.

What about monetization? If it's ad-based, alright; however, in many cases the simple payment process offered by iTunes, for instance, is essential.

Good point. I should have mentioned monetization is not an issue. In other words, if what we aim to build were in an app store it would be free anyway.

Basically I'm asking whether HTML5 will be mature enough both in terms of functionality and browser market share in around 6 months time.

Never mind six months from now - if you're thinking native app, then you've got a particular set of phones in mind. Take a look at the state of the browser on them now.

andrewf is completely right. You should plan for what capabilities exist today on the platforms you're targeting. Taking advantage of upcoming synergy is a lofty goal, but expecting it and making your plans depend on it would be a mistake.

From my tests on the iPhone, Mobile Safari-based web apps do not have responsive interfaces as compared to native ones. Safari adds a delay when you do things like tap link or button - I'm not sure why, it's probably to disambiguate tapping the link with some other action, since Safari can expect the user to be scrolling and zooming as well on top of any interface element.

Because of this, I find UI that mimics native apps in Safari to be a frustrating experience. Everything looks perfectly native, but all the behavior and touch feedback is slightly off.

Until Apple changes Safari or JQuery Mobile figures out how to get more responsive interaction out of it, I think this mimicking the native iPhone UI is missing the point - UI is about much more than visual theme. Stick to non-platform-specific web app design in the meantime (see Google's Mobile Safari-based apps, for instance).

Delay can be avoided by using touch events instead of emulated mouse events.

Ah nice: onTouchStart, onTouchEnd.

Very interesting. Thanks

Mobile Web Applications require an extra bit of awareness and effort from users on the platforms that have browsers good enough to utilize them. I haven't personally seen great adoption rates for them, but they do afford benefits development wise, especially if your goal is to create and launch a cross-platform application quickly. It's certainly a possibility that mobile web applications may get more user awareness with better discovery tools, but the general momentum of user interest has really centered on native applications. Mostly because users, that I have experience with, find using native applications a better experience to web applications, but also because the ecosystem around them has matured quite a bit to make finding and acquiring them so much easier.

There are a number of native applications that simply serve up mobile web applications and that grants them several of the advantages of native applications, though not all, from a discovery, capability and usability perspective. Users typically notice that their experience is sub-par compared to truly native applications, but good ones can get close enough that it doesn't make a huge impact compared to the benefits. You will of course still have to deal with app store/market place submission, but you could always launch the application as a web app until the native version is available, allowing you to even provide the native versions after your intended launch date. Generally speaking it affords you a lot of flexibility for your effort, but I would caution that HTML5 based applications really only work for focused tasks that do not need to rely on native features the varying phones provide.

The questions you really need to ask to make a solid decision on which path to take are, how many platforms are you really targeting and do they all need to be supported immediately? Are there any native features of the phones you're targeting that need/should to be leveraged to make your application useful and successful in accomplishing its primary task? How much effort are you willing to put into supporting and maintaining the application(s)? If all your answers lead to having to support a lot for a little and your application is simple enough to not need native features then an HTML5 implementation would probably make the most sense.

Excellent comment, thanks. We would require location and touch functionality. The core use case is really quite simple: users provide both text and numerical feedback based on their location - that's basically it. Nothing fancy. It needs to quick and easy to use, work on as many platforms as possible, and - given the nature of the application - is unlikely to be downloaded prior to when it's needed. People are more likely to use it "on impulse" and that's another reason we like the idea of accessing the service as you would a web site.

I've never, ever seen an HTML5 app that comes even close to being as smooth as a native app. HTML5 is not a comparable option for the foreseeable future.

It's best to build a simple native app for iOS that covers the core of your service, and then an Android app if your audience is particularly likely to have Android phones.

EDIT: Also, the approval process is a non-issue now, it takes a week at most to be approved, and 2-3 days if you email ask them to expedite. The problems with long delays are long over, starting early last year things started improving exponentially.

That of course depends on the target audience of the application but in general I would say not quite yet. We have a mobile app we launched recently and we have the benefit of being on-hand when customers use it (at trade shows). There are still a very high percentage of old WinMo and BB phones out there that we had to code for. Now we did make a version of our app in HTML but it is very basic to support the old browsers. I really look forward to the day when we can just do a one for all (or one for 99%) application.

Even though the technology behind HTML5 mobile app seems solid, there's still a big hole in the business aspect - no effective way to generate revenue. There's nothing near the App Store in terms of audience reach in the web space.

Put it in more perspective: Look how much iOS developers vs. general web developers are making. And I've also heard an iPhone app has more paid users than a web app (with the similar functionality)'s free users.

It depends how technically interesting your app is. If it's just an RSS reader, then HTML5 is probably the way to go.

But you've got the factor in the audience that the App Store gives you. AFAIK there's currently no decent way of discovering mobile web apps (unless you count Google?)

Perhaps PhoneGap is a good compromise, but I've not seen how well it works in practice...

From a marketing perspective - I know lots of people and blogs who monitor the app store for new apps and try them out. An HTML5 app means that you will not have access to this crowd.

One thing I constantly see in the mobile deployment conversation is a focus on only end-user. There is a huge corporate enterprise market there as well. Since this is where I make my money, my decision tree is a bit different. Corporate clients generally target a more limited number of devices. Also, the app store would not be a likely repository for MIS to deploy from. There is a much bigger market than the end-user only apps that most of these points reference. HTML5 and webkit make good sense on the enterprise Intranet.

Yes, but that implies the app is an end to itself.

What if you just wanted to present an existing web service to mobile users in an "app-like" UI?

making web apps as polished as web apps is very hard, however you get a lot of the way there and its 10% of the effort.

You can still do distribution through the appstore with a uiwebview, I am not sure exactly how stringent apple are in this regard.

However its fairly obvious that html(5) is the future of these things, and the turnaround on html applications is far far faster, so yeh I would recommend going html5 until you have strong signals that a native app is needed.


Depends upon what the device market breakdown among your potential customers..

Symbian-everything before ^3 devices not fully html5 WM-everything before WM7 not fully html5 BB-everything past 4.4 is almost full html5 Android- 2.1 and beyond is full html5 iPhone iOS 4 is full html5

I would start examining frameworks such as PhoneGap, QuickConnect, etc to see which covers the best as far as html5.

Of course this depends upon whether you need to access native device features as at the moment the un-spec HTML5 through webkit only has camera, audio, geolocation, sms.

How do you call WM7 fully html5?

I say build it in HTML5 then ship it with PhoneGap. You'll have the best of both worlds.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact