Optimizando Aplicaciones React: Profundizando en el React Compiler

Bookmark
Rate this content

React 18 introduce el React Compiler, una herramienta poderosa para optimizar la renderización de componentes y mejorar el rendimiento. En esta charla, exploraremos cómo funciona el compiler, demostraremos mejoras prácticas de rendimiento y te mostraremos cómo integrar estas optimizaciones en tus proyectos.

Ya sea que estés trabajando en aplicaciones nuevas o existentes, te irás con ideas prácticas para aprovechar todo el potencial de React 18.

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

Vitor Malencar
Vitor Malencar
24 min
21 Nov, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Victor Alencar introduce el React compiler y discute sus posibles optimizaciones, incluyendo la evolución de la gestión de estado a hooks y mejoras de rendimiento. La charla profundiza en el uso de técnicas de memorización, optimizaciones del compiler y transformaciones de código para un mejor rendimiento de React. También cubre la utilización de caché, memorización automatizada y la adopción gradual del React compiler para mejorar la renderización de la UI. Además, la discusión involucra suposiciones del compiler, recomendaciones de depuración y simplificación de código para un uso optimizado de React.

1. Introduction to React Compiler

Short description:

Victor Alencar presentando el compilador de React, discutiendo las opciones actuales y compartiendo su experiencia personal en el desarrollo web.

Hola, React Summit. Mi nombre es Victor Alencar y estoy muy, muy feliz de estar aquí hoy para poder compartir un poco sobre el compilador de React y cómo podemos usarlo para automatizar las organizaciones de rendimiento en nuestras aplicaciones de React. He preparado nuestra agenda para hoy. Vamos a hablar sobre cómo funciona React, cuáles son las opciones actuales que tenemos en este momento, cómo funciona el compilador, cuáles son las reglas y cómo deberíamos adoptarlo.

Un poco sobre mí es que soy un sub-ingeniero con más de 10 años de experiencia. En este momento, soy un ingeniero de personal en una empresa llamada Chili Piper, y estoy creando contenido para la web. Así que puedes encontrarme en todas partes, en cualquier lugar. Tiene victormalencar en la web. Así que si tienes alguna pregunta o quieres comunicarte, estaré súper, súper feliz de ayudarte también.

Así que comencemos. Si eres como yo, probablemente comenzaste a crear aplicaciones web hace mucho tiempo cuando las herramientas que teníamos eran frameworks como Angular, que era muy agradable. Fue una diferenciación muy agradable de los antiguos frameworks como jQuery, donde teníamos más estado en nuestras aplicaciones. Hubo este período de transición donde teníamos cuando la experiencia de front-end estaba obteniendo más y más lógica de negocio, lo cual personalmente me gusta mucho, pero veo muchos problemas con el enfoque actual en un momento en que sentía que estaba aprendiendo Angular, no los valores predeterminados de la web.

2. Evolution of React State Management

Short description:

La evolución de React desde clases a hooks, proporcionando una API más intuitiva para la gestión del estado y la optimización del rendimiento en aplicaciones de React.

Y luego llegó React y nos trajo un panorama totalmente diferente donde todo estaba dentro de JavaScript, lo cual era muy agradable en ese momento y tenía mucho sentido, pero aún así, había algunas partes de este nuevo paradigma que no me convencían en absoluto. Así que al principio, teníamos clases, y era un poco complicado, un poco complicado, como puedes ver, ya sabes, para declarar una aplicación simple, tienes que pasar por todos esos estados. Y un poco verboso, un poco contraintuitivo ya que personalmente estaba más en un enfoque de estilo funcional, tener que lidiar con clases era bueno, pero no ideal. Pero luego, con el tiempo, React adoptó hooks, lo que para mí, hizo que todo encajara, tenía mucho sentido, tenemos una API más bien definida para controlar el estado, y era más explícito, era más simple de entender y crear aplicaciones.

Así que por primera vez, sentí que tenía lo necesario para crear experiencias muy asombrosas como la que te estoy mostrando. Para mí, React fue la solución que estaba buscando para crear mis aplicaciones web de una manera eficiente, de una manera fácil en la que pudiera crear declarativamente las interfaces que estaba tratando de hacer en ese momento. Pero si eres como yo, también te encuentras con este problema de que creas tu primera aplicación, estás muy emocionado, y luego vas a las herramientas de desarrollo, enciendes las actualizaciones, los resaltados, ¿y qué ves? Toda tu aplicación de React se convierte básicamente en un árbol de Navidad, donde en todas partes de tu aplicación, se está actualizando todo el tiempo con cada efecto con cada cambio.

