On 5by5′s Daily Edition last week, there was a section of the show where Dan, Jen and special guest Dave Findlay were talking about apps on iOS, specifically what makes an app ‘native’. There was a little bit of debate on the show with Jen suggesting that some folks would argue that any app that’s in the App Store can be called native.
For me, this is simple: a native app is code that calls directly to the vendor-supplied OS frameworks. On iOS, this means apps that directly reference UIKit, et al. This does not include Web apps – JavaScript calls inside a UIWebView for something like geo-location have to go and then talk to CoreLocation under the hood. Adding this level of abstraction means shedding the native moniker.
This direct communication means faster, better performing apps that can use system supplied (and heavily optimized) UI widgets. Apps that ‘cheat’ and use HTML5 based interfaces seem to always feel ‘weird’. Look at the recently released HBO Go app on iPad – the UI is clearly at least partially built using HTML (they were able to deploy on Android as well, almost certainly a benefit of this approach). The downside in the case of the HBO app is that for anyone that cares at all about UI, it just feels totally off. If the app wasn’t primarily used for watching video (where this kind of UI suckage matters less), I’d delete it off my iPad.
Native apps: the only way to go.