<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Miguel Cast</title>
    <description>The latest articles on DEV Community by Miguel Cast (@miguelcast).</description>
    <link>https://dev.to/miguelcast</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51318%2Fe3918d50-47c0-44d0-9649-bd69e00c1d4c.jpeg</url>
      <title>DEV Community: Miguel Cast</title>
      <link>https://dev.to/miguelcast</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miguelcast"/>
    <language>en</language>
    <item>
      <title>🪄 Lecciones aprendidas actualizando la versión de React Native</title>
      <dc:creator>Miguel Cast</dc:creator>
      <pubDate>Tue, 15 Feb 2022 20:26:41 +0000</pubDate>
      <link>https://dev.to/ayenda/lecciones-aprendidas-actualizando-la-version-de-react-native-2ch9</link>
      <guid>https://dev.to/ayenda/lecciones-aprendidas-actualizando-la-version-de-react-native-2ch9</guid>
      <description>&lt;p&gt;Hace poco vivimos en Ayenda el retador y agotador proceso de actualizar la versión de React Native de nuestra App por primera vez, pasamos de la versión &lt;code&gt;0.59&lt;/code&gt; a la &lt;code&gt;0.63.4&lt;/code&gt;. En el proceso aprendimos algunas lecciones que nos sirvieron para llevar mucho más fácil esta actualización.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contenido del post
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🤷🏻‍♀️ Por qué actualizamos la versión de React Native
&lt;/li&gt;
&lt;li&gt;⏮️ Lección #1 - No actualices a la última versión
&lt;/li&gt;
&lt;li&gt;👣 Lección #2 - Dividir en diferentes hitos
&lt;/li&gt;
&lt;li&gt;⚙️ Lección #3 - La comunidad y herramientas
&lt;/li&gt;
&lt;li&gt;🏁 Conclusión
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Por qué actualizamos la versión de React Native
&lt;/h2&gt;

&lt;p&gt;Ayenda es una cadena de hoteles donde buscamos alojar millones de huéspedes usando tecnología, y para lograrlo empezamos a mejorar nuestros canales digitales. Para el caso de nuestra &lt;a href="https://ayenda.com/app?utm_source=devTo&amp;amp;utm_medium=blog&amp;amp;utm_content=postLeccionesReactNative" rel="noopener noreferrer"&gt;APP&lt;/a&gt;, donde cualquier persona puede descargarla, buscar un hotel en Colombia, Perú y México, realizar reservas y administrarlas, el objetivo es ofrecer la mejor experiencia y soportar una cantidad de usuarios. Nuestra app está desarrollada con &lt;a href="https://reactnative.dev/" rel="noopener noreferrer"&gt;React Native&lt;/a&gt; y antes de llevar a cabo la actualización teníamos instalada la versión &lt;code&gt;0.59&lt;/code&gt; y varias librerías más. El problema con esto es que llevábamos un largo tiempo sin hacer grandes cambios o desarrollos y nos dimos cuenta de los problemas que teníamos al estar desactualizados. Para nombrar algunos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Librerías desactualizadas, incluyendo React Native, por tal motivo teníamos bugs, problemas de seguridad y performance.&lt;/li&gt;
&lt;li&gt;El ambiente de desarrollo no soportaba herramientas como &lt;code&gt;Flipper&lt;/code&gt; para hacer debbug o &lt;code&gt;Fast refresh&lt;/code&gt; para agilizar nuestros desarrollos.&lt;/li&gt;
&lt;li&gt;Varias de las librerías que queríamos instalar para nuevos desarrollos no soportan versiones &lt;code&gt;&amp;lt; 0.60&lt;/code&gt; de React Native.&lt;/li&gt;
&lt;li&gt;Acceder a nuevas características de versiones más actuales de React Native.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estos problemas y algunos otros factores hacían que el proceso de desarrollo y la experiencia de usuario no fuera la mejor en el momento, donde empezar a crear nuevas características frecuentemente y tener un equipo de desarrollo más grande ejecutando diferentes cambios iba a convertirse en un caos.&lt;/p&gt;

&lt;p&gt;Ahora te contaré algunas de las experiencias y lecciones que pasamos mientras actualizábamos la versión de React Native:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Lección #1 - No actualices a la última versión
&lt;/h3&gt;

&lt;p&gt;Un error que se cometió al iniciar el desarrollo para actualizar la versión de React Native de la &lt;code&gt;0.59&lt;/code&gt; a la &lt;code&gt;0.63.4&lt;/code&gt;, en su momento, fue tratar de actualizar directamente a esta última versión. Pero, ¿por qué esto fue una mala práctica? El hecho de querer subir 4 versiones al tiempo nos acumuló todos los cambios y errores de cada una de estas versiones, es decir, si al pasar a la versión &lt;code&gt;0.60&lt;/code&gt; teníamos que hacer 20 cambios, estábamos sumando, además, los de cada versión. Todo esto junto en una actualización, sumaba demasiada complejidad y errores que resolver, por esta razón decidimos no pasar a la última versión inmediatamente, sino ir subiendo de versión gradualmente.&lt;/p&gt;

&lt;p&gt;Empezamos a actualizar de la versión &lt;code&gt;0.59&lt;/code&gt; a la &lt;code&gt;0.60&lt;/code&gt; y fue mucho más fácil que hacerlo directamente a la &lt;code&gt;0.63.4&lt;/code&gt;. Esto nos ayudó a ver resultados más rápidos y a minimizar la cantidad de errores que resolvimos en cada actualización, sobre todo al pasar de la versión &lt;code&gt;0.59&lt;/code&gt; a la &lt;code&gt;0.60&lt;/code&gt; donde agregaron grandes cambios (puedes verlos &lt;a href="https://reactnative.dev/blog/2019/07/03/version-60" rel="noopener noreferrer"&gt;aquí&lt;/a&gt;). Luego de esto fue mucho más fácil pasar a versiones como la &lt;code&gt;0.62&lt;/code&gt; y después a la &lt;code&gt;0.63.4&lt;/code&gt;. En el medio de cada actualización nos encontramos otro reto, que nos llevó a la siguiente lección.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Lección #2 - Dividir en diferentes hitos
&lt;/h3&gt;

&lt;p&gt;Nos encontramos que al actualizar la versión de React Native nos empezaron a salir una serie de errores y problemas que debíamos arreglar para que nuestra App quedara funcionando correctamente. Para dar solución a estos errores, fue necesario organizarnos y avanzar hacia el objetivo en partes más pequeñas, logrando un trabajo enfocado y que nos permitió  ver el avance en todo momento; por eso decidimos ir por el siguiente camino:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solucionar los conflictos de IOS y que compilara correctamente (varios cambios y errores en este paso).&lt;/li&gt;
&lt;li&gt;Solucionar los conflictos de Android y que compilara correctamente (varios cambios y errores en este paso).&lt;/li&gt;
&lt;li&gt;Actualizar librerías que no estuvieran funcionando correctamente o hacer cambios en implementaciones.&lt;/li&gt;
&lt;li&gt;Arreglar errores de código.&lt;/li&gt;
&lt;li&gt;Arreglar problemas de UI.&lt;/li&gt;
&lt;li&gt;Solucionar las advertencias que nos reporta React Native.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo esto que hicimos con cada actualización nos ayudó a tener un objetivo claro sobre cada tarea y motivarnos a alcanzarla, ya que la cantidad de errores en total que pueden aparecer en la actualización puede ser algo frustrante, pero si lo dividimos y solucionamos los problemas por partes más pequeñas se hace más llevadero y menos abrumador.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Lección #3 - La comunidad y herramientas
&lt;/h3&gt;

&lt;p&gt;En el camino nos dimos cuenta de que la comunidad de React Native es una comunidad donde podemos acceder y donde se están creando grandes herramientas que nos benefician a todos. No estamos solos con todos los problemas encima sino que nos soportamos de herramientas y soluciones desarrolladas por la comunidad.&lt;/p&gt;

&lt;p&gt;Actualizar la versión de React Native es un poco más que actualizar el archivo &lt;code&gt;package.json&lt;/code&gt;, también debemos modificar varios archivos de las carpetas &lt;code&gt;ios&lt;/code&gt; y &lt;code&gt;android&lt;/code&gt;. Para hacer esto mucho más fácil podemos usar &lt;a href="https://react-native-community.github.io/upgrade-helper" rel="noopener noreferrer"&gt;Upgrade helper&lt;/a&gt;, este nos permite ver las diferencias entre dos versiones de archivos que fueron eliminados, agregados o actualizados de la base de código de React Native.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m5usx755sjo4ez08a2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m5usx755sjo4ez08a2u.png" alt="Upgrade helper interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta no es la única herramienta que nos ayuda, existen otras como el comando &lt;code&gt;upgrade&lt;/code&gt; para cambiar automáticamente la base del código, como nos muestra el &lt;strong&gt;Upgrade Helper&lt;/strong&gt; pero aplicada directamente a nuestro proyecto.&lt;/p&gt;

&lt;p&gt;Para ver más herramientas que nos facilitan el trabajo de actualizar nuestro proyecto puedes entrar a la documentación de React Native &lt;a href="https://reactnative.dev/docs/upgrading" rel="noopener noreferrer"&gt;aquí&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;En el momento que estuvimos resolviendo errores y conflictos un gran apoyo en la comunidad fueron los issues del repositorio de React Native y también de las dependencias que utilizamos, allí encontramos otras personas que han pasado por los mismos errores y encontramos muy buenas soluciones, lo cual nos ayudó a optimizar mejor el tiempo en cada problema que nos encontrábamos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe01i49rcnvl5szpsrl1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe01i49rcnvl5szpsrl1n.png" alt="react native issues section"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aquí también fueron de gran ayuda &lt;a href="https://stackoverflow.com/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;, &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;, &lt;a href="https://github.com" rel="noopener noreferrer"&gt;Github&lt;/a&gt;, &lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; y otros blogs creados por una gran comunidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Conclusión
&lt;/h2&gt;

&lt;p&gt;Llevar a cabo esta actualización en Ayenda fue al comienzo un proceso agotador y un poco frustrante. Nos encontramos con muchos baches y errores, llegando al punto de pensar en que era imposible hacerlo, pero cuando trabajamos en equipo y todos pensamos en pro del mismo objetivo todo se vuelve más fácil.&lt;/p&gt;

&lt;p&gt;Estas lecciones que compartimos nos ayudaron a que el camino fuera más ordenado, menos frustrante, a mantenernos motivados y  poder llegar a la meta.&lt;/p&gt;

&lt;p&gt;Nuestro proyecto y nuestra experiencia de desarrollo en el equipo mejoró increíblemente después de cambiar la versión de  React Native y otras librerías más.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ahora a seguir con el próximo upgrade 🤓&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
