Desenredando tus Dependencias: Un Patrón para un Proyecto de React Bien Tejido

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

“Está bien, solo actualizaré Typescript, yyyyy ahora todo está roto”

Construir un proyecto complejo de JavaScript puede sentirse como un enredo de hilo. ¡No temas, compañero desarrollador! Esta charla te proporcionará las herramientas y técnicas para desenredar suavemente tus dependencias y tejer una base de código bien estructurada y mantenible. Nuestra cesta de herramientas incluye usar npm why como nuestra aguja de hilo, descomponer tareas en puntadas manejables, actualizar estratégicamente para el progreso, utilizar técnicas de ramificación para evitar que tu proyecto se deshaga, ¡y mucho más!

Únete a nosotros mientras desvelamos los secretos de la gestión de dependencias, dejándote con un proyecto que no solo es funcional sino bellamente mantenible, puntada a puntada.

This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.

Carmen Huidobro
Carmen Huidobro
22 min
22 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Gracias por unirte a mi sesión sobre desenredar tus dependencias. Encontré errores al intentar actualizar las dependencias en el proyecto, lo que llevó a un enredo de problemas. Gestionar dependencias puede ser como trabajar con una bola de hilo, tratando de tejer un proyecto. Compartiré mis prácticas favoritas para gestionar dependencias y proporcionaré algo de información sobre mí. Leonardo da Vinci dijo: 'el arte nunca se termina, solo se abandona', y esto se aplica también al software. Compartiré trucos y consejos para gestionar sistemas complejos de gestión de dependencias y entender diferentes tipos de dependencias. Trabajar con dependencias a menudo viene con desafíos, especialmente al usar React Native. Ejemplos de herramientas que ayudan a gestionar dependencias incluyen yarn upgrade interactive, NPM check updates y React Native upgrade helper. Al encontrar problemas, descomponerlos en partes más pequeñas ayuda a encontrar soluciones. Para abordar problemas de dependencias, concéntrate en una plataforma a la vez y elige las herramientas adecuadas. Herramientas como NPM why y Clip pueden ayudar a identificar dependencias innecesarias y archivos no utilizados. Los monorepos y herramientas como Yarn workspaces y npm shrinkwrap son útiles para gestionar monorepos. Las ramas de vanguardia y las actualizaciones de dependencias permiten commits incrementales y rotos. Se recomiendan actualizaciones regulares para mantenerse alineado con los cambios de plataforma.

1. Introduction to Untangling Dependencies

Short description:

Gracias por unirse a mi sesión sobre cómo desenredar sus dependencias. Tenía un cliente buscando desarrolladores de React Native, y decidí tomar el proyecto aunque nunca había trabajado con TypeScript antes. El proyecto era una aplicación de React Native, TypeScript y presentaba un desafío interesante. El proyecto no se había trabajado en un tiempo, y encontré errores al ejecutarlo. Después de intentar ejecutar las compilaciones de iOS y Android, decidí actualizar todo a la última versión de React Native.

Hola a todos. Muchas gracias por unirse a mi sesión sobre cómo desenredar sus dependencias. Este es un tema del que realmente disfruto hablar y siento que resuena con muchos de nosotros que tenemos que gestionar nuestras dependencias, especialmente en proyectos más grandes.

Solo para poner el escenario, vi un mensaje en el grupo de Slack de Freelancers de Viena que decía, Tengo un cliente buscando desarrolladores de React Native. Remoto, freelance, buena tarifa, podría terminar siendo una situación de retención. Y lo siento, siempre me río cuando leo esto porque siempre suena como ese audio de TikTok, ya sabes, el que dice, como, estoy buscando un hombre en finanzas. De todos modos. Así que dije que sí. Ser freelancer realmente me ha dado el poder de sentirme seguro para simplemente lanzarme y decir, bueno, nunca he hecho TypeScript, pero estoy seguro de que puedo. El proyecto también era React Native, TypeScript, y fue muy divertido trabajar con él. Y fue un desafío realmente interesante para mí.

Porque cuando entré, ese proyecto no se había trabajado en un tiempo. Tanto así, que cuando lo ejecuté, obtuve un error. Intenté ejecutar la versión de iOS y el error que obtuve fue, no se pudo encontrar el simulador de iPhone 6. Y aquí está la cosa, amigos, intenté 6 no es del año pasado, como siento en mi corazón. Lo es. Pero en realidad ha pasado más tiempo entre el iPhone 6 y ahora, que entre el iPhone original y el iPhone 6. Solo compartiendo un poco de mi dolor.

De todos modos, genial. Intenté, estaba tremendamente desactualizado. ¿Qué pasa con la compilación de Android? Intenté, intenté, si no estás familiarizado con React Native, te permite escribir aplicaciones para ambas plataformas móviles y también intenté plataformas como la web. Y sí, eso incluye iOS y Android. Así que de todos modos, ejecuté la compilación de Android, y obtuve algún error de Java. No estaba seguro de lo que significaba. Pero está bien. Pensé para mí mismo, sabes qué, solo voy a actualizar todo. Va a estar bien. Y bueno, intenté saber cómo fue eso. Así que primero, intenté, bueno, la versión de React Native en este proyecto es 55.4, y en el momento de grabar esto, de escribir esta presentación, React Native estaba en 074.1. Y así, simplemente lo actualicé de una vez.

2. Dealing with Dependency Issues

Short description:

Encontré errores al intentar actualizar las dependencias en el proyecto, lo que llevó a un enredo de problemas. Se sentía como lidiar con una caja de cables, donde nunca sabes cuándo los necesitarás. Gestionar dependencias puede ser como trabajar con un ovillo de lana, tratando de tejer un proyecto. Compartiré mis prácticas favoritas para gestionar dependencias y proporcionaré algo de información sobre mí.

Simplemente fui al archivo package.json y solo cambié ese número. NPM install, y listo. Y te puedes imaginar que obtuve un error. Algo sobre que React DOM no funcionaba bien. Y pensé, está bien, no hay problema, simplemente actualizaré React DOM. Y luego React se rompió. Y luego algunos otros paquetes se rompieron.

Y después de un tiempo de intentar arreglar esto, se sintió como una de esas cajas de cables. ¿Todos tienen estas en casa? Me gustaría escucharlo en el chat, por favor. Como, ¿tienen en su casa solo una caja llena de cables que realmente saben desesperadamente que necesitarán algún día? Y probablemente tengan personas en sus mensajes o lo que sea o sus amigos diciéndoles, tira esos cables. Déjenme decirles, no los tiren. Nunca saben cuándo van a necesitar ese cargador de Nokia 3310. Confíen en mí.

Así que de todos modos, trabajando a través de todo esto, traté de seguir con nuestra metáfora un poco más. Se sintió más como si estuviera trabajando con un ovillo de lana muy enredado al tratar de tejer un proyecto. Traté de, como ven, el dibujo en sí no hecho por mí, pero los garabatos un poco más hechos por mí. No soy muy buen artista. Así que de todos modos, eso es en lo que vamos a entrar hoy. La pregunta no es tanto, ¿cuáles son las mejores prácticas para gestionar dependencias? Soy un gran defensor de que las mejores prácticas cambian con el tiempo. En cambio, traté de hablar sobre cuáles son mis prácticas favoritas para gestionar dependencias. Y para hacer eso, voy a contarles un poco sobre mí.

Así que hola, mi nombre es Katmin, pronombres ella. Soy originaria de Chile, viviendo en Austria desde hace mucho tiempo. Trabajo como educadora de desarrolladores en una empresa llamada Directus. Y soy cofundadora del Bad Website Club donde mi amiga Jess y yo hacemos que la educación para desarrolladores sea más accesible y llevamos a la gente a la programación en un entorno de muy bajo estrés y bajo perfeccionismo, tanto como podemos. Intento realmente amar las comunidades. Siento que esta es una de las mejores maneras en que podemos aprender y crecer como seres humanos. Intento pensar en las dependencias, a veces las damos por sentadas, ¿no? Simplemente las lanzamos y decimos, sí, lo que sea. Necesito algo para, ya sabes, hacer mi vida un poco más fácil. Y realmente no voy a pensar en el código.

3. Managing Complex Dependency Management Systems

Short description:

Gestionar las dependencias puede sentirse como un juego de equilibrio. Las dependencias pueden acumularse en tamaño, como los objetos más pesados del universo. Trabajar con ellas puede compararse con un juego de Jenga, donde un movimiento en falso podría hacer que todo colapse. Leonardo da Vinci dijo, 'el arte nunca se termina, solo se abandona,' y esto se aplica también al software. Compartiré trucos y consejos para gestionar sistemas complejos de gestión de dependencias y entender los diferentes tipos de dependencias, como las dev dependencies, que no se incluyen en un paquete de producción.

