Chris Bateman

An HTML5-Based iOS App

Short version: I built an HTML5-based iOS app, and you can download it here.

Long Version: A while ago I decided to build a particle system in JavaScript with the canvas element. This is certainly nothing original, but I thought it would be both fun and a good learning experience. I’d planned to just post it on my blog and move on. It turned out that it was a lot of fun, and it was a great learning experience.

But when I implemented touch events and tried it on my iPad, I immediately discovered that it was insanely more fun with multi-touch than it was with a mouse. Of course I could have just made it a web app and left it at that, but I’d been looking for an excuse to experiment with the Apple App Store, so I decided this would be it.

I’ve never approved of HTML-based apps that attempt to replicate native look-and-feel or native functionality. It can be done, but it usually just results in the uncanny valley: glitchy page transitions, scrolling that doesn’t feel right, and components that look like they came from the previous OS version.

So my first requirement was that it be indistinguishable from a native app. I think I’ve mainly accomplished that, which I’m pretty happy about. And fortunately, a canvas-based app makes it easy to stay away from native look-and-feel.

But the big downside of doing this with JavaScript is that the performance is nowhere near as good as native code would be, especially without Nitro in webviews. I wasn’t able to get performance where it needed to be on older devices, so I ended up restricting it to iPhone 4+ and iPad 2+. My apologies to those of you with older devices.

I know I could have built it with native code and gotten amazing performance on older devices – but I frankly just don’t have time to really learn another platform. It’s hard enough to keep up with the web, and that’s where I want to stay focused.

One more apology: I’m charging $0.99 for it, mainly because I’d like to get back some of the developer license cost. I’m planning to make some enhancements to it, and in a year or so I’ll probably make it free. If you do try it out, please let me know what you think!

Available on the App Store

Tell me what you think: @batemanchris