Escalando una Aplicación de React de 0 a Usuarios Brasileños

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Comenzar una startup es una cosa - escalarla es una bestia completamente diferente. En esta charla práctica, impulsada por la experiencia, te llevaré a través de nuestro viaje de dos años construyendo y escalando una aplicación de JavaScript desde cero. En lugar de conceptos teóricos, escucharás historias reales sobre los desafíos técnicos que enfrentamos y las soluciones que implementamos.

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

Neciu Dan
Neciu Dan
19 min
17 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hace tres años, enfrenté una difícil decisión de cambio de trabajo. Elegí el rol de cofundador tecnológico para una idea innovadora 'guerra con el botón de aplicar a empleo' para universidades. Validación de la startup a través del compromiso por correo electrónico con los tomadores de decisiones, evitando la búsqueda prematura de inversión. Énfasis en la adaptabilidad del stack tecnológico, diseño modular y reutilización. Desafíos con la gestión de bibliotecas de terceros, reorganización de la biblioteca de componentes y optimización de la carga de CSS. Enfoque en la mejora de la calidad de la aplicación, mejora del proceso de lanzamiento para el éxito global.

1. Lessons from Career OS Startup

Short description:

Hace tres años, enfrenté una difícil decisión de cambio de trabajo. Dos ofertas: ingeniero bien remunerado en una gran empresa o cofundador tecnológico con acciones. Elegí esta última por la oportunidad de construir desde cero, centrándome en una idea innovadora: 'guerra con el botón de aplicar a trabajos' para universidades, fundada por los estudiantes Max y Marcus.

Una lección del mundo real sobre escalar una aplicación de JavaScript. Así que hace unos tres años, estaba en una posición muy difícil. Estaba nervioso. No podía concentrarme en nada. Miraba mi teléfono cada dos minutos porque tenía una decisión realmente importante que tomar. Decidí cambiar de trabajo, y tenía dos grandes ofertas sobre la mesa. Podía elegir ser un ingeniero de software senior bien remunerado en una empresa pública que tenía más de mil ingenieros, o podía elegir una posición de cofundador tecnológico con poco o ningún salario pero con acciones en la empresa y la oportunidad de construir el software desde cero.

Y me di cuenta de que me encanta construir cosas y ensuciarme las manos, y esto es un gran pero, siempre dejo los proyectos con solo las ventanas y puertas que faltan, como en el pequeño video aquí. Así que decidí que esta era la oportunidad perfecta para experimentar construyendo algo desde cero. Pero, ¿a qué accedí? ¿Cuál fue la idea que me hizo rechazar un salario lucrativo y la comodidad de un buen trabajo estable? Y la premisa básica era esta.

Vamos a la guerra con el botón de aplicar a trabajos. Este producto es solo para universidades, así que no estoy tratando de venderte nada. Pero no decimos, no te molestes. Decimos, no te molestes en aplicar a trabajos, haz networking y construye relaciones duraderas para que puedas ser recomendado para posiciones abiertas. Y hay todo tipo de empresas que hacen esto. Y los fundadores originales, Max y Marcus, eran estudiantes ellos mismos, y querían construir algo para estudiantes por estudiantes. Así que se reunieron una noche con un par de cervezas y dibujaron el flujo de Career OS, ese es el nombre de la empresa, en un trozo de papel. Y se ve algo así.

2. Startup Validation Strategies

Short description:

Se recopilaron correos electrónicos de 30 tomadores de decisiones, se inició el proceso de validación por correo electrónico en frío. Inicialmente no había startup, dinero ni producto. Recibieron respuestas, decidieron seguir con la idea, encontraron un cofundador técnico, recaudaron fondos. Error común de los emprendedores tecnológicos: validar ideas con las personas equivocadas, buscar inversión prematuramente. Idea validada a través de correos electrónicos, se involucraron con inversores para obtener retroalimentación, no financiación. Mantuvieron a las partes interesadas informadas mensualmente.