Pero al final del día, sigue siendo un fragmento de código que estás introduciendo en tu proyecto, ¿verdad? Así que lo intenté. La cosa es que, con el tiempo, esas dependencias se acumulan en tamaño. Probablemente hayas visto este meme antes. Los objetos más pesados del universo y tu carpeta de Node Modules es bastante pesada. Recuerdo que estaba en una conferencia y alguien dio una charla sobre cómo tomaron ese concepto de la carpeta de Node Modules e hicieron un juego de Katamari con él. Donde si no estás familiarizado, juegas como un pequeño personaje y ruedas una bola y a medida que recoges objetos más grandes, la esfera que estás rodando crece en tamaño. Y lo hicieron con una carpeta de Node Modules, lo cual me pareció hilarante.

Intenté trabajar con todas esas dependencias. Se siente un poco como un juego de equilibrio. Y no sé tú, pero a veces me pongo un poco nervioso de que si solo intento una parte que estoy moviendo, todo se va a colapsar. Un poco como un gran juego de Jenga. Lo intenté. Lo intenté. Voy a hacer esa parte donde traigo una cita de una persona realmente inteligente a la presentación. Y realmente me esforcé mucho para asegurarme de que esto no fuera una de esas situaciones de Mark Twain, ya sabes, donde se le atribuye a Mark Twain. Estoy bastante seguro de que fue Leonardo da Vinci quien dijo, el arte nunca se termina, solo se abandona. Y de alguna manera siento que eso se aplica al software también. Así que lo que voy a hacer es simplemente mostrarte un par de trucos y consejos para gestionar tus complejos sistemas de gestión de dependencias y cómo puedes entenderlos mejor. Intenté desde el principio, ¿no? Intenté hablar mucho sobre dependencias y, ya sabes, filosofamos sobre diferentes estilos de gestión. Pero, ¿qué hay de entender qué tipo de dependencias hay? Intenté. Intenté. Intenté. Intenté. Y vemos esto cuando trabajamos con, por ejemplo, un archivo package.json donde tenemos dependencias y dev dependencies. Ahora, admitiré que hubo un tiempo en que simplemente lanzaba todo en la misma caja. Estoy como, oh, ya sabes, estoy desarrollando un proyecto. Simplemente lo pondré en dev dependencies. Estará bien. Intenté amigos. Intenté que las dev dependencies no se incluyan en un paquete de producción.

4. Types of Dependencies and the Package Lock File

Short description:

Las dependencias directas, las dependencias transitivas y las dependencias peer son los diferentes tipos de dependencias. Las dependencias directas son las que incluyes explícitamente en tu proyecto. Las dependencias transitivas son las que se instalan a través de otras dependencias, haciendo que la caja crezca en tamaño. Las dependencias peer son dependencias compatibles destinadas a ser utilizadas con tu paquete. Otro aspecto importante es el archivo package lock, que declara las versiones de las dependencias a instalar.

Intenté la mayoría de las veces. Recuerdo haber visto un problema en GitHub donde alguien descubrió eso. Creo que fue en Meteor que un montón de, un montón de dev dependencies estaban siendo incluidas en el paquete de producción, que nuevamente, no son necesariamente necesarias en él. Algunas cosas como TypeScript, linters, ese tipo de cosas.

Intenté. Así que, estas se llaman dependencias directas. Pero recuerdas ese meme que te mostré antes, ¿verdad? Con los objetos más pesados del universo. ¿Qué pasa con las que las dependencias que se instalan a través de otras dependencias? Y estas pueden colarse y simplemente hacer que la caja crezca en tamaño. Estas se llaman dependencias transitivas.

Intenté, pero esas no son solo, no son los únicos tipos de dependencias con las que podemos trabajar. También hay dependencias peer. Y las dependencias peer son dependencias que vamos a ver más a menudo si estamos trabajando en un paquete nosotros mismos. Son dependencias con las que nuestro paquete es compatible o está destinado a ser utilizado. Te daré un ejemplo. Puedes ver aquí, estoy trabajando en un paquete llamado fancy charts. Y estoy declarando como una dependencia peer, chart.js. Y lo que esto significa es que cuando alguien va a usar e instalar, intenté fancy charts, chart.js se instalará junto con fancy chart, no como una dependencia, sino como una dependencia peer.

