Fetch Once, Render Everywhere: React Server Components in Expo Router

Rate this content
Bookmark

Hemos estado trabajando arduamente para crear una primera mirada a la obtención de datos, el renderizado del servidor y la transmisión en aplicaciones universales de Expo Router.

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

Evan Bacon
Evan Bacon
28 min
14 Jun, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

React Native y ExpoRouter ofrecen una forma poderosa de construir aplicaciones del lado del cliente que se ejecutan tanto en la web como en plataformas nativas. La interfaz de usuario impulsada por el servidor y los componentes del servidor de React ofrecen oportunidades de renderizado dinámico y pruebas A-B. El renderizado en el servidor en aplicaciones nativas permite la integración de películas y mejora la experiencia del usuario y del desarrollador. La charla incluye demostraciones en vivo que muestran interacciones con Spotify y contactos nativos, así como conversión de divisas. El renderizado en el servidor y los componentes del servidor de React permiten la generación de componentes interactivos y llevan el estado y la inteligencia artificial modernos a todas las plataformas.

1. Resumen de React Native y exporouter

Short description:

React Native se ha convertido en la forma más impactante de construir aplicaciones del lado del cliente. Soy Evan Bacon, un ingeniero y el creador de exporouter. Es el primer mecanismo de enrutamiento basado en archivos para construir aplicaciones de React que se ejecutan tanto en la web como en plataformas nativas desde el mismo código base. Utiliza API web familiares como link y href para moverse entre rutas, y también es un sistema de enrutamiento anidado. Expo proporciona soluciones universales para la mayoría de los aspectos del desarrollo de aplicaciones. La obtención de datos y el renderizado en el servidor ofrecen interesantes oportunidades.

Cuando React Native fue anunciado por primera vez hace casi 10 años, tenía una premisa muy simple, que era tomar lo bueno de la web. A partir de este concepto básico, React Native se ha convertido en la forma más impactante de construir aplicaciones del lado del cliente. Si avanzamos rápidamente hasta ahora, React Native impulsa cientos de las aplicaciones más utilizadas en la lista de tendencias de la tienda de aplicaciones todos los días. Realmente no muestra signos de desaceleración. Entonces, ¿a dónde vamos desde aquí?

Soy Evan Bacon, un ingeniero y el creador de exporouter. Es el primer mecanismo de enrutamiento basado en archivos para construir aplicaciones de React que se ejecutan tanto en la web como en plataformas nativas desde el mismo código base. Se siente como magia. Simplemente creando archivos en el directorio de la aplicación, exporouter crea instantáneamente una navegación robusta tanto para su aplicación nativa como para su sitio web. Utiliza API web familiares como link y href para moverse entre rutas, y también es un sistema de enrutamiento anidado, lo que le permite organizar las rutas en carpetas para establecer elementos de la interfaz de usuario compartidos como barras de pestañas, encabezados, cajones, etc. También tiene soporte desde el primer día para el nuevo compilador de React, gracias a nuestra colaboración con el equipo de meta. Esto significa que ya no es necesario escribir use memo o use callback en sus aplicaciones, lo que conduce a una experiencia mucho mejor tanto para los usuarios como para los desarrolladores. Instalaremos el compilador de forma predeterminada en la próxima versión de Expo CLI, para que puedas activarlo y desactivarlo. Es realmente genial, porque puedes desactivarlo sin tener que reiniciar el servidor de desarrollo. Muy elegante. Hay muchos aspectos en el desarrollo de aplicaciones y Expo proporciona soluciones universales para la mayoría de ellos. Pero todas estas soluciones están dirigidas principalmente a la construcción de aplicaciones del lado del cliente. Y solo se puede hacer tanto con el cliente por sí solo. Las cosas se vuelven realmente interesantes cuando se incorpora la obtención de datos y el renderizado en el servidor.

2. Server-Driven UI and React Server Components

Short description:

La mayoría de las aplicaciones nativas funcionan como sitios web de una sola página, lo que resulta en un rendimiento más lento y una conectividad limitada. Las aplicaciones populares utilizan la interfaz de usuario dirigida por el servidor para realizar pruebas A-B y renderizado dinámico. Sin embargo, los desarrolladores independientes a menudo enfrentan desafíos debido a la falta de frameworks accesibles. ExpoRouter tiene como objetivo abordar esto mediante la introducción de componentes de servidor de React, lo que permite una potente interfaz de usuario dirigida por el servidor para todas las plataformas. El progreso en la implementación de los componentes de servidor de React es emocionante, mostrando el potencial de las técnicas de renderizado modernas. Con ExpoRouter, construir aplicaciones nativas de IA de alto rendimiento se vuelve más fácil, utilizando capacidades de transmisión y renderizado en el servidor.