Recopilaron los correos electrónicos de alrededor de 30 tomadores de decisiones de escuelas con poder adquisitivo y les enviaron correos electrónicos en frío. Ahora, este es un ejemplo de un correo electrónico que enviaron hace dos años. Así que quiero enfatizar que en este punto no había startup. No había dinero. No había producto. Solo querían validar su idea. Si nadie respondía a su correo electrónico en frío, la idea era un fracaso. En cambio, aunque eran vacaciones de Navidad, recibieron alrededor de 10 respuestas. Entonces, y solo entonces, decidieron, OK, la idea valía la pena seguir adelante y se lanzaron a toda máquina a encontrar un cofundador técnico, yo, y recaudar dinero para construir una startup.

Ahora, el mayor error que noto que cometen los emprendedores tecnológicos es este. Tienen una idea para un negocio. Ahora, creo que esto nos ha pasado a todos. Así que si tienes una idea, probablemente harías esto. Comienzas a construir tu MVP e implementar un MVP. Y luego, para aquellos que construyen un MVP, van y lo validan con las personas equivocadas. Usualmente preguntan a sus amigos, preguntan a sus colegas de trabajo o incluso a sus padres. Y luego, con su MVP y la bendición de su madre, intentan recaudar dinero.

Ahora, siendo técnicos, van al único lugar del que han oído hablar, que es Y Combinator, donde usualmente son rechazados. Y cuando dicen que el 95 por ciento de las startups fallan, estas son las startups que usualmente fallan porque siguieron esta fórmula. Ahora, estos pilares tienen que ir de la mano de principio a fin, como hicimos con CareerOS. Validamos la idea sin gastar dinero, solo enviando correos electrónicos. Luego, cuando obtuvimos la respuesta, enviamos correos electrónicos a inversores que usualmente invierten en la industria de tecnología educativa superior. Y no intentamos obtener dinero. No propusimos nada transaccional. Solo medimos su interés. Solo les pedimos retroalimentación. Y solo para que lo sepas, a los inversores les encanta dar retroalimentación. Así que cada mes manteníamos a los inversores potenciales y clientes informados sobre nuestro trabajo y manteníamos a posibles contrataciones en el pipeline.

3. Tech Stack Adaptability and Modular Design

Short description:

Comunicación por correo electrónico a varios interesados, lanzamiento exitoso del MVP, asegurando financiamiento. Desafíos enfrentados en la evolución tecnológica, énfasis en la adaptabilidad. Enfoque de diseño modular inspirado en la NASA para el desarrollo de aplicaciones, enfoque en la reutilización y evitar errores pasados de UI.

Ahora, en este correo electrónico, mencionamos que lo enviamos a todo tipo de personas como amigos, familia, mentores. En realidad, lo estábamos enviando a posibles inversores o posibles clientes. Así que nuestro canal de comunicación era nuestro principal canal de adquisición. Y después de seis semanas de hacer esto, teníamos nuestro primer MVP.

Así es como se veía. Entonces, la idea de CareerOS es que no solicitas tus trabajos, construyes relaciones para tus empresas soñadas y tienes una mayor oportunidad cuando se abre un trabajo. Con este MVP, conseguimos cuatro clientes de pago y recaudamos $800,000 en nuestra ronda de pre-semilla para poder contratar un equipo y simplemente hicimos todo al mismo tiempo.

Ahora, podría parecer imposible, pero este era yo hace 13 años en mi primer trabajo como programador. Al ver esto, podrías pensar, OK, ¿qué pasó? Bueno, tuve que trabajar con Angular 1.

4. Tech Stack Challenges and Modular Design Approach

Short description:

Trabajando con varios frameworks, desafíos del stack tecnológico, importancia de la adaptabilidad. Evitar tecnología obsoleta, construir propia biblioteca de componentes, enfoque de diseño modular.

Tuve que trabajar con React cuando tenía componentes de clase. En otra empresa, estaba usando V2 y Nuxt2. A veces hacía Laravel o PHP. Así que puedo decirte que al construir un producto y elegir un framework, tu mayor enemigo es el tiempo. En nuestra industria y ecosistema, cada semana aparece algo nuevo y no quieres quedarte atrás, o peor, ser incapaz de desarrollar algo porque tu stack está obsoleto.

Piensa en intentar integrar OpenAI SDK dentro de Angular 1. Es prácticamente imposible. Estamos tratando de contratar nuevos desarrolladores de Angular 1 en 2025. Estoy seguro de que puedes encontrar personas que sean capaces de programar en Angular 1, pero ¿quieren hacerlo? No lo creo. Así que al elegir el stack tecnológico para nuestra empresa, mi mayor temor era quedarme atrás. Así que hice algunas reglas para asegurarme de que siempre podamos actualizar nuestro stack o cambiarlo completamente. Así que no quería usar ninguna biblioteca de UI. Queremos construir nuestra propia biblioteca de componentes. No quería usar ninguna biblioteca de terceros, y no quería usar ninguna herramienta sin código.

También estaba profundamente impresionado por cómo la NASA y el mundo han logrado construir una estación espacial internacional. Así que la ISS fue construida usando diseño modular, y simplemente enviaron, durante 30 años, diferentes partes de la estación espacial. Así que al diseñar mi aplicación, quería trabajar de la misma manera. Cada módulo tenía directrices dedicadas, estructura de carpetas e interfaz. Pero para que funcionen, también necesitábamos un sistema de diseño y biblioteca de componentes. No quería repetir los errores de UI de mi pasado, y quería hacer todo reutilizable. Así que el primer archivo que creé en la aplicación fue en realidad variables CSS, tipografía SAS, mixins, para asegurar que siempre sigamos los mismos patrones de diseño.

5. Managing Third-Party Library Dependencies

Short description:

Desafíos con bibliotecas de terceros, gestión de dependencias y migraciones.

Y por supuesto, cada componente tenía que tener una prueba unitaria, un storybook y pruebas de accesibilidad. Ahora, tenía tantas reglas establecidas cuando comencé, que olvidé esta famosa cita de Mike Tyson, como, todos tienen un plan hasta que reciben un puñetazo en la boca. Así que el primer golpe fue más bien una bofetada, pero nos dimos cuenta de que la regla de no usar aplicaciones de terceros era prácticamente imposible. Sucedió primero con la función de arrastrar y soltar de Arcamba. No importa cuánto lo intenté, simplemente no podía lograr que fuera perfecto. Y después de dos o tres días de codificación frustrante, me rendí e instalé React Beautiful DND.

Luego tuvimos que instalar Firebase para otros proyectos, luego analíticas. Luego necesitábamos manejar texto enriquecido, así que añadimos React Quill. Diferentes analíticas como June, Google Analytics, Customer IO, Sentry, React Loading para videos, React PDF cuando construimos el creador de currículums. Y como puedes ver, se salió de control. Ni siquiera cabe en la imagen. Actualmente tenemos más de 60 bibliotecas de terceros en la aplicación. Y con cada biblioteca que añadimos, nuestra capacidad para migrar y mantener la aplicación actualizada disminuyó, lo cual es algo que realmente temía.

Entonces, ¿qué hicimos? Bueno, para cada herramienta de terceros que añadimos, creamos un componente envoltorio o proxy que exponía una interfaz que usamos en diferentes partes de la aplicación. De esta manera, si alguna vez necesitábamos reemplazar Mixpanel por otra cosa, solo teníamos que cambiarlo en este componente envoltorio y hacer que la nueva biblioteca usara la misma interfaz que la antigua. Fuimos un paso más allá. En lugar de llamar a diferentes eventos en nuestro producto, encapsulamos todas nuestras analíticas en un módulo de analíticas. De esta manera, si alguna vez necesitamos añadir otra biblioteca de seguimiento para, digamos, eventos de Algolia, simplemente los añadimos aquí en el hook de analíticas de usuario y se aplican automáticamente en toda la aplicación.

6. Component Library Reorganization Challenges

Short description:

Desafíos con la reorganización de la biblioteca de componentes y la gestión de la profundidad técnica.

Y también lo hizo súper, súper fácil eliminar módulos también. Ahora, todas nuestras bibliotecas de terceros, alrededor de 60, están encapsuladas en su propio módulo envoltorio. Y esto también ayuda con el proceso de construcción porque si importas una tercera biblioteca desde Node modules en toda tu aplicación, podría aumentar las posibilidades de ser añadida dos veces dentro de la construcción.

Ahora, otro golpe que recibimos fue con nuestra biblioteca de componentes y sistema de diseño. Un año en nuestro inicio de vida, comenzamos nuestro tercer proyecto. Y luego decidimos, está bien, inicialmente teníamos todos nuestros componentes en la misma carpeta raíz. Y luego decidimos, está bien, vamos a moverlo a un paquete npm. Pensamos que iba a ser fácil, pero estábamos completamente equivocados. Teníamos alrededor de 50 componentes en ese momento. Y decidimos simplemente empezar pequeño y comenzamos con el botón. Pero después de mover todo y hacer que el componente del botón funcionara para nuestra biblioteca de componentes, pensamos, está bien, ahora la parte difícil ha terminado.

Quedan 49 componentes más. Es una aventura fácil, 20 minutos. Vamos. La realidad fue otro golpe. Pensamos que manteníamos todos nuestros componentes tontos, pero desafortunadamente, mucha lógica relacionada con el proyecto se infiltró dentro de los componentes, como la navegación basada en el enrutador, valores relacionados con el estado o incluso llamadas a la API en algunos casos extremos. Y también tuvimos una condición de carrera. Para cuando movimos el componente dentro de una biblioteca de componentes, en la carpeta, podría haber cambiado ya en el proyecto principal. Así que la velocidad del equipo era tan rápida que nuestra profundidad técnica nos estaba golpeando fuerte.

7. Optimizing DevTools and CSS Loading

Short description:

Abordando errores de implementación con la ralentización de DevTools y optimizando la carga de CSS para mejorar el rendimiento.

Así que abordamos esto en tres etapas. Figma como fuente de verdad, mover componentes uno por uno y asignar un líder de proyecto que se encargara de distribuir el trabajo, pero también revisor obligatorio para no permitir que la carpeta de componentes dentro del proyecto se siga trabajando. Y luego mover storybook CICD y crear un pipeline CICD que mantenga la aplicación principal y la biblioteca sincronizadas. Así que si hay algo que cambiaría, si pudiera volver en el tiempo, haría el paquete npm desde el principio y no esperaría hasta que fuera necesario.

Otro golpe que recibí fue un serio error de implementación que cometimos. Comenzamos a notar un año después de nuestro inicio que DevTools en el navegador comenzaba a volverse más y más lento. Eventualmente, se volvió inutilizable. Ahora, la razón de esto fue que notamos que los estilos se estaban cargando mil veces para cada componente de los modelos que estábamos usando. Así que todo estaba bien en la construcción final porque tenía tree shaking, pero en el modo de desarrollo, no funcionaba. Ahora, asumí que el problema era con la importación de SAS como datos adicionales dentro de nuestra configuración de Vite.

Y al principio, pensé que era porque estábamos usando la palabra clave import y no la palabra clave use. Así que lo cambié. Esto lo hizo mejor y más limpio. Y ahora podía observar qué archivos se estaban importando una y otra vez. Así que noté que eran solo nuestras reglas raíz de CSS, como nuestras variables. Y mirando en los archivos, me di cuenta de que puse estos en la tipografía dentro de la utilidad, que son archivos SAS. Así que también agregué allí los archivos CSS.

8. Optimizing CSS Loading and Bundle Management

Short description:

Optimización de la carga de CSS y el tamaño del paquete con raíces de carga diferida, abordando errores de importación de módulos durante la implementación, e implementando un sistema de gestión de caché basado en versiones.

Así que si no lo sabes, cuando usas datos adicionales, solo necesitas tener datos relacionados con SAS dentro de datos adicionales. Así que, por ejemplo, en variable CSS, debería ser solo variables SAS, funciones SAS y mixins SAS. Y yo, porque añadí CSS, se añadió para cada componente el CSS en la parte superior del componente. Así que me puse a trabajar. Moví todos los archivos raíz a un archivo CSS global que importé en index.html. Y el problema desapareció. Y para hacer las cosas aún más embarazosas, esta única solución nos ahorró como 200K de nuestra construcción final de JavaScript.

Ahora, sobre el tamaño del paquete, seguimos añadiendo características. Así que nuestro paquete seguía aumentando y el rendimiento se estaba degradando. Así que decidimos usar la carga diferida de nuestras raíces principales usando React.lazy, así. Entonces, lo que sucede cuando haces esto es que si vas a una página, cargará el código relacionado con esa página solo cuando hagas clic en la navegación. Pero el problema fue que tan pronto como hicimos esto, en producción comenzamos a recibir algunos errores, que es el error de fallo al importar el módulo dinámico. Ahora, esto estaba sucediendo porque cada vez que implementábamos, si hay personas usando la aplicación y hacen clic en la navegación, nuestro proceso de implementación elimina el hash antiguo que la implementación está usando para propósitos de ruptura de caché y lo actualiza con uno nuevo.

Y cuando el usuario hace clic en la raíz, intenta obtener el hash antiguo en el servidor, pero ya no está allí. Ahora, Vite tiene un evento de error de precarga al que puedes escuchar globalmente. Y cuando esto sucede, simplemente recarga la página y esto funcionó el 99% del tiempo. Pero para un molesto 1%, estaban usando navegadores antiguos o Safari móvil por alguna razón, los dejaba en un bucle infinito. Así que exploramos diferentes soluciones. Y por supuesto, la más segura era no eliminar el hash antiguo del disco y mantener una o dos versiones en prone para que esto no suceda. Y esto, nuevamente, funcionó el 99% del tiempo, pero cuando teníamos cambios de API que rompían, también hacía que la aplicación fallara, lo cual tampoco queríamos. Y eventualmente, llegamos a nuestra solución final donde manteníamos ambas versiones del hash, pero en lugar de ser un hash aleatorio que Vite genera, usamos la versión del paquete de nuestras aplicaciones como el número de versión, como el hash.

9. App Quality Improvement Strategies

Short description:

Mantener la profundidad técnica, competencia de corrección de errores y mejorar el proceso de lanzamiento para asegurar la calidad y estabilidad de la aplicación.

Y luego, cuando hacemos un despliegue, tenemos un service worker que realmente se ejecuta en segundo plano, verifica si hay una nueva versión de la API, y cada vez que hay una nueva versión de la API, actualiza los source maps del manifiesto interno del usuario. Así que, en general, han pasado más de dos años. Estamos usando el último React, el último Vite, y el último TanSec. Y estamos bastante contentos de haber mantenido la profundidad técnica lo más cercana a cero posible mientras avanzamos muy, muy rápido en la construcción de un producto orientado al consumidor. Nuestra aplicación es muy buena ahora, si soy honesto, pero hace un año, estábamos inundados de errores, ya sean funcionales o visuales. Nuestra aplicación se rompía todos los días, especialmente durante las llamadas de ventas. Conteníamos la respiración para que no se rompiera, y tristemente, usualmente lo hacía. Se puso tan mal que todos tenían una broma corriente de que nuestra aplicación solo funcionaba el 60% del tiempo.

