¿Cuál es la principal diferencia entre Cordova y la plataforma móvil nativa?

La diferencia de “uno importante”?

Que una aplicación Cordova puede ejecutarse en Windows, Mac, iPhone, iPad, Android, Windows Phone y otras plataformas.

Una aplicación móvil nativa simple se ejecutará exactamente en una plataforma.

Esa es la diferencia más crítica entre los dos.

Muchas de las otras diferencias comúnmente citadas están relacionadas con el rendimiento o el aspecto de los controles (nativo versus personalizado).

En mi experiencia, un desarrollador sólido puede crear una aplicación móvil con Cordova que tenga un rendimiento indistinguible del de una aplicación nativa. El problema es que Cordova es fácil de usar, y obtienes muchos desarrolladores junior que crean aplicaciones en él. Y los desarrolladores junior son capaces de destruir el rendimiento de cualquier aplicación.

En cuanto a los controles nativos, esa es una decisión estética. La mayoría de las aplicaciones más populares usan una máscara personalizada de todos modos. Estoy escribiendo esto en la aplicación Quora, y no veo ningún control nativo en la pantalla. La aplicación de Facebook es similar. Dada la popularidad del skinning, realmente no entiendo la obsesión por los controles nativos, no cuando lo primero que hacen muchas aplicaciones es personalizar el aspecto de todos modos.

Una diferencia que creo que es relevante es que las plataformas nativas requieren que uses tipos estáticos. Creo que el desarrollo y el mantenimiento a largo plazo de un proyecto se mejora enormemente mediante el uso de tipos estáticos. JavaScript no los tiene, pero TypeScript sí, y puede usar TypeScript con Cordova, por lo que lo recomendaría.