Native mobile apps are a stopgap
Do you remember when software came in boxes, on discs that you had to pop into your computer and install? When your puny little computer was the entire computational universe for it?
And then came the network, and everybody and everything else with it, and it was like that software had broken out of the playpen and could now run around the house, the neighborhood, the entire city.
It was only logical that the element whose entire raison d’etre was connectivity to this new computational universe, the browser, ended up subsuming and becoming the container for all our applications. We moved from apps to webapps, but by now the web prefix already seems redundant. The majority of people can function just fine in both the office and the home working completely in the browser.
We’re seeing a similar battle between two types of apps in the mobile world. Native vs webapps. Which is the better fit for mobile? Which should you build first?
What’s different is that connectivity is now the default. Whether your app is contained in a browser or not is less important. What’s more important is the networked computational universe they have access to. Most apps are pretty data frontends to vast remote backends that do most of the heavy lifting.
In a somewhat ironic twist, webapps are getting better and better at working offline, for those rare times when you don’t have a connection. Some have argued that apps should be designed to function offline first, treating the network as just another progressive enhancement.
We’re in the same place with mobile now that we were when GMail was first released on the desktop. The browser showed us a glimmer of what was possible, but it had yet to take on the abstractions and power that would make it a decent platform for real apps. The browsers on mobile devices still don’t have full access to the raw hardware (gyro, camera, various other sensors), but it’s just a matter of time before those differences are erased.
That’s why I think native mobile apps are just a stopgap until mobile browsers catch up.