Nativo vs React Native vs Capacitor

Mi post se basa principalmente en la experiencia de trabajo con diferentes clientes basados en sus exigencias de funcionalidad y presupuestos.

Hola! Primero que nada, quiero aclarar que no soy un experto desarrollador nativo, si alguno de ustedes quiere aportar es bienvenido en los comentarios.

Mi post se basa principalmente en la experiencia de trabajo con diferentes clientes basados en sus exigencias de funcionalidad y presupuestos.

Siempre es un desafío decidir que plataforma utilizar para desarrollar un proyecto. Depende mucho de las exigencias del cliente, especificaciones de la app y finalmente el presupuesto que tenga la empresa disponible para invertir. La plataforma de desarrollo que elijamos puede ser una ventaja o un dolor de cabeza en el futuro. Por lo que siempre es bueno tomarse el tiempo necesario para investigar el proyecto y tomar la decisión más adecuada.

Cuando se trata de aplicaciones que se ejecutaran en Teléfonos o Tablet hay una gran variedad de opciones, pero entre las que puedo destacar 3:

React Native

Tiene como slogan, “Aprende una vez, escribe en todas partes” que es bastante atractivo para nosotros los desarrolladores. El slogan es casi cierto, permitir que la aplicación funcione en Android y iOS no requiere mucha intervención (si es necesario hacer modificaciones para que los recursos funcionen en la otra plataforma). ¿Pero que es realmente React Native?

React Native es un framework de Javascript. Basado en React, el framework de Facebook para construir interfaz de usuario, pero en vez de enfocarse en el navegador se enfoca en plataforma móvil. Similar a React para web, React Native se escribe usando una mezcla de Javascript y tags como HTML o XML, conocido como JSX. Por debajo, React native hace un “puente” que invoca componentes nativos de Obj-C (iOS) y Java (Android) para renderizar la interfaz dando como resultado una interfaz “nativa” no WebViews.

Se podría profundizar más en este tema, pero en palabras sencillas React Native genera una interfaz nativa que se controla a través de Javascript (es una mezcla entre las dos cosas)

React native tiene la ventaja de que se escribe de manera muy similar a HTML, CSS y por supuesto JavaScript, por lo que es mas familiar para desarrolladores que viene de Web. Además, hay plugins disponibles para trabajar con la ubicación del dispositivo y otras funcionalidades nativas.

Nativo

Objective-C/Swift para iOS o Java/Kotlin para Android. La verdad me parece excelentes opciones debido a su mejor rendimiento y completo acceso a APIs nativas. Además, se pueden ejecutar operaciones más complejas y te permiten mayor personalización o versatilidad en interfaz y funcionalidad. Se programan en robustos lenguajes refinados con los años.

El gran problema de las aplicaciones nativas es que para tener la misma aplicación en iOS y Android es necesario crear la aplicación 2 veces, sin poder reutilizar código lo que incrementa costos para el cliente y trabajo para el equipo desarrollador. También, el tiempo de desarrollo para una aplicación nativa puede ser hasta 3 veces mas que la misma funcionalidad en una plataforma web.

Capacitor

Capacitor o algún framework similar para crear WebViews de aplicaciones Web. No renderizan de manera nativa ningún componente, son solo contenedores que abren una página web. Estos traen también plugins para acceder a APIs nativas de los dispositivos como la ubicación o cámara. Para esto es necesario escribir el código en la web y luego hacer la conexión en Capacitor. En términos de rendimiento son las que se tardarían más tiempo en cargar y las que tendrían menor responsividad en la interfaz. Es importante destacar que no son lentas, debido a las tecnologías de hoy en día todas las opciones están dentro de los estándares normales de rendimiento, estamos hablando de un poco más rápido o un poco más lento.

Tienen la ventaja que en términos de desarrollo de la aplicación es lo mismo que escribir una pagina web. Tiene un alcance si, dependiendo del framework que estés utilizando será necesario que se escriba código especial para procesar las llamadas a APIs nativas, desde instalar un plugin hasta escribir código nativo (esta última opción es muy poco probable)

Conclusión

De acuerdo a mi experiencia. Si vas a escribir una aplicación sencilla (consideraremos una aplicación sencilla aquella que solo necesita hacer 3 cosas como máximo) puedes elegir React Native o algún framework como Capacitor, que te dará la ventaja de menor tiempo de desarrollo y menor costo para el cliente.

Si el proyecto es mas grande y complejo puedes ir por Nativo o por una WPA. Generalmente las empresas se deciden por WPA por menor tiempo de desarrollo y costo. Pero dependiendo de las funcionalidades quizá sea requisito que sea nativo. Es necesario recordar que las WPA no se suben a la App Store sino que son solo una página web, que de todas maneras se puede crear icono en el escritorio del teléfono, aunque no deja de ser una web. La ventaja que tiene la WPA es que no necesita código adicional como puente entre la web y los recursos nativos del dispositivo. Se escribe el JavaScript necesario y el navegador o sistema operativo generalmente se encarga de todo lo demás

José Miguel Concha Parra

José Miguel Concha Parra

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *