¿Me arrepentiré de usar react native para una aplicación móvil en lugar de aplicaciones nativas ios y Android?

Hola, con respecto a tu pregunta:

Es un poco difícil decir que “sí, definitivamente te arrepentirás de usar React Native” o “No, estarás bien usando este marco RoR mientras construyes tu aplicación”. Yo iría con “Depende de lo que estés buscando”.

Acabo de escribir un material de comparación sobre el tema, podría interesarte Desarrollo de aplicaciones React Native vs Native – Mind Studios

Como ya se ha dicho antes, realmente depende de sus propósitos.

El marco React Native RoR es una solución relativamente nueva en el mundo de las aplicaciones multiplataforma. Es rápido, furioso e incluso fácil de usar a veces.

Algunos beneficios de React Native:

  • requiere menos recursos de desarrollador y tiempo de tu parte
  • tiene una gran comunidad
  • es promovido por Facebook Inc, y se construyeron muchas aplicaciones como Facebook, Instagram, Walmart, etc.
  • podría ser un poco más barato de lo que sería el desarrollo de aplicaciones nativas

A pesar de todas estas ventajas jugosas, si yo fuera tú, todavía iría por el desarrollo de aplicaciones nativas.

El desarrollo de aplicaciones nativas se desarrolla en los idiomas creados oficialmente por Google (Java, Android) y Apple (Swift, Objective C). Al igual que RN, el desarrollo nativo también tiene sus ventajas. entre los cuales está:

“Necesidad de la velocidad”.

Uno de los principios fundamentales de la Ingeniería de usabilidad son las interacciones rápidas: “1.0 segundo es el límite para que el flujo de pensamiento del usuario permanezca ininterrumpido”. Mientras que las aplicaciones nativas reaccionan y funcionan lo suficientemente rápido como para mantener a los usuarios dentro del ritmo del sistema, los productos híbridos a menudo se retrasan más.

Lea más sobre los beneficios de Native App Development y React Native App Development en nuestra nueva publicación de blog React Native vs Native App Development – Mind Studios

Esta respuesta es de mi publicación original ” ¿React Native es una buena opción para el desarrollo de aplicaciones móviles a largo plazo?

Durante el último año, React Native ha ido ganando popularidad entre los desarrolladores de aplicaciones móviles. También hay un aumento muy constante en el número de aplicaciones de producción y de código abierto escritas usando React Native. Facebook, el mantenedor de React Native, ha hecho que sea relativamente fácil para los desarrolladores aprender y adoptar React Native al adoptar el lenguaje JavaScript demasiado familiar. Los desarrolladores que ya tienen experiencia con Javascript encontrarán que React Native es una excelente opción. El desarrollador de PhoneGap encontrará que aprender y adelantarse a la curva de aprendizaje es relativamente fácil. ¿Pero es React Native una buena opción para una aplicación estable a largo plazo?

Limitaciones y desventajas de React Native

En este artículo, intentaré mencionar la limitación y las áreas grises que actualmente tiene React Native. La mayoría de estas deficiencias están siendo abordadas por Facebook y la comunidad React Native. Pero hay algunas preocupaciones que podrían evitar que saltes de un barco al desarrollo de la aplicación móvil React Native. Siempre es bueno saber estas preocupaciones con suficiente antelación.

  • El desarrollo de aplicaciones nativas tiene sus ventajas
    Sabemos que Javascript es rápido, pero Java, ObjC y Swift son más rápidos, especialmente para cálculos pesados. Es un hecho conocido que el código JavaScript no es tan eficiente para las tareas de cálculo intensivo, y hay una sobrecarga cuando JavaScript controla elementos nativos. JavaScript tiene un único subproceso de dispositivo dedicado, mientras que el código nativo es libre de usar los subprocesos que desee. En rendimiento, React Native se queda atrás de una aplicación nativa optimizada.

    Si su aplicación no está haciendo mucho trabajo pesado (es decir, en términos de uso intensivo de memoria o CPU), React Native parece una muy buena opción. Después de haber trabajado con plataformas híbridas y nativas antes, si su aplicación está haciendo un montón de trabajo pesado, aún recomendaría el desarrollo nativo como una forma de administrar más de cerca cosas como el uso de CPU y la huella de memoria.

  • Actualizaciones constantes de la plataforma.
    React Native es una plataforma relativamente joven y emergente. Mientras que el desarrollo nativo es bastante maduro. iOS (ObjC) y Android (Java) han estado en movimiento durante casi 10 años y hay algunas herramientas realmente excelentes que se han desarrollado en ese momento. Esto no es realmente una desventaja, sino más bien otro punto que React Native tiene mucho que ponerse al día. Debido a su entrada relativamente nueva, React Native está en pleno desarrollo, y se lanza una nueva versión cada mes. Las actualizaciones constantes traen nuevos componentes nativos portados, personalizados mejorados (como el Navegador), correcciones de errores y mejoras de rendimiento. Esto es bueno en términos de actividad de la plataforma. Pero es una mala elección si la aplicación se va a mantener a largo plazo, ya que cada compilación puede requerir la actualización de la plataforma, lo que conlleva una verificación de dependencia para la base de código existente. La incorporación de estas nuevas versiones requiere actualizaciones vigilantes de nuestro propio código si cambia la lógica de los componentes preconstruidos. Por lo tanto, los desarrolladores tendrán que hacer un esfuerzo para incorporar estos cambios a fin de mantenerse al día con la plataforma. Muchas personas toman React Native entendiendo completamente esta situación. Pero si está consultando a un cliente, asegúrese de que comprenda este hecho.
  • Lenguaje vagamente escrito
    React Native utiliza código JavaScript, hojas de estilo CSS y etiquetas HTML para el diseño. El lado bueno es que podemos usar todos los mejores aspectos de JavaScript, pero por supuesto, el lado malo es que trae algunos de los horrores de Javascript. A diferencia de Java y Swift, Javascript no aplica un tipo de variables y parámetros a las funciones. Es decir, cualquier variable puede ser cualquier cosa en cualquier momento. Los desarrolladores deben seguir la disciplina y los estándares que practican en su lenguaje de programación nativo fuertemente tipado
  • Dependencia del idioma nativo
    Si una funcionalidad que necesita no está disponible actualmente en React Native, terminaremos escribiendo módulos nativos. Los módulos nativos son una forma de puentear el código nativo y el código React Native. El módulo nativo debe estar escrito en Java y rápido / objetivo c. Posiblemente, en algún momento durante su desarrollo, tenga que pedir ayuda a un desarrollador nativo o hacerlo usted mismo en el idioma nativo.
  • Limitaciones de las capas de abstracción
    React Native es una abstracción, lo que significa que hay una gran cantidad de código entre el desarrollador y la plataforma nativa para la que está desarrollando. Un problema importante con las abstracciones son los errores. Si encuentra un problema con la capa de abstracción, es posible que deba profundizar en la implementación y solucionarlo usted mismo. ¡Esto puede llevar mucho tiempo y puede encontrar problemas que no puede resolver! Otro problema con las capas de abstracción es que usted depende de un tercero no solo para la corrección de errores, sino también para mantener su marco actualizado. El mundo de iOS se mueve muy rápido, y otras compañías como Xamarin tienen que trabajar muy duro para mantener actualizada su capa de abstracción. Otra fuga de abstracción menos obvia son las funciones a las que no puede acceder. La mayoría de las capas de abstracción están incompletas porque hay algunas características del sistema subyacente que no están expuestas a través de la capa de abstracción.
  • Compromiso a largo plazo y compatibilidad con la próxima versión del sistema operativo
    Una preocupación importante con el uso de React Native es la falta de compromiso a largo plazo con el proyecto. React Native no es un plug-and-play como CocoaPod, no es un simple SDK, no es una mera biblioteca, es una plataforma completa de desarrollo de software. Si Facebook deja de mantener React Native, mi aplicación se estancará y no habrá un “Reemplazo de React Native” a nuestra disposición. Hemos visto que esto sucede con Facebook con Parse.

    La adaptación a las nuevas versiones del sistema operativo será lenta. En otras palabras, actualmente no tiene ninguna garantía de que alguna vez sea compatible con iOS 11 o 12.

  • Licencia y controversia de patentes
    Por último, pero una de las preocupaciones más importantes con React Native es su controversia sobre licencias y patentes. Junto con su licencia permisiva de estilo BSD, React Native se entrega con la concesión adicional de derechos de patente de Facebook, versión 2. La semana pasada, Facebook actualizó su licencia de código abierto y patente para React, ReactNative y otros proyectos de código abierto. Según la actualización, su derecho a usar los proyectos de código abierto de Facebook se rescindirá si demanda a Facebook por un problema de patente. En la práctica, esto parece un elemento disuasorio para usar Facebook sobre las patentes. Por implicación, también parece darle a Facebook un buen respiro para infringir patentes dentro de la aplicación que usa React Native. Este cambio en particular ha creado mucho pánico en torno a los desarrolladores que usan React, React Native y otros proyectos de código abierto. Este cambio dio como resultado que Automattic, el creador de WordPress, abandonara por completo su reescritura de código de WordPress en React (no React Native). ¡Eso fue un trabajo de años! La Fundación Apache había anunciado anteriormente que ya no usarán el código de licencia BSD + Patents de Facebook para nuevos proyectos. Estos incidentes suenan pesimistas. Pero debe ser pesimista al evaluar las licencias y patentes de software.

    Recientemente Facebook volvió a licenciar sus proyectos de código abierto React, Jest, Flow e Immutable.js bajo la licencia MIT y eliminando la licencia de estilo BSD + Patents. Este es un movimiento muy positivo de Facebook, ya que han reconocido las preocupaciones de la comunidad de código abierto. Espero que usen lo mismo para la licencia MIT para React Native, que todavía está bajo la licencia de estilo BSD + Patents.