Así que para entender por qué sucede esto, primero, necesitamos entender cómo se imaginó React al principio, y cómo llegó a ser. Básicamente, la forma en que React maneja las actualizaciones en nuestros componentes es que tenemos el componente padre, y cada vez que hay una actualización allí, haces clic en un botón, envías el formulario. Lo que sucede es que todos los hijos también reciben una actualización. Básicamente, si haces clic, digamos que envías un formulario, y tienes muchos hijos, porque los padres cambian, todos los hijos tienen que cambiar para asegurarse de que propagas el cambio a través de todas tus aplicaciones. Lo que nos hace pensar que React puede ser un poco sobrerreactivo a veces, lo cual estaba bien, pero a medida que creces tu aplicación, a medida que intentas crear cosas más complejas, definitivamente vas a ver que necesitamos más herramientas para hacer nuestras aplicaciones más rápidas y para asegurarnos de que actualizamos el estado solo cuando tenemos que hacerlo. Entonces, ¿cuáles son las opciones actuales que tenemos ahora mismo para este caso específico? Básicamente, podemos mirar nuestra aplicación aquí, donde tenemos una aplicación de comercio electrónico muy simple, y puedes ver aquí que creé este código de demostración, por cierto, solo para resaltar un caso simple donde podríamos aplicar algunas optimizaciones con las API actuales que tenemos disponibles en este momento.

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

Vite: Repensando las Herramientas de Frontend
JSNation Live 2021JSNation Live 2021
31 min
Vite: Repensando las Herramientas de Frontend
Top Content
Vite is a next-generation build tool that leverages native ES modules for improved performance. It eliminates the need for bundling and improves hot module replacement. Vite provides an opinionated default configuration while still allowing advanced customization through plugins. It is framework agnostic and can be used for React and other applications. Vite is being adopted by Next.js and Create React App, and integration with Nuxt 3 offers significant speed improvements.
Compilador React Forget - Entendiendo React Idiomático
React Advanced 2023React Advanced 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Turbopack. ¿Por qué? ¿Cómo? ¿Cuándo? y la Visión...
React Day Berlin 2022React Day Berlin 2022
32 min
Turbopack. ¿Por qué? ¿Cómo? ¿Cuándo? y la Visión...
Top Content
The Talk discusses TurboPack, a successor to Webpack, aiming to create a framework-independent, flexible, and extensible tool for the open-source community. It addresses performance challenges by integrating SWC into Next.js. The challenges with Next.js and Webpack include orchestration issues, backward compatibility constraints, and cache invalidation problems. TurboEngine and TurboPack provide constant performance in incremental builds, leveraging Rust's predictable performance and parallelism. The Talk also covers topics like dependency tracking, task graphs, cache invalidation, lazy asset graphs, and the integration of TurboPack with Next.js. The future plans involve reconfiguring Webpack and TurboEngine, moving computations to the cloud, providing insights into builds, and facilitating migration and integration with JavaScript projects.
Cómo Bun Hace que Construir Aplicaciones React Sea Más Simple y Rápido
React Day Berlin 2022React Day Berlin 2022
9 min
Cómo Bun Hace que Construir Aplicaciones React Sea Más Simple y Rápido
Top Content
BUN is a modern all-in-one JavaScript runtime environment that achieves new levels of performance. It includes BUN dev, a fast front-end dev server, BUN install, a speedy package manager, and BUN run, a fast package runner. BUN supports JSX, has optimized React server-side rendering, and offers hot module reloading on the server. The priorities for BUN include stability, node compatibility, documentation improvement, missing features in BUN install, AST plugin API, native Windows support, Bundler and Minifier optimization, and easier deployment to production. BUN's AST plugin API allows for bundle-time JavaScript execution and embedding code, potentially inspiring new frameworks.
El Núcleo de Turbopack Explicado (Codificación en Vivo)
JSNation 2023JSNation 2023
29 min
El Núcleo de Turbopack Explicado (Codificación en Vivo)
Tobias Koppers introduces TurboPack and TurboEngine, addressing the limitations of Webpack. He demonstrates live coding to showcase the optimization of cache validation and build efficiency. The talk covers adding logging and memorization, optimizing execution and tracking dependencies, implementing invalidation and watcher, and storing and deleting invalidators. It also discusses incremental compilation, integration with other monorepo tools, error display, and the possibility of a plugin system for Toolpag. Lastly, the comparison with Bunn's Builder is mentioned.
El funcionamiento interno de la construcción de Vite
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
El funcionamiento interno de la construcción de Vite
Welcome to vidBuild, a tool that optimizes your application for production by offering fast hodgemodule replacement and support for various technologies. The build process in vidBuild involves optimizing and minifying assets, bundling JS and CSS, and generating chunks for dynamic imports. The pipeline in vidBuild includes plugins for alias, resolution, CSS modules, and asset handling. Vid is a complete build tool with a flexible plugin system and support from a vibrant community. Vite's plugin API is compatible with Rollup, and Vite aims for simplicity while pushing complexity to the plugin system.

Workshops on related topic

Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
Workshop
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.