Icons/Others/Logistic
Tecnología
Tiempo de lectura: 6 minutos

Comparativa React Native Vs Flutter, ¿Cuál es mejor?

En este artículo nos vamos a centrar en las tecnologías híbridas que se compilan en código nativo, y entre las más conocidas destacan dos: React Native y Flutter. Y la gran pregunta es: ¿Cuál es mejor? La respuesta rápida es: Depende.

Primero habría que tener contexto sobre qué tecnologías se usan para el desarrollo de aplicaciones móviles. Hay dos maneras de desarrollar una aplicación: con tecnologías nativas o con tecnologías híbridas. La gran ventaja de éstas últimas, es que con una misma base de código se puede desarrollar para diferentes sistemas operativos, reduciendo así el tiempo de desarrollo y teniendo un resultado como si fuera nativa.

Antes de empezar con la comparativa, vamos a poner un poco de contexto sobre los dos frameworks.

 

Introducción a React Native

React Native es un framework de código abierto creado por Facebook para desarrollar aplicaciones para Android, iOS, macOS, Android TV, Web y Windows.

El propósito del framework es sustituir los componentes HTML de React por unos componentes que nos ofrece React Native para, en lugar de ser ejecutados en un navegador, correr directamente sobre las plataformas móviles nativas. Esto quiere decir que realmente obtienes una aplicación real nativa.

 

Introducción a Flutter

Flutter es un SDK desarrollado por Google para crear aplicaciones móviles tanto para Android como para iOS. Realmente Flutter fue desarrollado como un software para uso interno dentro de la compañía pero al ver su potencial, decidieron lanzarlo como proyecto de código abierto en 2017. Además, con Flutter también es posible desarrollar aplicaciones Web y de escritorio, aunque estas funcionalidades están en fase beta y no es una opción muy recomendable.

Ahora que ya sabemos algo más sobre estas dos tecnologías vamos a analizarlas un poco más en detalle punto por punto y finalmente sacaremos unas conclusiones.

En estos últimos años, la comunidad de Flutter ha crecido mucho pero la realidad es que cuesta bastante encontrar desarrolladores experimentados en Flutter y Dart. React Native tiene la gran ventaja de que se desarrolla con JavaScript o TypeScript que es probablemente el lenguaje de programación más popular actualmente. Esto hace que sea mucho más sencillo contratar un desarrollador con experiencia en JavaScript o en otros frameworks de JavaScript y su curva de aprendizaje va a ser mínima por lo tanto el grupo de desarrolladores entre el que elegir al contratar es mucho mayor con React Native.

 

Trabajo en equipo y experiencia dentro de una empresa

Un punto muy importante a tener en cuenta al elegir con qué tecnología vamos a trabajar es el compartir código, conocimiento y desarrolladores, y esto es una gran ventaja de React Native frente a Flutter. 

React Native está basado en el framework React, por lo que si la versión web está hecha en React, se va a reducir mucho el tiempo de desarrollo al crear la aplicación con React Native, ya que compartirá toda la lógica y solo habría que ocuparse de la parte visual. Compartir código entre las aplicaciones,  además de reducir el código y los tiempos de desarrollo, también va a simplificar su mantenimiento a largo plazo.

Más allá de compartir código, también es una gran ventaja de React Native poder compartir conocimientos entre diferentes equipos. Si por ejemplo hay un equipo de backend con Node.js, desarrolladores iOS/Android y desarrolladores Web, pueden compartir conocimiento de JavaScript o incluso se podrían compartir desarrolladores entre diferentes proyectos con una curva de aprendizaje mínima.

 

Experiencia de desarrollo

Configurar el entorno de desarrollo de Flutter por lo general es más sencillo que React Native. 

Flutter tiene herramientas muy potentes para debuggear el código e inspeccionar el árbol de plugins gracias a su CLI, aunque React Native CLI carece de ciertas funcionalidades frente a Flutter.

La experiencia de actualización con Flutter, muchas veces puede resultar mucho más sencilla que con React Native CLI.

Hay que tener en cuenta que con React Native tenemos Expo CLI, diseñado para mejorar enormemente la experiencia de desarrollo. La experiencia de actualización de Expo también es excelente y no tiene nada que envidiar en este sentido a Flutter.

La experiencia de desarrollo con Flutter es uno de sus puntos fuertes, pero React Native está dando una buena subida en este aspecto y Expo le da un gran impulso.

 

Lenguaje de programación

 

Qué es mejor, React Native o FlutterFlutter utiliza el lenguaje de programación Dart, un lenguaje orientado a objetos que ofrece una sintaxis muy limpia.

React Native utiliza JavaScript/TypeScript que es uno de los lenguajes más usados actualmente.

