Cómo elegir entre RubyMotion, React Native y PhoneGap

PhoneGap le permite crear aplicaciones web móviles: la aplicación se ejecuta en un navegador móvil (WebView), lo que puede estar bien en algunos casos, pero en última instancia no proporciona el mismo rendimiento que las aplicaciones nativas. Si desea hacer una gran experiencia de usuario, argumentaría en contra de usar PhoneGap (o cualquier otra biblioteca web móvil). La aplicación móvil original de Facebook fue escrita como una aplicación web móvil, y el rendimiento fue tan pobre que eventualmente lo reescribió completamente en nativo.

React Native todavía es muy nuevo, pero es mi favorito de las tres opciones. Se ejecuta como una aplicación nativa y ejecuta JavaScript en JSCore (entorno JS de iOS). Si está familiarizado con React (o prefiere JS como idioma), se sentirá muy cómodo escribiendo una aplicación React Native. Sin embargo, tenga en cuenta que la biblioteca todavía es muy nueva (de código abierto hace menos de 2 meses), todavía está evolucionando fuertemente (a veces puede romper la API) y actualmente solo está disponible para iOS (Android probablemente llegará este verano). Además, React Native intenta estar lo más cerca posible del entorno real para que pueda combinar los componentes React Native con los componentes nativos (ObjectiveC / Swift). También significa que en realidad necesitará tener bases de código separadas para las aplicaciones de iOS y Android porque la capa de vista asigna 1: 1 a los componentes de vista nativos de la plataforma respectiva.

No tengo ninguna experiencia con RubyMotion, pero es una opción interesante si trabajas mucho con Ruby. A diferencia de los dos anteriores, RubyMotion compila de forma cruzada el código que escribe en el código nativo, por lo que lo que se ejecuta no es lo mismo que escribió. Dicho esto, RubyMotion es un proyecto bastante establecido que ha existido por un tiempo, por lo que tienen buenas herramientas para ayudarlo con la depuración y las pruebas que ayudan a mitigar el nivel de abstracción.