Tiny Little Knives

Photo credit: Nina Matthews Photography

Photo credit: Nina Matthews Photography

“If any man says he hates war more than I do, he better have a knife, that’s all I have to say.” - Jack Handey

If offered an app both natively and through the browser—with the same attention to detail given to both—people readily choose the native option. Why?

Amid passionate discourse from all sides of the issue, I couldn’t find a single explanation for why people prefer native apps.

As I’ve talked to my industry friends, most have expressed the same sentiment about using browser-based apps that I feel, every time I go to use one. There is some kind of emotional or mental barrier that makes a browser app feel harder to use.

Then it occurred to me. There is no single explanation. The reason browser apps lose this fight is because of a raft of small things. It’s death by a thousand cuts. But what is doing the dying in this overwrought metaphor? Well, I’ll get to that in a minute. First, let’s run through just a few of the cuts you get with a browser app.

Slice and Dice

  1. Reliability - To the user, the UI is the app. When you switch to a native app, there’s no UI middleman to fail you. You may still have data problems if your native app is connected to the web, but the UI is there instantly. No waiting for uncached resources or CDN-hosted files to load. From the user’s perspective, they never see the chrome of the UI loading in. The app is just reliably there.

  2. Class Warfare - One of the things an OS does so well is that it ties a slew of disparate apps and experiences together seamlessly. You get built-in app switching with keystrokes, access to the global system menu, notifications, etc. A native app feels native because it’s a first-class citizen in an ecosystem and flow that you’re used to. When you switch to a browser app, you’re entering a world of abstraction. And nothing works exactly the way you expect. This context switch is better on iOS, but it’s still there, in dozens of subtle ways that you run into when you try to do some things you take for granted in native apps.

  3. Context Switching - When making the context switch to a browser app (especially on a desktop OS), it’s a lot like using an app in a virtual pc environment. Instead of being a step away, it’s two steps away. That may not seem like a lot, but it’s double what you’re used to. And it’s three steps away if you have to figure out which tab your app is running in. Also, much like a virtual machine, the performance you expect is just not there. In a browser app it’s worse because much of the processing is taken somewhere else along with your control (or perception of it, anyway).

  4. Sessions - One of the biggest issues for me with browser apps is the ubiquitous problem with sessions. If you haven’t used a browser app in a while, the instant you make that context switch, you could be faced with an authentication wall. Then you either have to consult your keychain app (which can be extra painful on iOS) or you have to consciously remember your login credentials. Either way, an onerous cognitive load has just been placed on you. By contrast, a native app gets OS-level security that doesn't require this. When you launch it, it’s there. Logged-in, ready to go. Unless one deletes the native app, they only see the login screen once. And considering that the login/signup screen presents the worst user experience that people usually ever have, this—alone—is a huge win.

  5. Notifications - browser apps are always pull, rarely push. In iOS, you get the benefit of system-level notifications for your app. With a browser app, the best you’re going to get is an email or sms, etc. This may be different on Android, but it’s certainly the case on iOS.

  6. Cache - With a browser app, you get a monolithic cache that can be destroyed. That means that unless you’re using Fluid (you should be), clearing your cache in browser is like a rainforest slash and burn.

  7. Hockey Metaphors - When I’ve discussed the issues around performance with advocates of browser-based apps, they always reassure me that the technology has finally caught up. But as I see it, this is never not going to be a problem. Developers will always be pushing the boundaries of what’s possible with apps and they will always need those apps to have access to the most amount of performance, even if it’s only for making the experience delightful. Because of this, browser apps will always be skating to where the puck used to be.

Reliably Unreliable

Trust. It’s trust that’s doing the dying here. I believe that when you go to a web app, your trust is undermined by the potential for any of the items mentioned above to happen. Someone could build the most amazing web app ever and they’d be battling our history with hundreds of other web apps that have let us down.

We’ve been conditioned for web apps to suck.

Conversely, people have also been conditioned by the fantastic experience of the App Store. They know that they can go there and find something they need, see reviews on it, get a modicum of confidence and download it the way they're used to. Anything outside this is now alien. People have learned to trust the App Store “Way of Things.” And they’ve learned that the apps they download from the App Store are not just easy to use, but delightful and fast and just “there.” In fact, people now take this all for granted. And none of that is just granted with a browser app.

Power to the People

Ultimately my biggest qualm with most arguments for building browser-only apps is that they seem to come from the perspective of what’s best for the DEVELOPER. When an organization is making the decision not to spend developer money on building native, what they’re saying to me is that they value development costs over customer experience. I believe to do it right, you should offer your app in the way people want to use it the most. That may mean doing it browser-only, but it usually doesn't. A business will always benefit from giving their customers a great (or insanely great) experience.


By writing this, it may seem like I’m taking sides in a flamewar. We love taking sides, don’t we? There is something very safe and reassuring about making a decision and joining our tribe of choice. We do it in politics, in religion, and certainly in technology. The debates over which programming language is the best are as old as our industry. So it’s no surprise that there are two distinct tribes out there pushing for their platform of choice: Native or Web.

Mysterious Trousers has always advocated the use of both browser and native apps. Web apps are actually our first love and we are able to clearly see both sides of the issue. There is a place for both. But as a business, we’re going to do what makes the best possible experience for the customer. Right now, that happens to be native first.

I may be wrong, but it seems like the voices of the browser tribe have quieted a bit in the last year. This is probably because so many companies are seeing the value in living happily in both camps. They’re practical businesses, making a practical choice.

Go to where the people are.

Take Your App to Eleven

In the interest of keeping it real, we built a little library for iOS devs that makes it easy to add a small visceral punch to your app. We hope you find it useful. We already have.

