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.
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.
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 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.