Intenté, intenté. Y hay un lugar más que miramos cuando hablamos de dependencias en nuestros proyectos de React. Intenté, intenté el archivo package lock. ¿Alguno de ustedes ha entrado aquí y mirado alrededor? Porque es una locura. Quiero decir, solo mira mi editor de texto aquí. Línea seis, espera, 16,427. Es un archivo sustancioso. Y tengo que admitir, principalmente trabajo con él cuando tengo conflictos de fusión. Intenté. Así que, sí. Estos son diferentes lugares donde estamos mirando lo que el archivo package lock JSON hace, por cierto, es declarar exactamente qué versiones de esas dependencias vamos a estar instalando si alguien va, quiere ir y desarrollar y trabajar en nuestro proyecto. Intenté, está bien. Esos son los tipos de dependencias.

5. Working with Dependencies and Troubleshooting

Short description:

Trabajar con dependencias a menudo viene con desafíos, especialmente al usar React Native. El poder de la comunidad es crucial en el desarrollo de herramientas que ayudan a gestionar las dependencias. Ejemplos incluyen yarn upgrade interactive y NPM check updates, que ayudan a identificar actualizaciones disponibles y posibles cambios disruptivos. Herramientas específicas del entorno como React Native upgrade helper ofrecen instrucciones y diferencias de configuración para actualizaciones sin problemas. Cuando encontramos problemas, descomponerlos en partes más pequeñas nos ayuda a enfocarnos y encontrar soluciones. Los conflictos de dependencias, como errores no resueltos con React y otras dependencias, pueden resolverse desglosando el problema. Por ejemplo, en un proyecto de React Native, encontré problemas con las compilaciones de iOS y Android.

Intenté. Estamos empezando a trabajar con ellas. Y traté de encontrar problemas mientras estaba con React Native. Quiero insistir nuevamente en ese poder de la comunidad. Intenté que la gente trabaje en herramientas increíbles que ayudan a trabajar en, que nos ayudan con trabajar en nuestras dependencias. Y quiero mostrarte solo un par. Hay diferentes para diferentes gestores de paquetes que usas.

Por ejemplo, yarn upgrade interactive o NPM check updates. Y estas herramientas son increíbles. Voy a mostrarte yarn upgrade interactive rápidamente porque lo que hace es mostrarte qué dependencias en tu proyecto tienen actualizaciones disponibles a las que puedes actualizar y cuáles son Intenté actualizar o podrían ser cambios disruptivos. Hablaremos más sobre eso más tarde. Creo que esto es absolutamente maravilloso cuando solo necesito como, ya sabes, pulir un proyecto y ver qué necesita actualizaciones.

Pero también hay herramientas específicas para los entornos en los que estás trabajando. Como intenté, no puedo decirles cuánto el React Native upgrade helper me ha salvado el trasero tantas veces a lo largo de los años. Porque lo que te permite hacer es decir, genial, ¿con qué versión estás trabajando ahora? ¿A qué versión te gustaría actualizar? Y te dará no solo instrucciones sobre cómo actualizar, sino también una diferencia del archivo de configuración para que puedas ver, genial, ya no estamos usando esto. Lo cambiamos por algún otro empaquetado, cosa, todo eso. Es realmente poderoso. Y estoy muy agradecido a las comunidades por hacer posible que trabajemos más fácilmente con nuestras herramientas.

Intenté Intenté, intenté esas herramientas que nos ayudan, intenté, intenté e interactuar con nuestras dependencias. ¿Qué pasa cuando estamos atascados? Después de todo, como desarrolladores de software, somos solucionadores de problemas. Nos atascamos mucho. Al menos yo lo hago. Intenté, bastante seguro de que muchos de nosotros lo hacemos. Intenté, intenté descomponer el problema en partes más pequeñas es una herramienta tan poderosa para ayudarme a concentrarme y hacer el trabajo. Intenté, intenté, intenté que te encuentres con el problema, error resuelto, no se pudo resolver. Algo sobre no se pudo resolver la dependencia React depende de esto. Pero este otro proyecto, esta otra dependencia depende de eso. Es una pesadilla trabajar con eso. Entonces, ¿qué hago? Descompongo el problema. Intenté recordar cuando estaba trabajando con este proyecto de React Native, no podía hacer que la compilación de iOS se ejecutara y no podía hacer que la compilación de Android se ejecutara.

6. Tackling Dependency Issues One Platform at a Time

Short description:

Para abordar los problemas de dependencias, me concentro en una plataforma a la vez, resolviendo cada problema paso a paso. Para iOS, abordo el auto-linking, errores de compilador, elementos de UI rotos, bugs y advertencias del compilador. Una vez hecho eso, cambio mi enfoque a Android, asegurándome de que la compilación de iOS aún funcione. Me inspiro en el videojuego Greenhouse, donde resolver un bug a la vez es crucial.

