Native app? Hybrid app? Some thoughts…

Some – for me – highly respected people demonstrated last week at Connect 2014 how to build mobile apps using IBM Worklight. It was nice to see how the tooling works as I haven’t looked into Worklight very deeply. At least because I don’t want to install another Eclipse and because Worklight doesn’t support the latest Eclipse version 4.3.

I’ve often heard the wording “native apps” in the context of those sessions. So what does that mean – “native”?

  • In my opinion a native app is an app that feels native. Not “web-ish”. It consists of native UI elements – not mobile web-frameworks.
  • In other opinions a “native” app is what you can deploy as an app onto a mobile device.

Putting a website into a native container is called “hybrid”. Not native. Users don’t get that difference. And they don’t have to. But technical people should understand the difference. At least when you’re doing projects on that.

I’m personally not a fan of hybrid apps. Maybe because I understand and know the technical differences. And maybe because I think a jQuery/Dojo back button feels misplaced in an app compared to a native “back” navigation element. Currently I don’t have a feeling how well that works for end-users. I’ve seen a lot of very good mobile websites and even more bad mobile websites. The same counts in for apps, for sure. But users understand that websites are different from apps. They understand that there are good and not so good ones. They’ve learned it in the last decades. They’ve learned that transitions could be flaky on websites. They’ve learned that network connection is critical for websites. What should they now learn for hybrid apps?

I don’t want to offend someone (or it’s awesome work) with this blog post. I want to clarify things. IMHO you’ve to be very clear on what you communicate. Otherwise you’ll raise expectations that maybe couldn’t get fullfilled. The users don’t care what’s technically under the hood. They care what the UI, what the behavior, the smoothness of an app is. Can that be accomplished well with a hybrid app? Certainly. Is that native for users? Maybe. If it works well…

And please don’t underestimate the administrative differences between native apps and mobile websites. Want to deploy a new version? Just updating the server is working well for mobile websites – every user gets the update just on the next browser request. Updating a native app is a whole another story. You rely on app store review times and mechanisms (and possible rejections). You rely on users which aren’t updating the app – and in that case with multiple versions of your code (including old bugs and without new features) in the wild.