Herramientas de Desarrollo de Última Generación para React Server Components

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

La masterclass comenzará con una breve introducción a React Server Components y luego mostrará cómo se visualizan en una de las herramientas de desarrollo que hemos creado para RedwoodJS. Esto dará a todos una mejor comprensión de dónde están los límites cliente/servidor y cómo ""use client"" y las importaciones de componentes trabajan juntos para decidir qué código se ejecuta en el servidor RSC y qué código se ejecuta en el navegador del usuario. Esta comprensión es generalmente aplicable a cualquier marco habilitado para RSC (lo que principalmente significa NextJS en este momento).


Ahora, con la audiencia equipada con una mejor comprensión de los RSC, profundizaré en el formato de RSC Payload (también conocido como Flight) explicando qué es y cómo funciona. Para esta parte de la masterclass utilizaré una herramienta que hemos creado para grabar y visualizar el tráfico de red de RSC para ayudarme a explicar el protocolo RSC. También mostraré cómo ayuda a los desarrolladores a identificar cuellos de botella mostrando tamaños de payload y duraciones de solicitudes.


Después de asistir a mi masterclass, la audiencia tendrá una comprensión mucho más profunda de cómo funcionan los RSC, hasta el nivel del protocolo RSC. También estarán emocionados y ansiosos por explorar nuestras herramientas de desarrollo de aplicaciones RSC de última generación.

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

Tobbe Lundberg
Tobbe Lundberg
27 min
25 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Redwood Studio es una aplicación complementaria para construir aplicaciones web full-stack en JavaScript y TypeScript. Ofrece características como monitoreo OpenTelemetry, herramientas GraphQL, integración con Prisma ORM, vista previa SSR y soporte de caché para React Server components (RSC). La función Render Routes proporciona un gráfico de componentes visibles en una página, ayudando a los usuarios a entender las ubicaciones de renderizado. La función de payload y análisis de RSC permite analizar la línea de tiempo y las respuestas recibidas por la aplicación. El payload y el resultado renderizado se pueden mapear juntos para entender el tamaño y la estructura del componente. Redwood tiene como objetivo ser un marco full-stack que simplifica el desarrollo y apoya tanto a los usuarios actuales de GraphQL como a los principiantes. También enfatiza la flexibilidad y el poder de React Server components. Redwood aspira a ser el Laravel o Ruby on Rails de JavaScript, ofreciendo una configuración rápida de proyectos y alta productividad.

1. Introducción a Redwood Studio

Short description:

Redwood Studio es una aplicación complementaria con herramientas útiles para construir aplicaciones web full-stack en JavaScript y TypeScript.

♪ Hola a todos. Muchas gracias por decidir pasar este tiempo conmigo aquí. Como escucharon, mi nombre es Toby, o Toby, que aparentemente significa bañera en holandés, lo aprendí ayer. ¿Es esto divertido? Sí, entonces Redwood, no creo que haya visto ninguna mano levantada cuando preguntaste, así que... Redwood es un marco de trabajo súper productivo para construir aplicaciones web full-stack en JavaScript y TypeScript. Este es Redwood Studio. Es una aplicación complementaria a la que tienes acceso con cada aplicación de Redwood que construyes. Es una colección de herramientas útiles que puedes usar como desarrollador.

2. Overview of Redwood Studio Features

Short description:

Redwood Studio proporciona varias características como monitoreo de OpenTelemetry, herramientas de GraphQL, visualización de esquemas de base de datos, Prisma ORM, integración de mailer, vista previa de SSR y soporte de caché para componentes de React Server (RSC).

Aquí, vemos el panel principal con algunos gráficos de rendimiento. Si miramos el menú de navegación, puedes ver qué más está disponible. Tenemos monitoreo de OpenTelemetry. Hay una sección para algunas herramientas de GraphQL. Tenemos la sección de base de datos donde puedes ver tu esquema de base de datos en un gráfico, como un diagrama ER, y usamos Prisma como nuestro ORM. Al ir aquí, puedes ver las declaraciones SQL reales que se envían a tu base de datos.

A continuación, tenemos la integración de mailer. Entonces, cuando ejecutas Studio, tienes tu propia bandeja de entrada de correo electrónico de tiempo de desarrollo, así que cuando trabajas en cualquier característica de Redwood donde envías correos electrónicos, nunca corres el riesgo de enviar correos de prueba a clientes reales, porque todos terminarán aquí en Studio. Y también puedes previsualizar tus plantillas de correo electrónico.

Luego tenemos la sección de RSC, que es de lo que vamos a hablar hoy. Pero finalmente, solo quiero mencionar SSR, donde obtienes una vista previa de cómo se verán tus diferentes páginas cuando las compartas en redes sociales. Y finalmente, hay solo alguna información de Studio en la parte inferior.

Antes de pasar a la sección de RSC, solo quiero asegurarme de que todos estemos en el mismo, como, tipo de nivel básico de conocimiento sobre componentes de React Server. Quiero decir, esto es React Advanced, y todos han decidido escuchar una charla sobre herramientas de desarrollo de componentes de React Server, así que supongo que tienen alguna idea de lo que son los componentes de React Server. Pero rápidamente, los componentes de React Server son una forma de ejecutar componentes de React en el servidor en un contexto de servidor. Como, hemos estado haciendo componentes de React en el servidor por un tiempo con SSG y SSR, pero eso siempre ha sido en un contexto de cliente o navegador. Y todos esos componentes también se envían al navegador y se ejecutan en el navegador también. Con los componentes de servidor, solo se ejecutan en el servidor en un contexto de servidor. Y luego el resultado de ejecutar esos componentes se envía al cliente con este nuevo formato conocido internamente como Flight, pero más comúnmente conocido como el payload de RSC. Es un nuevo formato alineado, delimitado, tipo JSON.

Así que ahora que sabes eso, si vamos al primer elemento allí en nuestro RSC, parte del menú, tenemos el caché. Y de inmediato aquí, puedes ver este formato de payload de RSC como los valores de caché. La clave de caché, no sé, es demasiado pequeña para que la veas, pero la clave de caché es la URL en la página que estás visitando, y el valor es, como dije, el payload de RSC. El almacenamiento en caché es difícil. El almacenamiento en caché en el servidor es difícil. El almacenamiento en caché en el cliente es un poco más difícil. La invalidación de caché en el cliente es súper difícil desde una perspectiva de marco de trabajo. Así que supe que tan pronto como comencé a implementar soporte de almacenamiento en caché en el cliente, necesitaba construir, o quería construir algunas herramientas de desarrollo alrededor de eso. Así que por eso añadí esto. Honestamente, sin embargo, esperamos poder enviar sin almacenamiento en caché del lado del cliente de RSC.

3. Caching and Client-Side Rendering

Short description:

Como desarrollador, el almacenamiento en caché en el servidor proporciona más control, especialmente para la validación. El almacenamiento en caché completo del lado del cliente también es posible, pero hay ideas para un almacenamiento en caché y una obtención de datos más enfocados. El Redwood actual utiliza la caché de Apollo Client, que puede tener conceptos aplicables a Rack Server Components.

Creemos que como desarrollador, tienes mucho más control si puedes hacer el almacenamiento en caché en el servidor, especialmente en torno a la validación de caché. Tal vez lo hagamos opcional para rutas donde sabes que realmente marcaría la diferencia. Pero si lo hacemos, definitivamente también vamos a hacer la estrategia de validación de caché configurable para ti como desarrollador. Pero sí, con suerte podemos enviar solo con almacenamiento en caché del lado del servidor y luego simplemente hacer lógica de validación normal y general en el cliente. Y con suerte eso dará una experiencia de usuario lo suficientemente buena.

Sí, así que esto es almacenamiento en caché del lado del cliente, y más específicamente, almacenamiento en caché completo del lado del cliente. Así que la entrada de caché es en realidad mucho, mucho más larga de lo que puedes ver aquí. Es toda la carga útil de la página la que está en caché. Tengo algunas otras ideas sobre un almacenamiento en caché más enfocado, como más granular solo para la obtención de datos. En el Redwood actual, usamos GraphQL, y tenemos la caché de Apollo Client. Es súper poderosa. Y sería interesante ver si hay algún concepto de cómo funciona la caché de Apollo que podamos aplicar a la obtención de datos con Rack Server Components. Tal vez haya algo en el fondo de mi mente aquí sobre RcIslands, pero ahora solo estoy soñando principalmente. Así que bájalo un poco y sigue adelante con lo que es realmente posible y está disponible ahora mismo.

4. Render Routes and Component Graph

Short description:

Render routes es una función que proporciona un gráfico de componentes visibles en una página, distinguiendo entre componentes de servidor y de cliente. Ayuda a educar a los usuarios y miembros del equipo sobre los componentes en una página y sus ubicaciones de renderizado. El gráfico revela si los componentes que se pensaban originalmente para ser renderizados en el servidor ahora se están renderizando en el cliente. Mover las importaciones puede asegurar que los componentes solo se rendericen en el servidor si se desea.

Esta es la tercera... Lo siento, esta es la última página. Tuvimos caché, luego tenemos RcPayloads. Vamos a omitir eso por ahora, porque esa es la parte jugosa, y hacer render routes. Esta es la función en la que tenemos más trabajo por hacer. Pero la idea es que tienes una lista de todas tus rutas. Cuando haces clic en una de las rutas, obtienes un gráfico de todos los componentes que son visibles en esa página. Y luego podemos resaltar qué componentes se renderizan como componentes de servidor y qué componentes se renderizan como componentes de cliente. Creemos que esto puede ser súper útil, especialmente desde un punto de vista educativo, porque nosotros, como framework, sentimos que necesitamos educar a nuestros usuarios, pero también para los desarrolladores de aplicaciones y los miembros del equipo en tu equipo para ver rápidamente qué componentes tienes en tu página y dónde se renderizan.

Esto en realidad comenzó como un simple gráfico de Excalidraw como este. Dibujé este gráfico hace mucho tiempo cuando comenzamos a explorar componentes Rackstar dentro de Redwood. Así que en la parte superior, tienes los componentes de la página, página de ejemplo. Y luego ese es un componente de servidor. Y todo lo que está debajo en naranja también son componentes de servidor. Y luego probablemente puedo adivinar que las partes azules son componentes de cliente. El momento aha aquí, o lo que puedes ver, es que tan pronto como cambiamos a componentes de cliente, todo lo que está debajo de eso son componentes de cliente. Pero hay una cosa importante aquí. Esto significa que los componentes azules se importan de otros componentes de cliente. Es la importación. Es donde se importa un componente lo que es importante. Tener un gráfico como este hace que sea fácil ver si tienes componentes que pensabas que solo se renderizaban en el servidor que ahora se están renderizando en el cliente. Como, si miramos number.txt aquí, por ejemplo, ese componente se renderiza en el servidor bajo data display. Pero también renderiza un componente de cliente en la parte inferior. Quiero decir, no hay nada malo con esto. Esto podría ser exactamente lo que querías. Pero si pensabas que solo se renderizaba en el servidor, tener un gráfico como este puede ser realmente revelador para ti. Así que si querías que fuera un componente de servidor solamente, solo renderizado en el servidor, definitivamente puedes hacerlo. Lo que tendrías que hacer es mover la importación, porque ahora mismo se importa desde td.tsx, pero si mueves esa importación hacia arriba donde el gráfico es naranja, así que, por ejemplo, en table data cell, tendrías un gráfico que se vería así en su lugar. Así que ahora es un componente de servidor que se pasa como props a td y luego se renderiza en la pantalla. Así que este es el tipo de gráfico que quiero tener en el medio aquí.

5. RSC Payload and Analysis

Short description:

Todavía hay mucho que debemos resolver para hacer eso posible, pero ese es el objetivo aquí. La parte de RSC payload de Studio depende del increíble trabajo de Alvar Lagerlöf y otros mantenedores de código abierto. La página de RSC payload muestra una línea de tiempo y una lista de respuestas recibidas por la app. La cuarta respuesta, para la página raíz, se analiza utilizando el payload en bruto, un diagrama circular y estadísticas como la duración del renderizado y el tamaño del payload.

Todavía hay mucho que debemos resolver para hacer eso posible, pero ese es el objetivo aquí.

Y ahora la parte final de nuestras herramientas RSC, el RSC payload. Antes de sumergirme en esta sección, quiero hacer una pausa un poco y decir que como framework, escribimos mucho código, por supuesto, mucho código de enlace entre diferentes bibliotecas que integramos. Pero también dependemos de mucho código que otras personas han escrito, así que quiero aprovechar esta oportunidad para dar un agradecimiento especial a Alvar Lagerlöf, quien está aquí en la audiencia hoy. La parte de RSC payload de Studio no sería ni de cerca tan buena como es si no fuera por el increíble trabajo que Alvar ha hecho en su biblioteca RSC partial. Así que gracias, Alvar. Y de hecho, sí, ¿por qué no damos un gran aplauso? Un gran aplauso. No solo a Alvar, sino a todos los mantenedores de código abierto cuyo trabajo nos beneficia a todos diariamente. Gracias. Gracias a todos.

Así que volviendo a la página de RSC payloads. En la parte superior, ves una línea de tiempo de todas las respuestas RSC que la app ha recibido. Y luego abajo, hay una lista de todas esas mismas respuestas también. Me voy a centrar en la cuarta desde arriba. La clave es la barra, así que esto es para la página raíz o la página de inicio. Así que si hago clic en eso en nuestras herramientas de desarrollo aquí, me lleva a esta página. Comenzando en la esquina superior derecha, tenemos el RSC payload en bruto. Hay diez líneas de este nuevo formato delimitado por líneas JSON-ish allí, cada línea representa un fragmento de la página de inicio. En el otro lado, tienes un diagrama circular. Y en ese diagrama circular, tienes esos mismos diez fragmentos. Y podemos ver inmediatamente que hay un fragmento, el verde. Eso es como la mitad del tamaño del payload. Así que ese podría ser un fragmento en el que queramos profundizar un poco más. Abajo, debajo del diagrama circular, esos mismos fragmentos también están disponibles. Y puedes obtener un nombre para ellos. Así que el verde, probablemente no puedas ver, pero el verde se llama model zero. Volviendo al otro lado de nuevo, debajo del RSC payload en bruto, tenemos algunas estadísticas. Así que esto es útil si comparas diferentes payloads. Lo que vemos allí o lo que está disponible allí es la duración del renderizado. Así que puedes ver, bien, ¿cuánto tiempo le tomó al servidor renderizar este componente de servidor? Y también obtienes el tamaño del payload.

6. Analyzing RSC Payload

Short description:

El tamaño del payload puede proporcionar información sobre el tamaño del componente. El fragmento green model zero se analiza utilizando una versión impresa en 3D. Contiene una clave de __rwjs__routes y un gran elemento div con elementos anidados. El payload muestra el nombre de la clase y el diseño de navegación.

¿Qué tan grande es este payload en total? Y eso podría darte una idea de, está bien, wow, esto es realmente grande. ¿Por qué es tan grande este componente? Tal vez hay algunos datos allí que no necesitamos incluir en el payload inicial de RSC. Tal vez podamos cargarlos de manera diferida en el cliente más tarde para algunas mejoras de velocidad.

Muy bien, así que vamos a sumergirnos en el grande, el green model zero. Si hago clic en ese, me lleva más abajo en la misma página a esta vista. Lo que tenemos arriba es solo esa línea de fragmento único del payload en bruto. Es súper ancho y muy difícil de leer. Así que justo debajo, tenemos una versión impresa en 3D de él, el mismo payload. También sigue siendo un poco difícil de leer porque en lugar de ser súper ancho, ahora es simplemente súper largo en su lugar. Pero lo interesante de la versión impresa en 3D es que es interactiva. Puedes hacer clic aquí.

Así que lo que puedo hacer es colapsar el elemento div superior, el primer elemento div allí, y ver que tenemos esto. Así que ahora, solo una advertencia justa aquí, estás profundizando. Esto está en un nivel técnico de internals de framework React, pero lo que tenemos aquí es en la versión impresa en 3D tenemos un objeto con una clave de __rwjs__routes. Eso es solo para asegurarme de que no estoy sobrescribiendo nada. Esto es único para Redwood. Y luego tenemos todo el fragmento. Puedes ver que este gran fragmento era solo un gran elemento div con un montón de elementos anidados dentro.

Así que para aquellos de ustedes que no están familiarizados con Redwood, tenemos un solo archivo de rutas. No hacemos enrutamiento de sistema de archivos. Tenemos un solo archivo de rutas que se llama routes.

7. Mapping Payload with Rendered Output

Short description:

El payload y la salida renderizada se mapean juntos. El payload es una versión más compacta del JSX en bruto. El diseño de navegación y el elemento HTML nav corresponden tanto en el payload como en el código fuente. Hay un payload que destaca, etiquetado como RSA action 0.mjs con un identificador en send. Es similar a la homepage en estructura.

Y recuerda que hice clic en el cuarto elemento desde arriba con solo una barra con una URL raíz, y eso se mapea a la homepage. Y eso es lo que posiblemente, al menos si estás en la primera fila, puedes ver en este archivo de ruta en la parte superior. Tienes una definición de ruta para la ruta de la barra, y luego eso se mapea a la homepage. También puedes ver en el archivo de ruta que en la parte superior hay un diseño de navegación que envuelve todas las páginas. Así que lo que el enrutador realmente renderizará aquí es el diseño de navegación y luego la única página que se mapeó a la URL en la que estamos actualmente. Y lo que podemos empezar a hacer ahora es mapear lo que tenemos en el payload con lo que realmente se renderiza. Así que en el payload, podemos ver... Aquí vamos. Así que en el payload podemos ver en verde, en la versión preimpresa, ves class name y luego navigation layout. Y si miras de cerca en la salida en bruto, puedes ver eso también en el medio. Así que eso corresponde entre sí. Y si miramos la implementación real del diseño de navegación, el código fuente, podemos ver que tiene el mismo class name justo allí. Y debajo de él, hay un elemento HTML nav estándar. Eso también está disponible en el payload. Eso es como al final de lo que podemos ver en la salida en bruto. Y luego también en la versión preimpresa. Así que ahora puedes empezar a tener una idea de cómo funciona el payload. Es básicamente solo una versión más compacta de tu JSX en bruto. Y luego hay algunos nodos azules allí. Me adentraré en ellos en un segundo. Pero primero quiero mostrarte una cosa más. Y para hacer eso, necesito volver a esta vista. Así que todos los payloads están mapeados a algo que parece una URL. Pero hay uno que destaca. En el medio, justo debajo del que tiene la marca, hay uno que es diferente. Si no puedes leerlo, dice RSA action 0.mjs y luego un hash y luego un identificador que es on send en este caso. Así que porque es diferente, por supuesto, necesitamos investigar eso. ¿Por qué es eso diferente? ¿Qué es eso? Así que hago clic en él y llego aquí. Y se ve prácticamente exactamente igual que para la homepage que acabamos de ver. Todavía está este gran verde para el modelo 0.

8. Support for XServer Actions

Short description:

Si colapsas los elementos dentro del div, aparece una nueva cosa llamada RSA data. Se utiliza para implementar soporte para acciones de XServer, permitiendo recibir el valor de retorno y la página actualizada al ejecutar una acción del servidor.

Así que voy a seguir adentrándome en el modelo 0. Sigue siendo lo mismo. Pero ahora, si colapso todos los elementos dentro del div, llegamos aquí. Y ahora podemos ver que en realidad hay uno más. Hay una nueva cosa aquí. Así que déjame acercar. Si miras la versión preimpresa aquí, ves que la clave sigue siendo para las rutas y el div con todos los elementos anidados. Pero debajo de él, tienes algo llamado RSA data, hello world, etcétera. Así es como he elegido implementar soporte para acciones de XServer. Cuando ejecutas la acción del servidor, obtienes el resultado de esa ejecución de acción. El valor de retorno de tu acción o tu función, obtienes eso devuelto.

9. Explorando RcPayload y Contribuyendo

Short description:

Al ejecutar una acción del servidor, recibes el valor actualizado y toda la página renderizada. React puede entonces actualizar el valor sin un viaje adicional al servidor. El RcPayload incluye LazyNode para cargar componentes del cliente. Al hacer clic en la referencia del servidor, puedes navegar a esa parte del payload. Estas herramientas han sido útiles para entender los componentes del servidor de React. Redwood es de código abierto y da la bienvenida a los contribuyentes.

Pero también obtienes toda la página nuevamente en la que estás actualmente. Así que si tu acción del servidor actualizó un valor que es parte de algunos de tus componentes del servidor, obtienes eso como parte del valor de retorno también. Y no solo obtienes el valor de retorno, sino que también obtienes toda la página renderizada con este valor ya actualizado en la página.

Así que ahora podemos simplemente pedirle a React que tome el payload actualizado y haga un diff del DOM virtual con lo que está renderizando actualmente en el navegador del usuario y simplemente actualice el valor que fue actualizado por tu acción. Esto nos ahorra de hacer otro viaje al servidor solo para obtener el valor actualizado.

Bien. Ahora sigamos adelante, expandiendo el div allí. Ahora, profundizando más en los objetos anidados, vemos estos nodos azules nuevamente que prometí que volvería a ellos. Tenemos dos. Eso dice LazyNode, y así es como React sabe cargar de manera perezosa uno de tus componentes del cliente. Así que recuerda que el RcPayload se trata de los componentes del servidor. Y necesitas una manera de decirle a React que cargue componentes del cliente también, y así es como funciona. Hay una cosa llamada LazyNode en el payload. En el medio, tenemos una referencia del servidor. Y estos nodos azules son todos clicables, así que puedo hacer clic en uno de ellos. Hago clic en la referencia del servidor, y me llevaría a esa parte del payload.

Si miras la versión preimpresa aquí, puedes ver que es un nombre de archivo largo. Y al final del nombre del archivo, ves rcActions0, mgs, hash, y luego el ID onSend. Y ahora realmente cerramos el círculo, porque eso es exactamente en lo que hice clic aquí. Así es como puedes navegar y explorar tu RcPayload dentro de Redwood Studio. Y todas las herramientas que te he mostrado aquí hoy han sido inmensamente útiles internamente en el equipo para que podamos entender mejor cómo funcionan los componentes del servidor de React. Y han sido especialmente útiles y especialmente educativas para nosotros que hemos sido parte de la implementación de esto. Eso ha sido principalmente yo y otro chico en el equipo llamado David Cyruson. Redwood es de código abierto, y siempre estamos buscando contribuyentes. Así que si también quieres ser un experto común en Rc, realmente puedo recomendarte que nos ayudes a desarrollar las características que faltan aquí. Y personalmente te ayudaré a obtener un PR merch para Studio, si estás interesado.

QnA

React Server Components and Redwood's Vision

Short description:

Redwood es un framework full stack que es ideal para equipos pequeños o desarrolladores individuales. Aunque puede ser un desafío adoptarlo si ya tienes un backend existente, Redwood ofrece tanto una base de datos como un framework frontend. En el futuro, los componentes de React serán la opción predeterminada para la obtención de datos y el backend. Sin embargo, Redwood también tiene como objetivo apoyar a los usuarios actuales de GraphQL y planea simplificar la experiencia de desarrollo para aquellos que están comenzando.

Eso es todo lo que tenía que decir. Muchas gracias por escuchar. Gracias. Vamos a pasar a las preguntas de la audiencia.

La primera pregunta es de Lazlo. ¿Estas herramientas de componentes de servidor de React están disponibles fuera de Redwood JS Studio? Sí y no. Así que la biblioteca que usé, que Alva escribió, está disponible para cualquiera. De hecho, está disponible como un plugin que puedes habilitar en Chrome. Así que puedes inspeccionar el payload de cualquier página que use componentes de servidor. El resto es solo para Redwood Studio. Pero, ¿quién usaría eso fuera de Redwood Studio? Exactamente. Y dado que Redwood está respaldado por Preston, quien estuvo en GitHub, uno de los fundadores, ¿verdad? Sí, él fundó GitHub y lo vendió a Microsoft. Y ha estado alrededor por como cuatro o cinco años ahora, pero no está ganando la tracción que esperaría que tuviera con ese respaldo. Pero, ¿cuáles son algunos de los usuarios que conoces que piensas, bueno, no puedo imaginar que el usuario x empresa x esté usando el producto en el que estoy trabajando?

Entonces, ¿cuál es la pregunta de nuevo? Básicamente, publicita a tus usuarios de los que estás orgulloso. Así que creo que Redwood es definitivamente el mejor framework que existe si quieres comenzar con una aplicación completa como un equipo pequeño o incluso un solo desarrollador. Puedo ver que es difícil de adoptar si ya tienes un backend existente porque somos un framework full stack adecuado. Tenemos una base de datos, un backend adecuado, actualmente un GraphQL. Pero también un framework frontend. Realmente no tiene sentido usar solo la parte frontend de Redwood. Necesitas comprometerte al menos con el backend, pero idealmente ese backend más el frontend. Y noté que ahora dijiste que actualmente tenemos GraphQL. Y también mencionaste eso mientras aún hablabas. ¿Eso implica que estás investigando algo más o estoy?

