• Skip to main content

Tú Programas

Blog sobre programación web y mobile, frameworks modernos y herramientas para desarrolladores

  • Inicio
  • Contactar

Xamarin vs React Native, mi experiencia

12/11/2019

Son unas de las plataformas más importantes en el desarrollo mobile. He trabajado con las dos y aquí te cuento mi experiencia con Xamarin vs React Native.

Desde que salí de la universidad siempre me he dedicado al desarrollo mobile. Mayoritariamente desarrollando apps para iOS pero con el tiempo también he entrado en el desarrollo Android. Una de las desventajas que tiene tener 2 sistemas operativos tan populares para los smartphones, tablets, etc. es que para que tu app tenga presencia en ambas plataformas, la tienes que desarrollar 2 veces, una para cada plataforma.

Esto en proyectos pequeños no es tanto problema pero, en proyectos grandes, es un gasto de tiempo y dinero descomunal. Todo se debe hacer por duplicado y esto conlleva mantener 2 apps que, aunque sean la misma, en realidad cada app tiene su propio código.

Frente a este complejo problema, se han desarrollado diferentes plataformas que nos permiten tener un único código para nuestras apps Android y iOS. También nos permiten mantener las personalizaciones propias de cada sistema operativo.

Hay varias plataformas de desarrollo mobile nativo cómo Xamarin, React Native, Flutter… Personalmente he trabajado con Xamarin y React Native. Flutter la tengo pendiente porque creo que es una opción muy interesante a tener en cuenta, ya que detrás de Flutter está la propia Google. Y estoy seguro que pronto hablaré de ella aquí en el blog.

Cada plataforma tiene sus pros y sus contras pero mi experiencia con Xamarin vs React Native, al trabajar con ambas, me permite tener una visión completa de ellas.

Desarrollando con Xamarin

Xamarin es una plataforma de desarrollo mobile nativo desarrollada por Miguel de Icaza y Nat Friedman, partiendo del proyecto Mono que consistía en crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET. Fue comprada por Microsoft en 2016.

Xamarin se basa en código escrito en C#, que se puede ejecutar en Windows, Mac o Linux. A partir de ahí se desarrollaron librerías especificas para implementar el ecosistema iOS y Android.

Con todo esto, podemos crear un proyecto escrito íntegramente en C# con el que podemos generar apps para iOS y Android, tanto en Mac como en Windows (dónde no es posible desarrollar apps para iOS con Xcode).

Ventajas

Desarrollar nuestra app en Xamarin tiene una serie de ventajas como Xamarin Forms que nos permite tener un solo proyecto que después se generará para iOS y para Android.

También podemos desarrollar nuestro proyecto en una estructura de Core + Plataformas. Esto nos da un poco más de personalización ya que podemos crear las pantallas para cada plataforma y no estamos obligados a usar únicamente los componentes que nos da Xamarin Forms.

Que esté detrás Microsoft también es un plus, ya que nos da la tranquilidad de saber que es un proyecto desarrollado por una gran compañía de software. También podemos usar Visual Studio por lo que podemos usar todas las posibilidades de este gran IDE.

Inconvenientes

Uno de los grandes problemas de Xamarin es el tiempo que requiere su compilación. Esto va mejorando con cada versión, pero es claramente una barrera ya que según que cambios o si tu ordenador no es muy potente, estamos hablando de varios minutos perdidos viendo la pantalla como compila nuestra app.

También tiene el inconveniente que todos los plugins que queramos utilizar los tienen que desarrollar exclusivamente para Xamarin. Por ejemplo, si usamos Firebase, tenemos que esperar a que la comunidad, o la propia Microsoft, adapte las nuevas librerías a Xamarin.

Otro problema es la información que tenemos cuando nuestra app crashea, si bien hay plataformas que nos permiten obtener informes sobre nuestros fallos en producción cómo AppCenter, la información que nos da no siempre es clara y se hace difícil el mantenimiento de la app.

Desarrollando con React Native

React Native es la plataforma de desarrollo mobile nativo creada por Facebook a partir de su framework de javascript React. Se basa en tener un único código escrito íntegramente en javascript pero también se puede añadir React Native a nuestra app Android y iOS.

Es multiplataforma, así que nos permite desarrollar React Native tanto en Windows como en Mac.

Ventajas

Una ventaja es que nos permite tener todo el código de nuestra app escrito en javascript y usar librerías desarrolladas para React. La comunidad de javascript crece exponencialmente por lo que cualquier librería o componente que busques, lo vas a encontrar fácilmente.

Otra ventaja es que está bajo el paraguas de una gran empresa cómo es Facebook, esto nos da tranquilidad al querer desarrollar nuestras apps en React Native. También las librerías nativas de React Native, tanto de iOS como de Android, son mucho más conseguidas que las de Xamarin.

El desarrollo también es mucho más productivo puesto que integra un compilador muy potente que durante el desarrollo nos permite ver los cambios que hacemos en la app en tiempo real, refrescando la interfaz de usuario. Todo esto hace que el desarrollo mobile con React Native sea mucho más ágil que en Xamarin.

Inconvenientes

Uno de los inconveniente más grandes es que se lanzan muchas nuevas versiones y a veces, por el uso de según que librerías, se generan errores y esto nos hace perder un tiempo muy valioso.

El tiempo de generar nuestra versión para producción es muy grande, tardando muchos minutos para un proyecto de mediano tamaño. Pero al suceder únicamente al generar las apps, no es tampoco un inconveniente muy importante.

Otro inconveniente es el hecho de que añadir según qué librerías nativas, dependiendo de la versión que estemos usando de React Native, la cosa se complica por momentos. Teniendo que ir a los proyectos de iOS y Android a configurar manualmente la introducción de la nueva librería.

Mi opinión

Como vemos, cada plataforma tiene sus ventajas y inconvenientes y es decisión de cada uno usar una u otra. Mi opinión personal, mi experiencia con Xamarin vs React Native, es que me gusta mucho la manera de trabajar con React Native. Creo que he sido condicionado por el hecho de que he visto evolucionar Xamarin desde casi sus inicios y he pasado por muchos obstáculos con Xamarin. En cambio con React Native ha sido todo mucho más fácil. Es cierto que la manera de trabajar con uno u otro es un poco diferente pero para la mayoría de los casos creo que React Native se lleva el gato al agua.

Esto no quiere decir que React Native sea la panacea y sea algo perfecto, siempre usar las plataformas nativas es mucho mejor, pero el tiempo que se gana usando estas plataformas de desarrollo mobile y la calidad de su resultados lo avalan.

Como siempre, cualquier duda o sugerencia no dudes en contactar conmigo o escribirme un email a javi@tuprogramas.com. También te invito a que te suscribas a mi newsletter para estar al tanto de las novedades más interesantes del blog, así como del lanzamiento de cursos que estoy preparando.

  • ¿Quién soy?
  • Newsletter
  • Contactar
  • Aviso legal

Copyright © 2022

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Saber másEstoy de acuerdo
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR