{{ !articles[0].partner.isSponsoringArticle ? "Platinum" : "Portal" }} Partner

Cross Platform Beats Native When Done Right

Published by
Reading Juhani Lehtimaki's posts on dzone in which he claims inferior results when using cross platform frameworks finally convinced me to write about this.

He has a point. Most developers look at Cross Platform tools as a means of saving money and cut corners when using them. Resulting in lower ratings and low quality apps.
However, there are great cross platform apps e.g. Music Cloud (LWUIT/Codename One based), Waze & Telmap (LWUIT 1.2, a pretty old version).

I won't talk about the frameworks Juhani mentioned, since I would tend to agree that they all fall into 1 of two categories: HTML or Lowest Common Denominator. Both are IMO terrible approaches for cross platform unlike Codename One which is radically different.

When users ask for Native apps they mean: High quality, fast app that received developer investment and QA. They aren't asking you to code your app in Objective-C or make it look like all the other apps.

Waze, looks nothing like a native app yet has a tremendous user rating. How come?

The developers took the time saved on porting & QA (which is faster since bug fixes are ported too) to deliver functionality. Functionality trumps everything.

When creating a native app you are giving up on some functionality and on niche platforms.

The problem is that throwing money/developers at the problem of building mobile apps doesn't make it scale better/faster. So even if you have an unlimited financial budget you will end up with less functionality and longer release cycles when doing native coding.

A friend recently told me: "The only reason anyone ever does cross platform is to save money".

Unfortunately that's usually true, but my response was: "They shouldn't. They should use cross platform to provide a distinct experience and more features.".
{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks