Working With The Native Grain
One question that keeps recurring during the initial phases of mobile application projects is whether the user interface should look the same across all platforms. As tempting as it might be the pros of remaining true to a platform and working with its grain instead of against it usually outweigh the cons in the long term.
It is easy to understand the temptation of taking a “design once, deploy anywhere”-approach when creating applications for several platforms. Not only should it slash costs. It should also help build a consistent brand experience for the company, not the platform provider i.e. Apple or Google. It also ought to be easier for help desk and support issues. It is however enormously beneficial to adhere to the guidelines of the platform you are designing for. Three important areas that might suffer by diverting from platform guidelines: the user, the cost and the speed.
A native application is different to a web app. In contrast to the web, each platform has its particular design language, interaction patterns, conventions and feature sets. By being platform agnostic and not adhering to platform guidelines (see iOS HIG and Material Design Guidelines) you run the risk of confusing every user on every platform with your application. This leads to usability issues, which leads to frustration that potentially hurts profits.
A common misconception is that Android users are just disillusioned iOS users. The reality is that most Android users are happy with their choice. Many of them regard “iOS-ish” applications on the Android platform as clunky and freakish in the same way an application mimicking Windows just feels wrong on OS X.
Each native platform provides its developers and designers with very competent toolboxes that consists of UI components, platform specific technologies, guidelines, metaphors and best practices etc. These toolboxes are well thought-out, thoroughly tested, enables system wide accessibility features, recognised by its users and — last but not least — free.
Of course there will be cases where the standards simply won’t cut it. This will likely be frequent interactions (e.g. the swipe gesture in Tinder) or business critical interactions (e.g. onboarding new users). Custom components that serve a business goal thru honed, unique and joyful key interactions can elevate the application immensely.
But by making every single component custom you won’t benefit from the freebies provided to you by the makers of the platform. Instead you will end up spending time on investigating why your custom components break when new screen sizes, new pixel densities or new versions of the platform are introduced. Time you should be spending on improvements, new features, branching out to new platforms and devices.
Platforms twist and turns. They get redesigned and improved with new features regularly. It takes less effort for designers and developers of apps that work with the native grain to adapt new aesthetics like the ones introduced by iOS 7 and Google Material Design and to benefit from new features like iPad multitasking, widgets and universal (combined iPhone and iPad) apps. By adhering to platform guidelines more time can be spent on innovating and incorporating relevant features as the platform takes new technological leaps.
Maintaining brand consistency
Your app should reflect your brand and by consistent use of colours, fonts, tone of voice, images, audio, and illustrations across platforms, you can achieve a unified experience without re-inventing the UI.
Dropbox, the excellent file hosting service, is a good example of a company that maintains a unified brand experience on multiple platforms while still adhering to platform guidelines. They accomplish this by consistent use of colours, illustration style and tone of voice etc.
“But” — you might think — “Dropbox provides a cherished service in a way that we won’t. This doesn’t apply to us.” If you’re not planning on building something that people will treasure there’s no amount of interesting UI that will make them continuously return to your app.