Pages

Thursday, 29 March 2012

Multi-platform Frameworks Destroy Android UX

To write a native app or web app is a very important decision at the start of any mobile project. There's place for both. Native has some benefits that web app doesn't and vice verse.

But then there are the hybrid app frameworks. The idea of a hybrid app is to bring the strong points of each approach into one app. Probably the best known hybrid app frameworks are the PhoneGap and the Titanium Appcelerator. Both of these frameworks promise multi-platform in essence web apps packaged into a native app package although Appcelerator takes the packaging a step further by compiling some controls to platform native components.

You will see differences between cross-platform apps and native Android apps, especially in user experience. For example, you might notice menus at screen bottom, no list selection highlight, and tiny buttons, especially on high-resolution Android devices.

So being cross-platform might mean that you get another platform’s look and feel on Android. Whether time to market and cross-platform benefits outweigh user experience polish -- we’ll leave that choice up to you.

I think this is the key issue. I've been following the PhoneGap and Appcelerator for some time now and my skepticism of the approach is just grown stronger. At this point my recommendation would be to stay away from these frameworks. The obvious fact is that the hybrid approach does not bring the best features of mobile web apps and native apps but instead the worst. This approach simply does not work.

PhoneGap
Let's take a look at PhoneGap. They have provided a helpful app showcase page. If we take a look at the apps listed there at the time of this writing there are seven apps from which only one is available on Android and iOS. The only multi-platform app they have chosen as a featured app is currently rated with 3.3 stars on Android market. The app developer has even chosen to use iPhone screenshot as app screenshots on the Google Play Store...

The iPhone screenshots don't tell much how the app works on Android. This is what you will see if you launch the app on a Galaxy Nexus. Note that this app is not selected by me but it is a featured app by PhoneGap.

Appcelerator
Appcelerator is not doing much better. They also have an app showcase page. Unfortunately they don't give direct links to Google Play (even though they're using the android market graphics) and not all apps that are listed as available for Android can be found from the Play Store. I was able to find one app that is claimed to be available on multiple platforms. I'm afraid that the app isn't doing well either. It currently has 2.5 star rating. But they at least are using Android screenshots.

A user review from the market:

Horrible app not worth the time... Site runs better than the app.

Crashesall the time. On screen keyboard doesn't work well. Needs some major tweaking. As of late it locks up on the main screen and restarts app. Then force closes. Uninstall...

Multi-platform apps do not exist!
In short, targeting multiple platforms with one app does not work. If you don't want to or don't have the budget to target the platforms with native apps build a web app! User experience on mobile is too important to be ignored. Same app on multiple platforms will feel wrong on all of them.

In my opinion use of these frameworks can be justified as long as they're not used a multi-platform frameworks. I suspect that it is possible to build apps using them that feel right on one platform. And as they use web technologies as their programming languages it can sometimes be easier to find developers for using them than native app developers. In these cases pick a platform you write the app for!

Reason why multi-platform approach is doomed
What causes the bad user experience in these apps? What is wrong with them?

Here's a simple list of things that are likely to cause problems:

Wrong UI patterns (not using action bar etc).

Menu system does not work.

Gestures work differently.

Native components often work incorrectly.

No correct graphics for multiple pixel densities.

No integration to Android platform (intent system).

No correct layout scaling.

No alternative large display layouts.

I'm open to be educated
But maybe I'm wrong.. I have been trying to find apps that would prove me wrong for some time already. I just haven't managed to find any that are even close. If you know an example of any good multi-platform apps that run on Android and iOS please leave a comment! I'm happy to reconsider my position if given proof that I'm wrong. Until that I will maintain my position.