You can get it on GitHub right here.

Also, if you have Xcode and just want to play with it, it includes a simple UI for tweaking the settings and changing the animation. Just grab the package and run it in your simulator.

Visceral Apps and You


All of us have experienced the unique sensation of having our guts move from their normal resting positions. Whether from a roller coaster or a dive into a pool, it’s a shared human experience. In fact, as humans, we go to great lengths to feel extreme versions of kinetic energy and the exhilaration it provides.

The term "visceral" describes this sensation pretty well. Visceral refers to the gut, rather than the mind. Our brain may try to talk us out of jumping off a cliff, but as soon as we take that first step into the void, our guts take over. We respond with a rush of emotion and we can’t help but scream from terror or euphoria. It’s a purely visceral reaction.

That’s Telekinesis, Kyle

As humans, we also innately enjoy the release of built-up pressure. From a sheet of large bubble wrap, to the cracking of knuckles to sneezing. We can’t help but love the release of pressure and energy.

Our human affinity for this build-up and release also manifests itself in the way we relate to things outside of our body. We like explosions, videos of people being hurled into space and we can’t help but slow down to see the result of a car crash on the freeway. And when we were kids, we built a tower of blocks only so we could knock it down again.

Whether it’s happening to us or we’re just bystanders, as humans, we are captivated with the interplay between the build-up and the release; between potential and kinetic energy. And as app developers, we can leverage this interplay to enhance our apps.

It’s Got Beautiful Plumage

Angry Birds. Angry. Freaking. Birds. To me, it’s no surprise that this avian juggernaut is arguably the most successful mobile game ever. This game talks directly to the gut. It has everything we love in a visceral experience. It has the build up and release of pressure, the interplay between potential and kinetic energy and wanton destruction.

But Angry Birds isn’t the only example of this. When you look at some of the most popular software user experiences in recent years, you'll see a visceral pattern emerge.

Virtual Bubble Wrap

We take it for granted now, but when the iPhone first came out, the bounce at the end of a scroll pane was mesmerizing. I couldn’t stop playing with it. Heck, it was unique enough that Steve Jobs patented it.

A few years later Loren Brichter would take that initial rubber band interaction and make it even more visceral with “pull to refresh.” This is an action so deeply satisfying that it was copied endlessly and eventually adopted by Apple itself.

When the video for Clear came out, everyone talked about how beautifully minimalist it was and how incredible the gestures were. And while that’s all true, I believe that’s not what makes Clear so insanely satisfying. Just take a few seconds and watch the intro video again. Go ahead, I'll wait.

Man, if that isn't just a visceral app at its finest. It’s got build-up and release. It’s got destruction. It’s got the kinetic and the potential.

Ok, last example. Path is another gorgeous app. It’s visually stunning, it’s elegant, it’s the epitome of sweating the details. It was one of the first apps to really capitalize on the slide-out-from-the-edge menu. It has this rad little clock whose arms spin as you scroll. It has parallax. But even with all that, when everyone was talking about it, they kept mentioning the same thing. That slick little red plus menu in the corner. If you’ve used it, you know exactly what I’m talking about. Here’s a video if you don’t.

People love that menu. Everyone I know that has ever used Path loves that menu. It’s their favorite part of the whole experience.

I believe it’s because the “springy” animation creates a small visceral reaction in our gut. We see the result of built-up pressure in the way the icons spring out and settle into place. Tapping that icon actually releases endorphins.

All of the apps mentioned above exhibit that same kinetic/potential interplay. They’re the UX version of bubble wrap.

Ain’t That a Kick in the Head

For the past few years, I’ve been watching the buzz around various products and trying to figure out just what it was that made them so tantalizing. Obviously, great UI and beautiful graphics are important. The use of white space, typography and functionality are all critical. Great apps also have great attention to detail. It’s important to really nail each of these things.

But in addition to all this, there has been this intangible element I couldn’t put my finger on, until now.

So here’s my theory: I believe that introducing visceral elements into an app will take it past the point of just being awesome. It will make your app speak to the subconscious, built-in affinity that humans have for the physical properties I mentioned before. I believe that even if you designed the most perfect and useful app possible, that the act of adding in these visceral elements will make people love your app on an even deeper level.

Let me put it another way:

I believe when properly done, a visceral app actually causes your body to release endorphins.

I’ve heard people describe certain apps as being “alive” and I think this is precisely what they meant. Potential and kinetic. Build-up and release.

Mmmmmmm, endorphins.

Sound and Fury

Here are a couple of things to think about with regard to visceral apps…

I believe that the use of sound effects can enhance the visceral reaction, as long as they are subtle and can be turned off when needed. Think about bubble wrap. It’s great without sound, but the little pop makes it a hundred times better. In fact, we’re disappointed when the air rushes out rather than making that satisfying snap.

Also, if you can’t make the animation fluid for customers, it might be better not to use them at all. When the first Android phones came out, I read a slew of articles maligning the choppy scrolling animation (which they still haven’t really fixed yet). In contrast, Apple may not have nailed every interaction on the first version of the iPhone, but they certainly nailed this. The scrolling and its little bounce at the end was as smooth as butter from day one. I believe that by incorporating visceral elements and then failing to make them work actually has a subconscious effect in the other direction. It becomes a turn-off for people.

Wherein I Conclude

The great thing about this is that it can be applied to the off-the-shelf components as well as to fancy-schmancy custom ones. Heck, even with JavaScript, easing and other physical elements are relatively easy to apply. People want their bubble wrap, or to be more precise, their guts want it. And guts are hard to argue with.

Have fun out there folks and use your powers for awesome.