Desde una perspectiva de datos, la mayoría de las aplicaciones nativas funcionan esencialmente como sitios web de una sola página. Esto es obsoleto ahora. Esto significa un rendimiento más lento y una conectividad sustancialmente menor. Aplicaciones nativas populares como Lyft, Netflix, Reddit y muchas otras utilizan alguna forma de interfaz de usuario dirigida por el servidor en sus aplicaciones. Pero es muy complicado de configurar y, como resultado, está fuera del alcance de la mayoría de los desarrolladores de aplicaciones.

Lo hacen para realizar pruebas A-B y renderizar la interfaz de usuario con un alto grado de variación basado en todo tipo de criterios, como el tipo de usuario, la ubicación, la moneda que utilizas, la temperatura en tu región, muchas cosas diferentes. Los enfoques varían en muchas pequeñas formas, pero comparten una arquitectura común, como el uso de JSON como representación estática de la interfaz de usuario. Piensa en este JSON como HTML, pero para entornos de ejecución nativos personalizados. Y podemos ver un patrón aquí a partir de la cantidad de aplicaciones que utilizan todos estos sistemas muy similares. Y ese es que la interfaz de usuario dirigida por el servidor es un sistema importante para construir aplicaciones, pero no es muy accesible para los desarrolladores independientes. Todos estos grupos tienen estos frameworks. No son de código abierto.

Entonces, me hizo pensar. ¿Qué pasaría si pudiéramos hacer que la interfaz de usuario dirigida por el servidor esté disponible para todos? Pero también la versión más potente que se haya imaginado. Ese es el objetivo de ExpoRouter. Ahora, para hacer esto, estamos introduciendo componentes de servidor de React, el enfoque más avanzado para el renderizado en el servidor en todas las plataformas, iOS, Android, Web y cualquier otra, a través de ExpoRouter. Esto es una tarea enorme. Requiere mejoras en muchas bibliotecas diferentes en todo el ecosistema universal. Nuestra implementación oficial de componentes de servidor de React para aplicaciones universales está actualmente en desarrollo inicial. Pero vale la pena compartirlo, porque el progreso es realmente emocionante. Y francamente, es bastante inspirador ver de lo que son capaces las aplicaciones cuando utilizan técnicas de renderizado modernas de la web.

Ahora, hay mucho en los componentes de servidor de React, como acciones del servidor, enrutamiento concurrente, vuelos, etc. Pero pensé que sería más fácil mostrarles una demostración de lo que es posible. He estado muy interesado en la IA, al igual que todos. Pero históricamente ha sido muy difícil construir aplicaciones nativas de IA de alto rendimiento. Y esto se debe a que la transmisión y el renderizado en el servidor son aspectos críticos para trabajar con un LLM. Pero con componentes de servidor de React y ExpoRouter, en realidad es muy, muy fácil trabajar con IA. Aquí tengo una aplicación similar a un chat GPT que envía una acción de servidor de React y transmite texto nativo desde el servidor. Así que piensa en esto como una aplicación similar a un chat GPT, ¿verdad? Todo lo que regresa del servidor se renderiza en el servidor, aunque. O al menos parcialmente renderizado en el servidor, porque también tenemos componentes del cliente.

QnA

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 Conference 2023React Advanced Conference 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 Conference 2023React Advanced Conference 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

Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced Conference 2022React Advanced Conference 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
WorkshopFree
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
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
WorkshopFree
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
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
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.
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Introducción - Cleo & nuestra misión- Lo que queremos construir, cómo encaja en nuestro producto & propósito, revisar los diseños- Comenzando con la configuración del entorno & “hola mundo”- Introducción a la animación de React Native- Paso 1: Hacer girar la rueda al presionar un botón- Paso 2: Arrastrar la rueda para darle velocidad- Paso 3: Agregar fricción a la rueda para frenarla- Paso 4 (extra): Agregar hápticos para una sensación inmersiva
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
WorkshopFree
 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.