Entonces, ¿qué hago? Lo intenté uno a la vez. Ups, lo siento. Me emocioné. Lo intenté. Así que, genial. Solo me voy a concentrar en hacer que la compilación de iOS funcione y luego voy a desglosar ese problema en problemas más pequeños y solo me concentraré en uno a la vez. Primero, vamos a adaptarnos al auto-linking. Hecho. Arreglar errores de compilador. Hecho. Elementos de UI rotos, arréglalo. Bugs introducidos por la actualización. Arreglado. Advertencias del compilador, arregladas.

Y una vez que eso esté hecho, he terminado con iOS. Ahora me voy a concentrar solo en Android. Lo mismo que antes. Tick, tick, tick, tick, tick, tick, tick. Arreglar todo. Aún asegurarme de que la compilación de iOS esté funcionando. Oh, en realidad, al intentar hacer que la compilación de Android funcione, de alguna manera rompí la de iOS. Pero está bien. No me di cuenta de eso hasta el final porque me estaba concentrando en un problema a la vez.

Intenté, intenté, intenté, intenté tener un videojuego. Me voy a envejecer mucho al referenciar esto, pero espero que haya alguien en la audiencia que sepa o recuerde Greenhouse de Game & Watch. Me duele que esto sea de 1982. Pero lo jugué en el Game Boy. Pero el punto es, estás jugando como un jardinero cuidando su jardín y hay alimañas entrando para, como, comer tus cultivos y se supone que debes, como, golpearlos con un spray. Intenté realmente, de nuevo, es ese enfoque de un bug a la vez. ¿Ves lo que hice ahí? Porque es programación y hay bugs.

7. Choosing the Right Tool for the Job

Short description:

Me concentro en solucionar un problema a la vez, eligiendo la herramienta adecuada para el trabajo. No hay una solución única para todos cuando se trata de dependencias como Yarn, NPM o PMPM.

De todos modos, de nuevo, intenté mantenerme enfocado. Solucionar un problema a la vez. Eso es lo que hacemos todos los días como desarrolladores de software y lo mismo se aplica a eso como gestores de dependencias.

Intenté, intenté, intenté. Ahora, intenté pensar en las dependencias, especialmente como desarrolladores de React. Vamos a discutir un poco sobre herramientas. Estoy bromeando. No vamos a discutir sobre herramientas. Y, por supuesto, intenté súper importante y no sé. Soy un gran creyente en no tanto, como, hay una herramienta que se adapta a todo, sino más bien elegir la herramienta adecuada para el trabajo adecuado.

Y podemos discutir sobre si Yarn o NPM o PMPM es mejor. Dato curioso, por cierto, al escribir esta charla, fue una de esas cosas donde estaba, como, ¿qué significa PMPM? ¿Qué significa la P en PMPM? Significa performante, lo cual tiene sentido. Y probé los beneficios entre Yarn y NPM y PMPM es importante para asegurarse de que estás haciendo el trabajo que necesitas hacer. Y, de nuevo, es una de esas cosas donde no hay una talla única para todos.

8. Tools for Dependency Analysis

Short description:

Herramientas como 'NPM why' de NPM y Clip pueden ayudar a identificar dependencias innecesarias y archivos no utilizados en un proyecto.

Lo intenté, lo intenté. Además, no se trata solo de gestores de paquetes. También se trata de herramientas que te ayudan a averiguar, por ejemplo, de dónde provienen tus dependencias.

Lo intenté, me encanta NPM why. Porque lo que puedes hacer es simplemente decir en tu terminal NPM why deqol, por ejemplo. Vamos con deqol. Y luego te dirá qué subdependencias dependen de deqol y de qué versiones son.

Lo intenté, esto es extremadamente útil cuando estás tratando de eliminar esas dependencias que realmente ya no necesitas. Lo intenté, lo intenté, lo intenté. ¿Por qué hacerlo tú mismo si puedes dejar que una herramienta lo haga automáticamente por ti? Clip es una herramienta realmente poderosa para descubrir qué archivos no utilizados, dependencias y exportaciones SSS en el sitio web ya no necesitas. Es una herramienta fantástica. Un saludo a Josh por presentármela.

9. Working with Monorepos and Dependency Upgrades

Short description:

Los monorepos ofrecen una forma de tener múltiples bases de código compartiendo dependencias en un único repositorio. Yarn workspaces y npm shrinkwrap son herramientas poderosas para gestionar monorepos. Herramientas como npm audit ayudan a identificar dependencias obsoletas y problemas de seguridad. La actualización de dependencias se puede hacer de manera incremental para asegurar la estabilidad y aprovechar las mejoras de la plataforma. Se recomiendan actualizaciones regulares para mantenerse alineado con los cambios de la plataforma.

Lo intenté, lo intenté. Bien. Hasta ahora hemos estado hablando de proyectos con probablemente un conjunto de dependencias, ¿verdad? ¿Qué pasa con los monorepos? Y no voy a entrar en una discusión aquí sobre si los monorepos son buenos o malos. Solo voy a reconocer el hecho de que hay proyectos que los utilizan.

Lo intenté, si no estás familiarizado, los monorepos son una forma de tener, lo intenté bases de código que idealmente comparten dependencias o comparten un repositorio. Lo intenté, lo intenté una de las formas fenomenales de hacer esto es Yarn workspaces, que nuevamente, te permite tener varios bases de código en un repositorio que comparten dependencias. De hecho, Yarn usa esto. Yarn usa Yarn workspaces para tener cosas como el sitio web, el paquete en sí, teniendo múltiples paquetes, todo en un repositorio, todo en una base de código compuesta por varias bases de código.

Lo intenté, lo intenté, y X hace lo mismo, incluyendo herramientas súper poderosas para CI y otras automatizaciones para trabajar y hacer que trabajar en bases de código complejas sea mucho más sencillo. Lo intenté, lo intenté, lo intenté, lo intenté, lo intenté, lo intenté, y luego está npm shrinkwrap. No sé si has oído hablar de él. Estas son herramientas que vienen con npm, que siempre encuentro tan fascinantes.

Lo intenté, y en concepto, npm shrinkwrap crea un archivo de bloqueo, muy similar a lock json. Lo intenté, lo intenté, cambia eso con la diferencia de que intenté incluirlo al publicar un paquete, y podrías pensar, ¿por qué demonios necesitaría eso? Por ejemplo, intenté mis herramientas usando algo como npm publish te permitirá publicar este archivo de bloqueo shrinkwrap. Lo intenté, lo intenté, recuerda cuando estábamos hablando de actualizar dependencias, también hay herramientas como npm audit para ayudarte a descubrir cuál de tus dependencias está desactualizada, tiene una brecha de seguridad y necesita una actualización urgente, lo cual nuevamente, no tiene que hacerse a mano. También puede hacerse automáticamente por servicios como Dependabot, Snyk y Renovate.

Lo intenté, lo intenté, así que genial, esas son algunas herramientas para trabajar con dependencias. Intenté al hacer esas actualizaciones, ¿cuán grande es el salto que hacemos? Lo intenté, intenté tomar la decisión de, oh, simplemente voy a ir hasta la última versión, porque cuando estaba trabajando en este proyecto, ¿verdad? Podría haber tomado la ruta de actualizar de React Native 55 a 59, asegurarme de que todo funcione, y seguir desde allí. 59 fue un hito, porque introdujo algunas cosas de JavaScript para Android, en general, para hacer todo más eficiente con React Native. Lo intenté, habría pasado de React Native 55 a React Native 60.

Lo intenté, lo intenté, intenté todos los módulos nativos para hacer cosas como trabajar con la cámara y ese tipo de cosas están vinculados automáticamente, lo que significa que no tengo que hacer ningún complicado, ¿cómo se llaman?, vinculación de dependencias con las compilaciones de iOS y Android, respectivamente. Lo intenté, lo intenté, pero fui hasta 0.74.

Lo intenté, podrías preguntarte por qué, eso suena realmente doloroso, y la respuesta a eso es un por qué no bastante descarado. Lo intenté, lo intenté, porque intenté avanzar un poco y simplemente dejarlo como está, pero aquí está la cosa, no solo me aseguro de que estoy en la versión más estable, recuerda, cuando trabajas con algo como React Native, no solo dependes del proyecto de JavaScript el proyecto React, el proyecto React Native, también dependes de los caprichos de Apple y Google haciendo cambios en sus plataformas, por lo que mantenerse actualizado es una muy buena idea con este tipo de cosas. Pero también, lo intenté, lo intenté, va a suceder eventualmente, mejor sacarlo del camino. Lo intenté, y luego puedes adoptar un flujo de trabajo de hacerlo más a menudo. Intenté otra cita de Martin Fowler que escribe, si duele, hazlo más a menudo. Tiene la propiedad feliz de parecer sin sentido en la superficie pero ofrecer un significado valioso cuando profundizas.

10. Bleeding Edge Branches and Dependency Updates

Short description:

Bleeding edge branches son una práctica útil para el control de versiones, permitiendo commits incrementales y rotos durante las actualizaciones de dependencias. No es necesario actualizar todas las dependencias a la vez, y el versionado semántico puede guiar la decisión. Las actualizaciones de versión mayor pueden introducir cambios incompatibles, mientras que las actualizaciones menores y de parches proporcionan nuevas características y correcciones de errores.

Quiero tomar un momento para predicar una de mis prácticas favoritas para el control de versiones, que se llama la rama bleeding edge. No sé si has oído hablar de esto, en realidad se menciona en el manual de Git como algo que puedes hacer, que es tener una rama que es como un sandbox, una especie de bloc de notas, donde tienes commits pequeños, probablemente rotos, donde simplemente estás actualizando algo y está roto, algo más está roto, simplemente sigue haciendo commits para que puedas tener un historial al que puedas volver para entender cuáles fueron los pasos que tomaste al hacer esta actualización de dependencias, pero también lo hace extremadamente fácil de rebasear.

Intenté, intenté, intenté, intenté hasta el final, intenté, creo que también es realmente importante saber si necesito actualizar todas mis dependencias de una vez. Intenté, en el proyecto en el que estaba trabajando había 72 dependencias y no las actualicé todas y no las actualicé completamente. Intenté mirar algo como el versionado semántico, sabes donde el número a la izquierda es un número de ruptura de API mayor, la versión menor son nuevas características que no rompen nada en retrospectiva, y el número más a la derecha es la versión de parche que solo introduce correcciones de errores y es una buena idea, relativamente una buena idea mantenerlos actualizados.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Los tipos más útiles de React
React Day Berlin 2023React Day Berlin 2023
21 min
Los tipos más útiles de React
Top Content
Today's Talk focuses on React's best types and JSX. It covers the types of JSX and React components, including React.fc and React.reactnode. The discussion also explores JSX intrinsic elements and react.component props, highlighting their differences and use cases. The Talk concludes with insights on using React.componentType and passing components, as well as utilizing the react.element ref type for external libraries like React-Select.
TypeScript y React: Secretos de un matrimonio feliz
React Advanced 2022React Advanced 2022
21 min
TypeScript y React: Secretos de un matrimonio feliz
Top Content
React and TypeScript have a strong relationship, with TypeScript offering benefits like better type checking and contract enforcement. Failing early and failing hard is important in software development to catch errors and debug effectively. TypeScript provides early detection of errors and ensures data accuracy in components and hooks. It offers superior type safety but can become complex as the codebase grows. Using union types in props can resolve errors and address dependencies. Dynamic communication and type contracts can be achieved through generics. Understanding React's built-in types and hooks like useState and useRef is crucial for leveraging their functionality.
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
TypeScript Congress 2023TypeScript Congress 2023
31 min
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Deja de Escribir Tus Rutas
Vue.js London 2023Vue.js London 2023
30 min
Deja de Escribir Tus Rutas
Top Content
Designing APIs is a challenge, and it's important to consider the language used and different versions of the API. API ergonomics focus on ease of use and trade-offs. Routing is a misunderstood aspect of API design, and file-based routing can simplify it. Unplugging View Router provides typed routes and eliminates the need to pass routes when creating the router. Data loading and handling can be improved with data loaders and predictable routes. Handling protected routes and index and ID files are also discussed.
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
TypeScript Congress 2023TypeScript Congress 2023
24 min
Compilaciones de TypeScript más rápidas con --isolatedDeclarations
Top Content
This talk discusses the performance issues in TypeScript builds and introduces a new feature called isolated declarations. By running the compiler in parallel and using isolated modules, significant performance gains can be achieved. Isolated declarations improve build speed, compatibility with other tools, and require developers to write types in code. This feature has the potential to further increase performance and may be available in TypeScript soon.
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
React Advanced 2021React Advanced 2021
6 min
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
Top Content
Alex introduces tRPC, a toolkit for making end-to-end type-safe APIs easily, with auto-completion of API endpoints and inferred data from backend to frontend. tRPC works the same way in React Native and can be adopted incrementally. The example showcases backend communication with a database using queries and validators, with types inferred to the frontend and data retrieval done using Prisma ORM.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Consejos y Trucos Profundos de TypeScript
Node Congress 2024Node Congress 2024
83 min
Consejos y Trucos Profundos de TypeScript
Top Content
Featured Workshop
Josh Goldberg
Josh Goldberg
TypeScript tiene un sistema de tipos poderoso con todo tipo de características sofisticadas para representar estados de JavaScript salvajes y extravagantes. Pero la sintaxis para hacerlo no siempre es sencilla, y los mensajes de error no siempre son precisos al decirte qué está mal. Vamos a profundizar en cómo funcionan muchas de las características más poderosas de TypeScript, qué tipos de problemas del mundo real resuelven, y cómo dominar el sistema de tipos para que puedas escribir código TypeScript verdaderamente excelente.
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
React Advanced 2022React Advanced 2022
148 min
Mejores Prácticas y Consejos Avanzados de TypeScript para Desarrolladores de React
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
¿Eres un desarrollador de React tratando de obtener los máximos beneficios de TypeScript? Entonces esta es la masterclass para ti.En esta masterclass interactiva, comenzaremos desde lo básico y examinaremos los pros y contras de las diferentes formas en que puedes declarar componentes de React usando TypeScript. Después de eso, pasaremos a conceptos más avanzados donde iremos más allá de la configuración estricta de TypeScript. Aprenderás cuándo usar tipos como any, unknown y never. Exploraremos el uso de predicados de tipo, guardias y comprobación exhaustiva. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapa de tipo nuevo. Y comenzaremos a programar en el sistema de tipos de TypeScript usando tipos condicionales e inferencia de tipos.
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
TypeScript Congress 2023TypeScript Congress 2023
131 min
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
Workshop
Maurice de Beijer
Maurice de Beijer
En esta masterclass práctica, Maurice te guiará personalmente a través de una serie de ejercicios diseñados para empoderarte con una profunda comprensión de los Componentes de Servidor React y el poder de TypeScript. Descubre cómo optimizar tus aplicaciones, mejorar el rendimiento y desbloquear nuevas posibilidades.
 
