Latest Posts

Web vs. Native apps - thoughts of a web & native developer

These past weeks (after Apple’s iCloud announcement) there has been a lot of debate about web apps vs. native apps on the web. The main idea is that Google is all about keeping the data and the experience in the web with web apps while Apple is all about keeping the data in the cloud but the experience in native apps.

I personally believe that trying to bring all software to the web is wrong. The web wasn’t designed for all software experiences. With the advancements in HTML5 and JavaScript more and more can be done in a browser but I feel that web evangelists (such as Google) are just forcing everything to live in a browser. John Gruber in his post “It’s All Software” says that “it is harder to create good user experiences inside a web browser”. I agree with him, and I add that the reason why it is harder is because web technologies weren’t designed to create the type of user experiences they are trying to create. What HTML5 and other web advancements are doing is trying to bring into the web concepts and technologies which have been part of native software for ages, such as: Canvas, Offline Storage, Web Workers, Web Sockets, Notifications, WebFonts, WebGL, events, etc. Desktop UI frameworks such as Cocoa, QT, MFC, Windows Forms and Java SWT have had most of these technologies for a long time.

It feels as if most of the uses of HTML5 so far have been to prove that it can be done. Big web companies such as Google and Facebook will invest heavily in this space but I believe that web apps will never provide the experience native apps do. Specially not if they have a huge stack of containers on top of them; a frame within a frame within a frame within a browser within an OS.

Don’t get me wrong, there are many sites which work great on the web such as Tumblr, Quora, Digg, Reddit, YouTube and Facebook; to name a few. They work great because they are rich in content and links which is the vision behind the web in the first place. When there is more interaction involved, such as games and content creation, then the web shows its limitations. I’m not saying that these things can’t be done, just that the web can’t provide the same experience a native application can.

One of my biggest frustration about the web is the “monopolization” of technologies. On the server side there are lots of languages, frameworks and tools to use; on the client side you are stuck with HTML, CSS and JavaScript (I’m purposely ignoring Flash, Silverlight and other plugin based solutions). I’m personally not a fan of JavaScript and I’m glad initiatives such as Objective-J and CoffeeScript are trying to let JavaScript be sort of the compiled language while you code in a nicer language.

Having said all that, I do see the advantages the web has to offer, specially in the form of availability on any device with a browser. HTML and CSS are also quite powerful tools for decoupling logic, structure and aesthetics. I’m sure there are many native apps which use web views to render things which would be a pain to accomplish with the native frameworks. These advantages shouldn’t be an excuse to not provide users with native experience on the devices they use. The success of app stores is evidence enough of the hunger users have for native apps. After all, there’s an app for that, not a web page for that.

Other posts about this topic:

Daring Fireball
Business Insider
The Unplugged Web

3 years ago  permalink & Notes (2)
  1. rizviiqubal reblogged this from programmista
  2. programmista posted this