Every so often I see articles and news blurbs about yet another product that allows people to create a mobile app once and automagically publish it on all of the major smartphone platforms. Recently, I've seen lots of buzz around PhoneGap becoming fully-featured in regards to Windows Phone. And just today I saw an article on Slashdot about Yahoo! getting into this space. Although, as a developer and a techy, I love the idea of being able to write an app and quickly have it available on multiple platforms, I must say I do not approve of actually doing it.
Now let's discuss the real issue. Arguably the most important aspect of a mobile app is the user experience. If the app is slow or unresponsive or crashes a lot, that will be a major detriment to a user's enjoyment of said app. Depending on the severity of the issues, a user's response could range from opening the app less frequently to actively avoiding opening the app unless really necessary to just uninstalling the damned app. Of course, all of that is likely to be combined with negative reviews.
So why does user experience suffer when using "write once, run everywhere" tools? Performance, as discussed above, is certainly a factor. But another factor is how well the app meshes with the rest of the platform. I don't just mean taking advantage of the appropriate platform APIs, which is itself problematic when they are so disparate among the different platforms. I mean the look and feel of apps. That's right, the stuff that so many of us developers hate dealing with, the interface and user interaction. Take a look at how the majority of iPhone apps look. The common buttons, the common paradigms. Now look at Windows Phone apps. (Android UX is sort of all over the place, especially with the radical transition Ice Cream Sandwich brings, so it doesn't make for a good example.) How can an app appear beautiful on Windows Phone when it looks like an iPhone app? All that unnecessary chrome, the radically different tab interface instead of pivots, and of course the back button on the screen, all seriously detract from the overall app experience.
But why do so many of these tools pop up? Because they sound like an incredibly attractive proposition. Lazy developers (and I do not use the term lazy in a negative light here) love it because they can concentrate on making more apps in less time. Companies with tight finances can afford to release apps without spending a fortune on development. These are valid reasons, but if you have the option to make proper native apps, you should absolutely make that choice. Your users will thank you.