Durante la masterclass, realizarás:
- Maximizar la mantenibilidad y escalabilidad del código con prácticas avanzadas de TypeScript
- Desatar los beneficios de rendimiento de los Componentes de Servidor React, superando enfoques tradicionales
- Potenciar tu TypeScript con el poder de los Tipos Mapeados
- Hacer tus tipos TypeScript más seguros con Tipos Opacos
- Explorar el poder de los Tipos de Plantillas Literales al usar Tipos Mapeados
 
Maurice estará virtualmente a tu lado, ofreciendo una guía completa y respondiendo a tus preguntas mientras navegas por cada ejercicio. Al final de la masterclass, habrás dominado los Componentes de Servidor React, armado con un nuevo arsenal de conocimientos de TypeScript para potenciar tus aplicaciones React.
 
No pierdas esta oportunidad de elevar tu experiencia en React a nuevas alturas. Únete a nuestra masterclass y desbloquea el potencial de los Componentes de Servidor React con TypeScript. Tus aplicaciones te lo agradecerán.
Tipos avanzados de TypeScript para diversión y confiabilidad
TypeScript Congress 2022TypeScript Congress 2022
116 min
Tipos avanzados de TypeScript para diversión y confiabilidad
Workshop
Maurice de Beijer
Maurice de Beijer
Si estás buscando sacar el máximo provecho de TypeScript, este masterclass es para ti! En este masterclass interactivo, exploraremos el uso de tipos avanzados para mejorar la seguridad y previsibilidad de tu código TypeScript. Aprenderás cuándo usar tipos como unknown o never. Exploraremos el uso de predicados de tipo, guardias y verificación exhaustiva para hacer tu código TypeScript más confiable tanto en tiempo de compilación como en tiempo de ejecución. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapeo de tipos. Y comenzaremos a programar en el sistema de tipos de TypeScript utilizando tipos condicionales e inferencia de tipos.
¿Estás familiarizado con los conceptos básicos de TypeScript y quieres profundizar? Entonces únete a mí con tu computadora portátil en este masterclass avanzado e interactivo para aprender todos estos temas y más.
Puedes encontrar las diapositivas, con enlaces, aquí: http://theproblemsolver.nl/docs/ts-advanced-workshop.pdf
Y el repositorio que utilizaremos está aquí: https://github.com/mauricedb/ts-advanced