Sí. Así que en el futuro, queremos que nuestros componentes de React sean el predeterminado, seguro, para la obtención de datos y para el backend. Pero personalmente, tampoco quiero dejar atrás a nuestros usuarios actuales de GraphQL. Pero el feedback que hemos recibido es que GraphQL es demasiado complicado, especialmente si solo quieres comenzar rápidamente. Así que estamos tratando de enfocarnos más en, como dije, un solo desarrollador o un equipo muy, muy pequeño o algunos usuarios de hackathon o algo en lo que trabajas los fines de semana y las noches. Así que queremos tener algo más simple. Y creo que con los componentes de React, definitivamente podemos hacer algo que sea mucho, mucho más simple para comenzar. Luego podemos ofrecer GraphQL como algo que puedes habilitar más tarde cuando lo necesites, si lo necesitas.

Lowering Barriers and Implementing Server Actions

Short description:

Para mantener el poder mientras se reduce la barrera de entrada, Redwood cree que GraphQL es perfecto para el desarrollo de aplicaciones y clientes móviles. El mayor momento de revelación con los componentes de React Server fue darse cuenta de la flexibilidad del formato de payload. Las acciones del servidor pueden incluir un objeto completo con claves separadas para el payload y el valor de retorno. Implementar acciones del servidor supuso un desafío debido a las diversas formas en que pueden definirse y la necesidad de manejar diferentes tipos de funciones. Existen al menos diez formas diferentes de escribir acciones del servidor.

Entonces quieres reducir la barrera de entrada, pero no perder el poder que tienes. Exactamente. Así que, por ejemplo, si necesitas un cliente móvil, si necesitas una aplicación, probablemente necesites una API adecuada también. Y entonces pensamos, sí, GraphQL es perfecto para eso.

Genial. Otra pregunta de Laslo. ¿Cuál fue el mayor momento de revelación que aprendiste sobre los componentes de React Server al implementar estas herramientas? El formato de payload es realmente muy flexible. Y este momento de revelación llegó cuando necesitaba implementar acciones del servidor. No me di cuenta de que podía simplemente agregar otro elemento a mi... O en realidad, que podía enviar de vuelta un objeto completo y tener una clave para el payload y otra clave para el valor de retorno del servidor o valor de retorno. Pensé que solo podía ser como los componentes serializados. Pero ahora, cualquier cosa que pueda ser serializada puede ser enviada como el payload.

Sí. Es bastante poderoso. Sí. Afortunadamente. Una pregunta de Anónimo. ¿Fue difícil averiguar cómo implementar acciones del servidor? Sí. Así que si viste la charla anterior sobre Wacko, definitivamente tenemos el mismo desafío que él tiene. Mostró cinco formas diferentes en que las personas pueden definir acciones del servidor. Pero cuando realmente te metes en el análisis de los componentes para encontrarlos, hay al menos el doble. Porque al menos la forma en que lo hacemos, o que yo lo hago, es que analizo el AST. Y cuando tienes una función, puedes tener una función de error o una función normal a la antigua y necesitan ser manejadas. Porque son dos entidades diferentes en el AST. Así que necesitas manejar ambas. Así que para todos, siempre hay dos versiones diferentes para escribirlo. Así que sí. Al menos diez, si cuentas las diferentes formas en que las personas pueden escribirlo. Solo diez.

Redwood's Vision and Productivity

Short description:

Redwood aspira a ser el Laravel o Ruby on Rails de JavaScript. Su propuesta es una configuración rápida de proyectos y productividad. Redwood ha sido presentado en los videos de YouTube de Jason, con la miembro del equipo Amy logrando grandes resultados. Con Redwood, puedes comenzar un nuevo proyecto rápidamente y competir con otros frameworks full stack en términos de productividad.

Sí. Hay múltiples maneras de vagar, pero eso es mucho.

La siguiente pregunta es de Amir. ¿Están tratando de ser el Laravel de JavaScript? Lo estamos. Sí. O Ruby on Rails, si quieres. Genial. Si hay más preguntas, por favor, háganlas llegar.

Entonces, si tienes una propuesta, porque nos queda un minuto, para usar Redwood en el próximo proyecto de alguien, ¿cuál sería? Creo que ya lo he mencionado. Pero comenzar y arrancar con un nuevo proyecto lo más rápido posible. Ahí es definitivamente donde Redwood brilla. No sé si han visto alguno de los videos de YouTube de Jason donde tuvo a personas venir y construir lo mismo con diferentes frameworks. Tuvimos a una de las miembros del equipo, Amy, que fue parte de ese programa hace un tiempo. Y sí, creo que lo hizo muy bien en el programa, gracias a usar Redwood. Definitivamente competimos con Laravel y los otros frameworks full stack adecuados en términos de productividad.

Muy bien. De acuerdo. Eso es todo lo que tenemos. Y eso es todo el tiempo que tenemos. Así que todos, por favor, den un cálido aplauso para Toby. Gracias.

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

Simplificando los Componentes del Servidor
React Advanced 2023React Advanced 2023
27 min
Simplificando los Componentes del Servidor
Top Content
React server components simplify server-side rendering and provide a mental model of components as pure functions. Using React as a library for server components allows for building a basic RSC server and connecting it to an SSR server. RSC responses are serialized virtual DOM that offload code from the client and handle interactivity. The client manifest maps serialized placeholders to real components on the client, enabling dynamic rendering. Server components combine the best of classic web development and progressive enhancement, offering the advantage of moving logic from the client to the server.
Explorando los fundamentos de los Componentes del Servidor React
React Day Berlin 2023React Day Berlin 2023
21 min
Explorando los fundamentos de los Componentes del Servidor React
Top Content
This Talk introduces React Server Components (RSC) and explores their serialization process. It compares RSC to traditional server-side rendering (SSR) and explains how RSC handles promises and integrates client components. The Talk also discusses the RSC manifest and deserialization process. The speaker then introduces the Waku framework, which supports bundling, server, routing, and SSR. The future plans for Waku include integration with client state management libraries.
Y Ahora Entiendes los Componentes del Servidor React
React Summit 2024React Summit 2024
27 min
Y Ahora Entiendes los Componentes del Servidor React
Top Content
In this Talk, Kent C. Dodds introduces React Server Components (RSCs) and demonstrates how to build them from scratch. He explains the process of integrating RSCs with the UI, switching to RSC and streaming for improved performance, and the benefits of using RSCs with async components. Dodds also discusses enhancements with streaming and server context, client support and loaders, server component rendering and module resolution, handling UI updates and rendering, handling back buttons and caching, and concludes with further resources for diving deeper into the topic.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
Componentes del Servidor: La Épica Historia de Renderizar UX
React Summit 2023React Summit 2023
26 min
Componentes del Servidor: La Épica Historia de Renderizar UX
Top Content
This Talk introduces server components in React, which provide an intermediate format for rendering and offer advantages for both client-side and server-side rendering. Server components reduce bundle size on the client and improve search engine optimization. They abstract the rendering process, allowing for faster rendering and flexibility in choosing where to render components. While server components are still in the experimental stage, Next.js is a good starting point to try them out.
RSCs en Producción: 1 Año Después
React Summit 2024React Summit 2024
24 min
RSCs en Producción: 1 Año Después
This Talk explores the experience of shipping server components in production and highlights the benefits and challenges of using Server Components in Next.js apps. The Talk discusses the deployment of UploadThing and the use of AppRouter for safe production usage. It delves into the implementation of different layouts, data fetching, and code centralization for improved performance. The Talk also covers the use of server components for performance optimization and latency handling. Additionally, it explores the use of Edge and Lambda for partial pre-rendering and the challenges faced with webpack performance and hydration. Overall, the Talk emphasizes the benefits and challenges of working with Server Components in Next.js applications.

Workshops on related topic

Dominando React Server Components y Server Actions en React 19
React Summit US 2024React Summit US 2024
150 min
Dominando React Server Components y Server Actions en React 19
Featured Workshop
Maurice de Beijer
Maurice de Beijer
¡Llamando a todos los desarrolladores de React! Únete a nosotros para una masterclass inmersiva de 4 horas profundizando en React Server Components y Server Actions. Descubre cómo estas tecnologías revolucionarias están transformando el desarrollo web y aprende a aprovechar todo su potencial para construir aplicaciones rápidas y eficientes.

Explora el mundo de React Server Components, combinando sin problemas el renderizado del lado del servidor con la interactividad del lado del cliente para un rendimiento y experiencia de usuario incomparables. Sumérgete en React Server Actions para ver cómo combinan la interactividad del lado del cliente con la lógica del lado del servidor, facilitando el desarrollo de aplicaciones interactivas sin las limitaciones tradicionales de las API.

Obtén experiencia práctica con ejercicios prácticos, ejemplos del mundo real y orientación experta sobre la implementación de estas tecnologías en tus proyectos. Aprende temas esenciales como las diferencias entre Server y Client Components, optimización de la obtención de datos, pasando datos de manera efectiva y maximizando el rendimiento con nuevos hooks de React como useActionState, useFormStatus y useOptimistic.