Entonces, ¿qué hicimos? Bueno, primero implementamos una política de no ventanas rotas. Así que si no lo sabes, la teoría de la ventana rota establece que si un vecindario tiene una ventana rota, normaliza el crimen y aumenta las tasas de criminalidad. Y sucede lo mismo en las aplicaciones. Si ya tienes errores en la aplicación, simplemente los acumulas en la lista de pendientes, creando una normalidad de que la aplicación tenga errores y se rompa. Dijimos basta. Y todos los miércoles durante todo el verano, dedicamos seis horas al día a la eliminación de errores, una competencia donde tomamos todos los errores de la lista de pendientes y los corregimos, desde errores de funcionalidad hasta errores visuales e incluso pequeñas mejoras y animaciones encantadoras.

Ahora, siendo el verano con las Olimpiadas, lo hicimos una competencia con medallas y otorgamos tarjetas de regalo de Amazon a los ganadores. En realidad, me tomó dos semanas encontrar la solución donde estoy primero. Así que fue un gran éxito para limpiar nuestra aplicación. Y como puedes ver, pero eso fue solo la mitad de la batalla. Queríamos asegurarnos de que las funcionalidades no se infiltraran en nuestros productos. Así que implementamos una forma diferente de trabajar. Nuestra aplicación front-end estaba alojada en Netlify. Y Netlify tiene la capacidad de crear vistas previas de despliegue. Y, por supuesto, puedes... Vercel tiene lo mismo y otros proveedores de alojamiento hacen lo mismo. Pero usamos estas vistas previas para hacer aceptación de diseño, pruebas de control de calidad y aceptación del producto antes de que cualquier cosa se fusione en main. Luego creamos un proceso de lanzamiento bastante bueno donde cada vez que fusionas algo, tenemos una acción de GitHub que toma el título del PR, determina la versión semántica, si es un cambio mayor, menor o de ruptura. Y luego agrega esto a nuestro borrador de lanzamiento en GitHub.

10. Release Process Enhancement and Global Success

Short description:

Mejorando el proceso de lanzamiento con recomendaciones para prácticas de codificación consistentes, facilitando la incorporación y las pruebas, y logrando reconocimiento global.

Así que a la izquierda, puedes ver todo lo que no se está lanzando porque no tenemos CI CD. Presionamos un botón manualmente. Así que si quieres leer más sobre este proceso de lanzamiento, tengo un tutorial completo en mi blog, nechudan.dev.

Pero finalmente, hicimos una fuerte recomendación en cada tema para usar Coursor. Y de esa manera, creamos reglas de Coursor que contienen cómo escribir nuestro SAS, cómo escribir nuestro HTML, usando sintaxis BEM para clases, cómo escribir nuestros tipos, React, nuestras pruebas. Ahora esto facilitó a los desarrolladores de back-end ingresar a la base de código y usar Coursor y hacer cambios si lo necesitan. Y para que los nuevos integrantes se incorporen más rápido.

Luego, en el propio PR, todos tienen que incluir lo que ha cambiado y agregar videos con el antes y después para facilitar las pruebas y la aceptación del producto. Ahora, avanzando rápidamente en solo dos años, vendimos nuestro producto a más de 50 universidades en todo el mundo, incluyendo grandes nombres como Oxford, Berkley, Stanford. Y con las mejores prácticas en su lugar, construimos este producto en solo dos años.

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

No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
React Day Berlin 2023React Day Berlin 2023
16 min
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
Top Content
This Talk focuses on effective React state management and lessons learned over the past 10 years. Key points include separating related state, utilizing UseReducer for protecting state and updating multiple pieces of state simultaneously, avoiding unnecessary state syncing with useEffect, using abstractions like React Query or SWR for fetching data, simplifying state management with custom hooks, and leveraging refs and third-party libraries for managing state. Additional resources and services are also provided for further learning and support.
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.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
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.
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión