Una parte importante de los proyectos que nos llegan a Reboot se basan en el desarrollo de una aplicación móvil. Cuando nos reunimos con el equipo promotor, en muchas ocasiones tienen ciertas ideas preconcebidas sobre por qué desarrollar la app de forma nativa es la mejor opción.

Nosotros tenemos una opinión fuerte sobre este tema: creemos que en la gran mayoría de ocasiones tu negocio no necesita una aplicación nativa. De hecho, hay muchos falsos mitos e ideas equivocadas sobre el llamado "desarrollo híbrido". Hoy vamos a tratar de desmontar algunos de ellos.

  1. Conseguirás un desarrollo más económico
  2. Podrás lanzar tu app al mercado más rápido
  3. Menor mantenimiento = menos quebraderos de cabeza
  4. Tu app tendrá el mismo rendimiento que una app nativa
  5. Tus usuarios no notarán la diferencia con una app nativa
  6. Ejemplos de apps populares no nativas
  7. Frameworks para desarrollar apps no nativas
  8. En qué casos desarrollar una app nativa
  9. Conclusiones

Conseguirás un desarrollo más económico

Este suele ser uno de los aspectos que más preocupa a un negocio cuando se plantea desarrollar su propia app. Desarrollar una aplicación no es barato. Hay muchos procesos y tareas que deben cuidarse para lanzar un producto de calidad, pero dentro de esta complejidad el coste del desarrollo híbrido es significativamente inferior al del desarrollo nativo.

La razón es muy sencilla: tenemos una única base de código. Este lo simplifica todo enormemente y, en lo que repercute al coste, significa que no necesitaremos dos equipos especialistas -iOS y Android- sino que necesitaremos únicamente un equipo especialista en el lenguaje o framework en el que se está trabajando.

Coste de desarrollo de una app

Podrás lanzar tu app al mercado más rápido

No debemos olvidarnos que el objetivo de desarrollar una app para nuestro negocio es que esta vea finalmente la luz y podamos ponerla en manos de nuestros clientes. En este sentido, la velocidad para llegar al mercado es fundamental, tanto si hablamos de una startup como de una gran empresa. Cada semana que nuestra app no está siendo utilizada por nuestros clientes supone un coste de oportunidad altísimo.

Derivado del punto anterior, el tener una única base de código para iOS y Android nos permite conseguir tiempos de desarrollo mucho más acotados, ya que no tenemos que multiplicar x2 el trabajo en las dos plataformas que queremos lanzar.

Al final todo se traduce en una mayor agilidad para lanzar, mantener y evolucionar nuestro producto. Al tener un solo equipo encargado de la aplicación móvil todo se simplifica enormemente, se reduce la fricción y se mejora la contribución de todo el equipo.

Tiempo de desarrollo de una app

Menor mantenimiento = menos quebraderos de cabeza

Las ventajas de tener una única base de código no sólo juegan a nuestro favor en cuestión de costes y tiempos de desarrollo menores. Una vez tenemos nuestra app en el mercado no podemos olvidarnos de ella, hay que mantenerla. Esto significa, por ejemplo: mantener al día las librerías, solucionar bugs y errores detectados por los usuarios, incorporar nuevas funcionalidades, etc...

Cuando tenemos una aplicación nativa todo nuestro mantenimiento se multiplica x2. Y eso también afecta al coste de dicho mantenimiento. Otro de los posibles problemas es perder a la persona o personas encargadas de una de las plataformas y que esta se quede sin mantenimiento ni evolución.

Cuando centralizamos nuestra aplicación en un único equipo resulta más sencillo mantenerla o buscar un reemplazo de forma ágil. Por ejemplo, si utilizamos un framework basado en web puede ser mucho más fácil encontrar desarrollares web que podamos migrar a mobile en un menor tiempo.

Coste de mantenimiento de una app

Tu app tendrá el mismo rendimiento que una app nativa

Uno de los principales miedos de nuestros clientes cuando les planteamos la opción de desarrollar su app con React Native es que "no funcionará igual", "funcionará más lenta" o directamente "funcionará mal". Esto es un mito muy extendido, seguramente alimentado por empresas a las que sí les interesada vender perfiles especialistas y así poder engrosar la factura final.

Actualmente los frameworks que se utilizan para desarrollar aplicaciones móviles de forma no nativa han evolucionado muchísimo. Esta creencia de que las apps híbridas tienen un peor rendimiento vienen de los días donde se utilizaba Ionic, Cordova o PhoneGap.

Actualmente una aplicación con React Native o Flutter ofrece el mismo rendimiento que una app nativa en la gran mayoría de los casos. Además, es posible desarrollar ciertos componentes de forma nativa para solucionar problemas de rendimiento concreto. Por ejemplo, aquí los chicos de Shopify nos explican cómo desarrollaron un Bottom Sheet nativo dentro de una app con React Native.

Rendimiento app nativa vs híbrida

Tus usuarios no notarán la diferencia con una app nativa

Otro falso mito muy extendido es que los usuarios "notarán" que no se trata de una aplicación nativa. Aquí entramos directamente en el terreno del diseño de interfaz e interacción. Muchas aplicaciones híbridas son desarrolladas sin tener en cuenta que iOS y Android tienen directrices de diseño muy diferentes.

Un caso muy común es el de una empresa que desarrolla una aplicación híbrida utilizando una librería como Material Design o basando la interfaz en patrones de navegación e interacción propios de Android. En este caso está claro que el usuario de iOS notará la diferencia y sabrá que algo está mal.

Por este motivo nosotros no concebimos desarrollo y diseño de forma independiente. Aunque se trate de una única base de código, el diseño, la interacción y la navegación se tienen que adaptar a cada plataforma a medida.

Ejemplos de apps populares no nativas

Todo esto está muy bien, pero realmente quién están utilizando este enfoque híbrido en el mercado para sus aplicaciones. Pues realmente vemos que algunas de las empresas tecnológicas más grandes del mundo ya han adoptado este enfoque y la tendencia apunta a que muchas más se sumarán en el futuro.

En esta lista encontramos aplicaciones que a todos nos sonarán:

Tencent usa Flutter en diferentes aplicaciones de la compañía incluyendo AITeacher, Now Live, K12, Mr. Translator, QiDian y DingDang.

Tencent React Native apps

Instagram utiliza React Native en algunas de las funcionalidades de la app para poder lanzarlas en un menor tiempo y testearlas con su gran base de usuarios.

Instagram React Native

Tesla utiliza React Native para su aplicación principal con la que poder controlar el coche y su estado.

Tesla React Native

Discord utiliza React Native para la aplicación en Android y iOS.

Discord React Native

Shopify utiliza React Native en su nueva aplicación de Shop en la que poder comprar y llevar el seguimiento de tus pedidos.

Shopify React Native

Skype utiliza React Native en su aplicación oficial para Android y iOS.

Skype React Native

Uber Eats utiliza React Native para su aplicación móvil con la que poder pedir, pagar y llevar el seguimiento en tiempo real de tu pedido.

Uber Eats React Native

Pinterest utiliza React Native en sus aplicaciones oficiales.

Pinterest React Native

Frameworks para desarrollar apps no nativas

Hoy en día existen diferentes frameworks para desarrollar aplicaciones móviles no nativas. Algunos de los más adoptados tienen grandes compañías detrás como es el caso de React Native con Facebook, Xamarin con Microsoft o más recientemente Flutter con Google.

  • React Native. Este framework fue creado por Facebook y lanzado en 2015. Permite desarrollar aplicaciones para Android, iOS, macOS, tvOS, AndroidTV y Windows utilizando JavaScript y accediendo a los componentes y APIs del sistema.
  • Flutter. Se trata de un SDK creado por Google y lanzado en 2017. Permite desarrollar aplicaciones para Android, iOS y Web. Cuenta con el Flutter engine escrito en C++ que proporciona un sosporte de bajo-nivel para renderización. Por otro lado tenemos la Foundation library escrita en Dart que porporciona clases y funciones básicas para desarrollar nuestras aplicaciones, así como APIs para comunicarse con el motor de Flutter.
  • Ionic. Fue lanzado originalmente en 2013 y es un SDK open-source creado por Max Lynch, Ben Sperry y Adam Bradley de Drifty Co. La versión original está construida sobre AngularJS y Apache Cordova, pero recientemente se escribió de cero para basarse en Web Components, de forma que el usuario puede escoger libremente el framework para utilizar en el front como Angular, React o Vue.
  • Xamarin. Xamarin fue la empresa creados del framework al que da nombre y adquirida porteriormente por Microsoft. El framework está escrito en C# y permite crear aplicaciones móviles para Android, iOS y Windows.

En qué casos desarrollar una app nativa

¿Significa esto que nunca es recomendable desarrollar una app nativa? En absoluto. Según nuestro criterio, hay 3 escenarios donde tiene sentido plantearse el desarrollo nativo.

  • Apps que demanden muchos recursos y rendimiento. Aquí hablamos del 5% de las apps que necesitan acceder a recursos gráficos del sistema de forma intensiva como son los juegos o procesar un gran volumen de datos.
  • Cuando ya tienes un equipo o experiencia en desarrollo nativo. Si este es tu caso, puede tener sentido aprovechar ese conocimiento para desarrollar y lanzar el proyecto de forma más rápida.
  • Si tienes muy claro que tu app va a estar sólo en una plataforma específica.

Conclusiones

En Reboot creemos firmemente que si tu negocio no se encuentra en uno de esos 3 escenarios, no tiene ningún sentido plantearte un desarrollo nativo.

Nuestro framework predilecto para construir apps cross-platform es React Native por muchas razones, algunas de ellas las hemos comentado en este post. De forma resumida, nos permite aplicar nuestra experiencia y conocimiento en desarrollo web con React a crear aplicaciones que funcionan y se ven como apps nativas.

Si no te lo crees aquí tienes algunos ejemplos de apps que hemos desarrollado con React Native.

  • Billbot: gestor de suscripciones y gastos recurrentes (iOS | Android)
  • Natacasa: ecommerce de alimentación (iOS | Android)

¿Cuál es tu opinión? ¿Apps nativas o híbridas?