Puede sentir que algunas de las limitaciones mencionadas aquí también son válidas para plataformas híbridas o incluso nativas. La intención de este artículo es hacerte consciente de la limitación de la plataforma antes de dar el salto al desarrollo nativo reactivo. Con la atención actual que React Native está reuniendo en la comunidad actual de desarrollo de aplicaciones móviles, estoy seguro de que en el futuro, React Native podría superar a PhoneGap y Xamarin.

Descargo de responsabilidad: soy propietario de Native Starter Pro.

Es difícil pasar por alto React-Native, ya que es uno de los desarrollos de aplicaciones móviles de más rápido desarrollo que esencialmente le permite crear un producto aislado con los resultados a menudo.

El himno de React-Native es “Aprende una vez, escribe en cualquier lugar”.

Las aplicaciones React-Native parecen ejecutarse tan rápido como las aplicaciones nativas. React-Native concluye los componentes fundamentales de la interfaz de usuario y los servicios de línea de fondo, y la cobertura sigue mejorando a medida que salen libs de terceros adicionales. Hay un soporte increíble para agregar componentes, por lo que de ninguna manera se detendrá sin vida.

  • Velocidad de desarrollo : mediante Live-Reload
  • Característica multiplataforma : si está creando una aplicación para Android o web junto con su aplicación iOS, se puede usar la misma lógica central. La ventaja introducida de poder escribir para todo lo anterior dentro del mismo idioma también es excepcional por ahora no tener que cambiar el contexto entre plataformas.
  • Acerca del lenguaje : React-Native utiliza babel para transpilar el código ES6 y ES7, con JSX y anotaciones de tipo de flujo. JavaScriptCore se utiliza para ejecutar JavaScript en el dispositivo, manteniendo el tamaño del software bajo. Con esto, el código se vuelve mucho menos complicado de lo que probablemente sea en JavaScript simple.
  • Representa vistas nativas : solo vistas nativas, sin vista web aquí. Esto significa que todos los problemas de compatibilidad del navegador desaparecen, lo que también mejora el rendimiento con animaciones súper suaves.
  • Naturaleza declarativa de React-Native : React-Native es una mezcla de Javascript y marcado vinculado en la parte de retorno de una función. Incluso el estilo puede vivir en el mismo archivo que el resto de su componente, esto lo convierte en un ciclo de iteración increíblemente rápido.
  • Componentes complementarios React-Native : biblioteca de crecimiento incremental de componentes React-Native.

Mi equipo creó este kit de inicio Premium React Native usando React-Native para despegar rápidamente en sus próximos proyectos de aplicaciones móviles.

Cómo construir mi primera aplicación de Android / iOS usando React-Native

Aplicación Building React Native para Android y iOS: Native Starter Pro

Native Starter Pro v1.0

Supongo que no. React Native es un marco bastante bueno para el desarrollo de aplicaciones móviles, por lo que no debe arrepentirse. Sin embargo, también depende de su caso: a veces el desarrollo de aplicaciones nativas puede ser un enfoque más razonable para elegir.

Entonces, repasemos los lados fuertes y débiles de cada enfoque en este momento. Voy a comenzar con una forma más clásica: desarrollo de aplicaciones nativas.

Cuando se habla del desarrollo de la aplicación React Native, tiene las siguientes características:


Esa fue solo una breve respuesta a su pregunta. Afortunadamente, mi equipo y yo preparamos una gran investigación sobre este tema. Se llama ” React Native vs Native (iOS / Android) App Development Comparison ” (haga clic para leer). Allí encontrará la comparación más detallada y ejemplos de la aplicación React Native para que pueda tomar la decisión correcta por su cuenta. Espero que ayude 🙂

Depende de si está bien con la salida de aplicaciones de aficionados o no.

Actualmente, React Native no puede manejar bien los cambios de orientación de Android ([Android] necesita una buena solución para manejar el cambio de configuración, por ejemplo, cambio de orientación · Problema # 3219 · facebook / react-native) y, por lo tanto, React Native no puede producir aplicaciones de Android de calidad (Soporta múltiples pantallas … y si eso no te convence, esto podría:

)

Realmente depende del tipo de aplicación que estés creando. Simplemente genérico con lógica de interfaz de usuario básica, y serás bueno con React Native. Naturalmente, sería bueno pensar si este tipo de concepto (interfaz de usuario de JavaScript) funcionaría para su interfaz de usuario. Después de todo, las aplicaciones React Native son nativas.

Depende de tu elección.

Diría que si su aplicación es lo suficientemente simple, si no necesita incorporar características relativamente nuevas como iMessage o animaciones sofisticadas, etc., debería estar bien con React Native como comienzo.

E incluso si su aplicación es bastante compleja pero es un profesional de iOS o Android y tiene algo de experiencia en desarrollo web, React Native puede ser una buena opción, ya que probablemente resolverá todo lo que necesita.

Pero si eres nuevo en el desarrollo, diría que primero debes iniciar en una plataforma usando su idioma nativo. Ver cómo va. Luego muévete a la otra plataforma. Así se lanzó Instagram.

Absolutamente no, React Native está liderando actualmente en el desarrollo de aplicaciones móviles. puedes aprender todo sobre reaccionar nativo de este artículo: https://goo.gl/9hyFSm