Confession time, I am a real native snob.
My recollection of Windows is that this is less of an issue, but on a Mac, if I get even a whiff of Java or cross-platform anything, I’m out. For me it was about aesthetics more than anything. Mac native apps always had that lovely gray tool bar, with pretty little icons, and those wonderful, clickable buttons.
Non-native apps would have these horrendous white toolbars with ugly little pixelated icons and awful looking buttons. Even worse were the apps that tried to emulate a previous version of the Mac, so while your OS would get more and more refined, that app would be stuck in a timewarp because its developers spent so long meticulously re-creating every element of a now defunct OS.
When it came time for me to design an app, I had a choice of going “native” or not. In my case, however, it wasn’t about being truly native because everything I was doing would live in the DOM. The choice really was whether or not I wanted to mimic the native styles of a certain platform.
To my rescue came a variety of UI frameworks that aim to bridge the gap between web and native. All of these projects are extremely impressive and I think the intentions are good, but I’ve started to question the idea that copying the native look is always best.
Historically, primarily in the early days of Mac OS X, native applications actually meant more than pretty, they meant performance. An application built native to your platform meant it was using all the APIs and system frameworks that were optimized both for speed and beauty. Lately, however, we are starting to see UIs on the desktop that are breaking from that trend.
One big example for me is Sublime Text. Sublime Text is a cross-platform text editor that, while it does use a native shell, has a look that is wholly separate from the OS. There are various themes one can install to get it looking closer to what’s around it, but the buttons, menus, sidebar, and preferences are all non-native.
It uses an almost wholly keyboard based action system and requires editing JSON to manage preferences. But Sublime Text, for all its quirks, is an amazing text editor. I spend hours and hours and hours using it and I never feel frustrated or limited by the interface. And when I discover some cool new shortcut or plugin that makes my job even more efficient, I can’t help but love this awkward beast even more.
Another thing to consider here is the rise of touch-based mobile gaming. Games on smartphone platforms absolutely dominate the app landscape, and nobody would consider a “native” UI for a game because, how could there be? A game’s menus, buttons, fonts, textures, colors and animations all need to be of the game’s world. It would be impossible to extract a generic game interface, because every game is unique in some way, and so should be its interface.
Our multi-platform, multi-device world has led to a lot of possibilities in terms of UI design and exploration. Why can’t a UI be a part of your brand? Why shouldn’t your UI look the same on Android as it does on iOS? I think early cross-platform desktop apps really soured a lot of us on the idea, but mobile is a clean slate in many ways. Mobile apps typically launch full screen, so your UI isn’t competing with other OS chrome around it, it becomes the experience.
UI aside though, there will always be a reason to go native. With native you gain not only speed, but also familiarity with previously understood interactions. This includes things like icons, gestures, and content manipulation. My main question here is whether or not the apps on the web should be trying to so closely mimic native interfaces via non-native methodology.
The web is a unique platform that allows us to have unprecedented reach across devices and desktops, so maybe it’s time to approach our UIs in a unique, non-native way.