Native is about user experience

Emil Sjölander
4 min readApr 27, 2015

--

In the past years it has become all to common to think of the web as not only a platform for documents but a platform for applications. This is in many ways great. We can deploy updates to our users quickly and not worry about outdated clients. Users can start using our applications without downloading an app which clutters their application folder or home screen. These are benefits I would love to have when developing native application. However, I think the web platform is ill suited for creating a truly great user experience.

Let me preface this by explaining my interpretation of some of the terms I have used and will be using. Native applications are not applications written in languages that compile down to machine code. Native applications are applications which offer a native user experience, native to the operating system it runs on. Web apps are not apps written using HTML, CSS and javascript. Web apps are apps which resides inside a web browser. Web apps can be built using C++ on chrome’s native client. None of what i will be arguing for here will have anything to do with the languages and tools used to build these applications and experiences. What tool to use depends on what you are trying to accomplish, it should never effect the end user, its an implementation detail.

Web apps offer a subpar user experience. I recently tried closing a chat window inside of facebook by pressing the familiar key combo cmd+w. In any other application this closes the current window. And it did this time as well, it closed the chrome window. The web has gotten to a point where we forget we are inside a browser, this is a great thing in many situations, if it weren’t for us being thrown out of this illusion every now and then. So instead of closing my chat which I had just ended with a pleasant goodbye I closed the entire facebook window. Some people will argue that this is ‘no big deal’, I would argue that this is the sole reason for not building applications on the web platform. I can offer almost endless examples of bad user experience which has its root cause in that the application was built on the web. Google did a great job with their new email application inbox but however many designers worked on it the product is flawed because cmd+n opens a new browser window. Ask any mac user what cmd+n does in an email application and they will tell you that it opens a new screen which lets them compose a new email, similarly with cmd+r for typing a reply.

The web has its benefits

Yes the web as a platform offers a lot of very nice benefits. However, I’m sad to say that they can not offer a competitive user experience, not today. In the future I hope we can all work together to make the web a better place, a place for top notch user experience. The first step to this is offering a way for web applications to take focus and respond to all key commands, not only the ones left unused by your browser of choice. We need a way to make web application not only look native but also feel native.

Key commands are just one problem which applications built on the web platform have. There are countless other elements we are used to interating with in a certain way but that do not work as we would think on the web. Horizontal scroll is an example. Horizontal scrolling is something most mac users have little trouble with as the magic mouse and macbook trackpads make it easy. Windows users have a harder time with horizontal scrolling. This leads to web apps implementing other ways of scrolling horizontally. One such example is netflix which introduces buttons which you hover over to scroll horizontally. Mac users familiar with this direction of scrolling will try to scroll but perhaps end up leaving the page all together (the horizontal scroll gesture doubles as a go-back gesture when the scroll event is not intercepted by the application).

Today the best solution is simply to adopt the platform(s) which enable you to offer a first class user experience. Look at your application and identify it is a good fit for the web. If your application is constructed as a set of documents (Medium, Tumblr, Wikipedia are all examples for this) the web platform is probably a very good fit as that is what it was built for.

If your application does not fit these criteria I think the best solution currently is to adopt one or multiple native platforms. As long as your application feels native to the platform not me nor anyone else will care if it was built in java, Objective-C, python, or HTML, CSS and javascript.

--

--