Gracias a su gran comunidad de desarrolladores, React Native tiene una gran cantidad de bibliotecas de terceros, esto es un gran pro de React Native frente a Flutter, ya que a pesar de tener muchas librerías propias de Flutter, al no tener una cantidad de empresas tan grande que se animen a desarrollar sus proyectos con esta tecnología, existen menos bibliotecas de terceros.

Rendimiento

Este puede ser uno de los puntos más complicados de comparar en cualquier software, y especialmente con Flutter y React Native. Ambas tecnologías son lo suficientemente potentes en la mayoría de situaciones si los desarrolladores han optimizado correctamente la aplicación.

Realmente no hay un claro ganador para este apartado, el rendimiento final de la aplicación va a depender de lo que el desarrollador optimice la app y las buenas prácticas que use para mejorar su rendimiento.

Además, desde hace unos meses en React Native está disponible el mismo motor de renderizado que usa Flutter.

Interfaz de usuario

Flutter renderiza la interfaz de usuario usando Skia, de esta manera unifica su apariencia en todas las plataformas optimizando así su rendimiento.

React Native sin embargo usa UIKit en iOS, en Android usa su sitema de diseño y el DOM en la web. Esto quiere decir que se pueden crear aplicaciones de aspecto similar pero adaptadas a cada plataforma.

Este punto React Native es claramente superior ya que es más importante es tener una interfaz que agrade a los usuarios en cada plataforma que una experiencia unificada en todas las plataformas.

Si tienes cualquier consulta o necesidad, escríbenos y te ayudaremos.

Integraciones con la plataforma nativa

Flutter tiene un modelo de integración con la plataforma nativa bastante bueno al que llaman `platform channels` que permite escribir código en Swift y Kotlin. Además la documentación de Flutter en este aspecto es muy buena.

En React Native hay una curva de aprendizaje mucho mayor para crear código específico en las diferentes plataformas.

 

Actualizaciones dinámicas

Esto no es algo que se use en todas las empresas o en todos los proyectos, pero React Native tiene la posibilidad de actualizar las aplicaciones de manera dinámica sin tener que enviar a App Store o Play Store y pasar por el proceso de aprobación. Como por ejemplo con Code Push. Esto es algo que no tiene Flutter y tampoco está en su roadmap a un futuro.

 

Empresas que lo usan

React Native fue creado por Facebook y muchas de sus aplicaciones más famosas están hechas completamente o parcialmente con React Native como Instagram o Messenger. Una empresa que también está invirtiendo mucho en React Native es Microsoft reescribiendo muchas de sus aplicaciones en React Native y creando un montón de herramientas y bibliotecas para ello. Quizás una de las más famosas es la aplicación principal de configuración de Windows, que está desarrollada parcialmente en React Native. Otras grandes empresas que ya usan React Native en su aplicación son Tesla, Coinbase, AirBnb, Uber Eats o Discord entre otras.

Flutter fué creada por Google y la aplicación de Google Ads está creada con esta tecnología. La primera gran empresa que anunció que iba a desarrollar sus aplicaciones con Flutter fué Alibaba, una de las empresas de comercio online más grande del mundo. 

A pesar de esto, la realidad es que no hay una gran base de empresas que se animen a desarrollar sus aplicaciones con Flutter. Esto muy probablemente es debido a que hay pocos desarrolladores de Dart y formar a tus empleados en esta nueva tecnología es un coste grande que a las empresas no les compensa, y menos teniendo en cuenta que pueden aprovechar los conocimientos en JavaScript de los desarrolladores de Frontend y tener un rendimiento similar o superior.

Por ahora, React Native tiene un gran apoyo por las empresa. Es cierto que React Native es mucho más maduro que Flutter, pero a pesar del boom del inicio, parece que el crecimiento de Flutter dentro del mundo laboral se ha estancado bastante. Además, todo apuntaba a que Google iba a darle mucha más importancia a Flutter de lo que parece que le está dando últimamente. La realidad es que sin el apoyo de las empresas, es difícil ver un gran crecimiento de esta tecnología.

Conclusiones

Realmente, a la conclusión que llegamos es que cada una tiene sus pros y sus contras, y en base a cada uno de los motivos de decisión se puede optar por una u otra.

Como ya hemos comentado, a la hora de contratar desarrolladores, que entendemos que puede ser un punto diferenciador, React Native puede ser mejor opción si ya hay desarrolladores web o backend con JavaScript/TypeScript. Hay un escenario muy claro en el que React Native es la mejor opción y es el de tener que desarrollar la versión móvil de un web hecha con React, ya que se puede reutilizar toda la lógica de la web y se podría ahorrar en torno a un 30% el tiempo de desarrollo de la app.

Pero la respuesta correcta a la pregunta de cual es mejor sería: Depende del perfil del equipo de desarrollo y de los requerimientos del proyecto.

 

Actualizado a 04.10.2023

Escrito por
Puniker