Lately, I’ve received several similar questions from developers, and in response, I’ve decided to write some words about why one size doesn’t fit all, i.e. why you cannot create one app that would beautifully run on all phones. (My post on a related topic is here.)
The first thing that comes to my mind when hearing “one size fits all” is the screen size.
If you create an app with LCDUI, it will run on most of the current (and many of the older) Series 40 phones without major changes. This is because the components are designed to adjust to different platform releases, screen sizes and orientations within the target phones. So the coverage is pretty good! But the minute you go for a custom UI, the game changes. You are responsible for making everything work seamlessly and looking perfect.
Nokia Asha/Series 40 basically has 3 different touch screen and few non-touch screen sizes. Windows Phone 8 is also restricted to few screen sizes only.
Now, if you have initially designed your app for the high-end phones or for the high end tablets, you can (and should) use all the power and all the pixels. But you will most likely run into difficulties when you suddenly have a significantly less powerful processor and/or a different screen size. For example, think of a car-race game where you might need both hands, one to steer the car and the other to accelerate and to brake. This works great on a 5” phone or 7” tablet, but not on a 3” or 2,6” phone since all the space is used for the controls and no screen real-estate is left to watch the actual game canvas (even in landscape).
The second thing is that not all phones have the same technical capabilities, such as Wi-Fi or NFC. However, there are also simple budget restrictions such as available memory. Windows Phone may count this in GB of RAM; Series 40 in MB or KB. Power consumption is also a hot topic. Some Series 40 phones count their standby time in weeks, other platforms might count theirs in hours. So you must also optimize your app with respect to power consumption. As an example, you could use sensors less frequently or only when needed.
When the target phone offers some specific capabilities that could make your app even more attractive, try to take advantage of them instead of settling for the version you did for another phone without this capability. That might be the exact trick to make your app superior to your competitors!
The last but definitely not the least thing is UI style. Looking purely at the UIs, there are very different design languages found e.g. from Windows Phone 8 and Nokia Asha UI. Windows Phone 8 is very much text based and the UI components are very simplistic. Nokia Asha UI and Series 40 are more detailed and they are more trying to reflect the actual metaphor (e.g. a button sinking into the UI when being pressed).
Windows Phone 7 and 8 are very focused on the panoramic view (flick left/right to see the next tab basically). In Nokia Asha and in Series 40 the flick left/right does not exist, again because of taking the limited screen real estate into account and to ensure that apps also run on non-touch devices, since these basically do not know the flick gesture. There is simply no hardware key to map to the flick gesture; the navigation key is reserved for moving left/right inside each view.
When you build an app, we highly recommend that you follow the style guide of your target phone, so that people do not have to learn your new style—because they won’t. They will simply take the app from your competitor who pays attention to the style and dump yours.
To sum up, I understand and sympathize with the added work of creating multiple versions of your app. But you also must sympathize with your user who might now know what to do with your app if it doesn’t behave as she thinks it should! Your users usually each only have one phone (instead of the 10 or 20 you are developing for). And they don’t want to settle for compromises on that phone. It really doesn’t make a difference to them if the app only works in their phone, or also in others. In the end, they just want the optimal user experience for their phone.
That’s why I now claim that the one who wins the most users and best ratings is the one who makes the extra effort of optimising for different UI styles, technical capabilities, and screen sizes, instead of compromising. Do you want to be the one who loses customers just because you wanted to tried to make one size fit all?