Ya sea que seas nuevo en React o un profesional experimentado, esta masterclass te equipará con el conocimiento y las herramientas para elevar tus habilidades de desarrollo web. Mantente a la vanguardia y domina la tecnología de vanguardia de React 19. No te lo pierdas: ¡regístrate ahora y desata todo el poder de React!
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
La Puerta al Backend: Guía del Desarrollador Frontend para el Desarrollo Full-Stack
React Summit US 2023React Summit US 2023
160 min
La Puerta al Backend: Guía del Desarrollador Frontend para el Desarrollo Full-Stack
Top Content
WorkshopFree
Amy Dutton
Amy Dutton
Esta masterclass te guiará a través del ciclo de vida del desarrollo de productos para crear una aplicación web del mundo real. Aprenderás sobre los Componentes del Servidor React, construyendo un sistema de diseño dentro de Storybook, y utilizando el desarrollo frontend para acercarte a convertirte en un desarrollador full-stack. La masterclass cubrirá el aumento de la confianza en tu aplicación con pruebas unitarias e implementando autenticación y autorización. Tendrás la oportunidad de trabajar a través de las características del producto y examinar un proyecto real de RedwoodJS, obteniendo valiosa experiencia en el desarrollo de productos del mundo real. RedwoodJS hace que sea simple acercarse al desarrollo full-stack, y esta masterclass te dará las habilidades que necesitas para crear tus propias aplicaciones web del mundo real.
Patrones Avanzados de Despliegue de Aplicaciones con Componentes de Servidor React (feat. un Marco RSC DIY)
React Summit US 2023React Summit US 2023
104 min
Patrones Avanzados de Despliegue de Aplicaciones con Componentes de Servidor React (feat. un Marco RSC DIY)
Top Content
Workshop
 Greg Brimble
Greg Brimble
El ecosistema de desarrolladores siempre está avanzando rápidamente y este año no ha sido una excepción. Los Componentes de Servidor React pueden ofrecer una mejora significativa a la experiencia del desarrollador y al rendimiento de la aplicación. Pero creo que es justo decir que este nuevo paradigma de servidor primero puede ser complicado de entender!En la primera mitad de esta masterclass, exploraremos los Componentes de Servidor React desde cero: construyendo nuestro propio mini marco meta para ayudarnos a entender cómo funcionan los RSCs. Descubriremos exactamente qué se produce en una construcción RSC y conectaremos esas piezas para formar una aplicación completa.A continuación, ¡lo desplegaremos! Cloudflare también ha tenido un año ocupado — Smart Placement, en particular, es una nueva tecnología que hemos desarrollado que se ajusta perfectamente al modelo RSC. Exploraremos por qué eso tiene sentido para nuestra aplicación de masterclass, y realmente lo desplegaremos en la Plataforma de Desarrolladores de Cloudflare.Finalmente, ampliaremos un poco más nuestra aplicación, utilizando D1 (nuestra base de datos SQL sin servidor) para mostrar realmente el poder del Componente de Servidor React cuando se combina con Smart Placement.Deberías salir de esta masterclass con una mayor comprensión de cómo funcionan los Componentes de Servidor React (tanto detrás de las escenas como también cómo tú como desarrollador puedes usarlos día a día), así como una visión de algunos de los nuevos patrones de despliegue que ahora son posibles después de las recientes innovaciones en el espacio de la plataforma.
Construyendo Componentes de Servidor Reutilizables en NextJS
React Summit US 2023React Summit US 2023
88 min
Construyendo Componentes de Servidor Reutilizables en NextJS
Top Content
Workshop
Will Bishop
Mettin Parzinski
2 authors
React continúa evolucionando su capacidad beta, los Componentes de Servidor de React, y continúan desarrollándolos en asociación con marcos como NextJS.En esta masterclass, los asistentes aprenderán qué son los Componentes de Servidor de React, cómo construirlos y usarlos eficazmente en NextJS, y se centrarán en una de las principales ventajas de React/NextJS: la reutilización a través de componentes.También cubriremos tecnologías beta relacionadas habilitadas por el directorio `app`, como los layouts anidados y las acciones del servidor (capacidad alfa/experimental).¡Únete a nosotros para esta masterclass práctica de 120 minutos!Tecnologías:
React, JavaScript/Typescript, NextJS, Miro
Desatando los Componentes del Servidor React: Una Inmersión Profunda en el Desarrollo Web de la Próxima Generación
React Day Berlin 2023React Day Berlin 2023
149 min
Desatando los Componentes del Servidor React: Una Inmersión Profunda en el Desarrollo Web de la Próxima Generación
Workshop
Maurice de Beijer
Maurice de Beijer
¡Prepárate para potenciar tus habilidades de desarrollo web con los Componentes del Servidor React! En esta inmersiva masterclass de 3 horas, desbloquearemos el potencial completo de esta tecnología revolucionaria y exploraremos cómo está transformando la forma en que los desarrolladores construyen aplicaciones web rápidas y eficientes.
Únete a nosotros mientras nos adentramos en el emocionante mundo de los Componentes del Servidor React, que combinan sin problemas el renderizado del lado del servidor con la interactividad del lado del cliente para un rendimiento y una experiencia de usuario inigualables. Obtendrás experiencia práctica a través de ejercicios prácticos, ejemplos del mundo real y orientación experta sobre cómo aprovechar el poder de los Componentes del Servidor en tus propios proyectos.
A lo largo de la masterclass, cubriremos temas esenciales, incluyendo:- Entender las diferencias entre los Componentes del Servidor y del Cliente- Implementar Componentes del Servidor para optimizar la obtención de datos y reducir el tamaño del paquete JavaScript- Integrar Componentes del Servidor y del Cliente para una experiencia de usuario fluida- Estrategias para pasar datos efectivamente entre componentes y gestionar el estado- Consejos y mejores prácticas para maximizar los beneficios de rendimiento de los Componentes del Servidor React