App Development

Xamarin vs. Cordova / PhoneGap

When developing a cross-platform app, there are a few solutions that offer a single codebase to cover all platforms. We are frequently asked about Xamarin, our opinions on which we’ve covered previously , and PhoneGap / Apache Cordova.

Cordova is an open-source mobile development framework that allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development. It uses wrappers targeted to each platform and relies on standards-compliant API bindings to access each device’s sensors, data, and network status. These wrappers are usually the platform’s native Web Views. This presents Cordova’s greatest strength and its greatest weakness.

By utilizing standard web technologies controls, Cordova provides a comfortable environment for web developers looking to transition their skills to making a mobile app. It also provides a single code base across all platforms, which is a selling point against native development, but only gives it a slight edge against Xamarin development, where UI is usually written on a per-platform basis.

But using HTML as a rending platform is also a major disadvantage of Cordova and PhoneGap. HTML web pages cannot use native interface elements or transitions without using a pre-written Cordova plugin, a third-party UI library, or by developing a plugin yourself. In general, any third-party library, especially those implemented in pure JavaScript, are going to lean toward one platform UI or the other, not to the UIs that are native to the target platform. It is difficult (if not impossible) for Cordova / PhoneGap apps to be both cross platform and leverage familiar native platform interfaces.

Xamarin, on the other hand, compiles to native code and uses native APIs to display all UI. This means that a well-written Xamarin app should take advantage of all of the platform’s common interface paradigms and best practices. Well-written Xamarin apps should be indistinguishable from their native counterparts, and easily utilize recognizable native platform interfaces.

Our Recommendation

Our general recommendation is that utilizing a platform’s native user interface elements and APIs is always preferable when creating a user-installed app, which Cordova makes incredibly difficult. For that reason, to achieve the kind of high level, best-in-class user experiences our clients demand, we typically recommend pure native development or Xamarin over hybrid solutions like Cordova.

Moving from Monolith to Microservices Architecture

When a client decides to move from a monolith platform to microservice architecture,...

Read the article