Native and Web Applications
Why I believe native will always win
In this post, “Native” refers to apps written in an OS’s standard language. Apps that attempt to package web apps in “native” web views are excluded from this defintion.
I’d like to start this post by mentioning that I am a solid supporter of apps that make use of web technologies. However, and this is something I’m noticing more and more, they almost never feel as good as a native app.
This is for many reasons, and I’d rather not spend this post simply regurgitating these points. Just Google it if you have been living under a rock for this past year. Instead, I’d prefer to focus on the capabilities exposed to a native app, compared to the abilities of a web-based app.
When you open a packed web app, regardless of the platform that it is on, it is immediately clear that it is, indeed, a web app. This is because a user has become used to the various UI elements used in a native app, which are almost always unavailable, or simply unused, in a web app. This isn’t necessarily a bad thing, merely an obervation. However, it does become a bad thing when an application attempts to replicate common UI elements found in native applications, that are unavailable to the web developer. One of the most “replicated” UI elements I have ever seen is the “tab bar” found in iOS applications. You should never replicate a UI element using web technologies. It will be almost impossible to achieve perfect replication, and the user will notice the differences, regardless of how subtle they are to the developer. Have you ever tried to use a custom drop-down menu?
At the same time, it is almost impossible to achieve the same complex UIs that are possible in web applications, by simply using native technologies. Because of this, you see web applications that limit their UI to what is possible using the native technologies, which almost always makes for a terrible experience.
In short, never attempt to replicate a native experience using web technologies.