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

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

Hemos estado trabajando arduamente para crear una primera vista de la obtención de datos, renderizado en el servidor y 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 proporcionan una forma poderosa de construir aplicaciones del lado del cliente que se ejecutan tanto en plataformas web como nativas. La interfaz de usuario impulsada por el servidor y los React Server Components 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 moneda. El renderizado en el servidor y los React Server Components permiten la generación de componentes interactivos y llevan el estado moderno y la inteligencia artificial a cada plataforma.

1. Overview of React Native and 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 plataformas web como nativas desde la misma base de código. Utiliza APIs 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 del servidor ofrecen oportunidades interesantes.

Cuando React Native fue anunciado por primera vez hace casi 10 años, tenía una premisa muy simple, que era web the good parts. A partir de este concepto básico, React Native ha crecido hasta convertirse 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 cada día. Realmente no hay señales 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 plataformas web como nativas desde la misma base de código. Se siente como magia. Al simplemente crear archivos en el directorio de la aplicación, exporouter crea instantáneamente una navegación robusta tanto para tu aplicación nativa como para tu sitio web. Utiliza APIs web familiares como link y href para moverse entre rutas, y también es un sistema de enrutamiento anidado, permitiéndote organizar rutas en carpetas para establecer una interfaz de usuario compartida como barras de pestañas, encabezados, cajones, etcétera. Y también es un... 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 necesitas escribir use memo o use callback en tus aplicaciones, lo que lleva a una experiencia mucho mejor tanto para los usuarios como para los desarrolladores. Instalaremos el compilador por defecto 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. Realmente 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 principalmente dirigidas a construir aplicaciones del lado del cliente. Y hay un límite en lo que puedes hacer solo con el cliente. Las cosas se ponen realmente interesantes cuando incorporas la obtención de datos y el renderizado del servidor.

2. Server-Driven UI and React Server Components

Short description:

La mayoría de las aplicaciones nativas operan como sitios web de una sola página, lo que resulta en un rendimiento más lento y una red limitada. Las aplicaciones populares utilizan UI impulsada por el servidor para 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 busca abordar esto introduciendo React server components, permitiendo una potente UI impulsada por el servidor para todas las plataformas. El progreso en la implementación de React server components 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 del servidor.

Desde una perspectiva de datos, la mayoría de las aplicaciones nativas operan esencialmente como sitios web de una sola página. Lo cual es ahora datos antiguos. Esto significa un rendimiento más lento y sustancialmente menos red. Aplicaciones nativas populares como Lyft y Netflix, Reddit, y muchas otras utilizan alguna forma de UI impulsada 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.

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

Así que me puse a pensar. ¿Y si pudiéramos hacer que la UI impulsada por el servidor estuviera disponible para todos? Pero también la versión más poderosa jamás imaginada. Y ese es el objetivo de ExpoRouter. Ahora, para hacer esto, estamos trayendo React server components, el enfoque más avanzado para el renderizado del servidor a todas las plataformas, iOS, Android Web, y cualquier otra cosa, a través de ExpoRouter. Este es un gran esfuerzo. Esto requerirá refinamiento en muchas bibliotecas diferentes a través del ecosistema universal. Nuestra implementación oficial de React server components para aplicaciones universales está actualmente en desarrollo temprano. 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 RSE, como acciones del servidor, enrutamiento concurrente, vuelos, etcétera. Pero pensé que sería más fácil simplemente mostrarles una demostración de lo que es posible. Así que he estado realmente interesado en la IA, como 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 del servidor son aspectos críticos al trabajar con un LLM. Pero con React server components y ExpoRouter, en realidad es realmente, realmente fácil trabajar con IA. Así que aquí tengo una aplicación estilo chat GPT que envía una solicitud a OpenAI con una acción del servidor de React y transmite texto nativo desde el servidor. Así que piensa en esto como una aplicación estilo chat GPT, ¿verdad? Todo lo que regresa del servidor es renderizado por el servidor, sin embargo. O al menos parcialmente renderizado por el servidor, porque también tenemos componentes del cliente.

3. Renderizado del Servidor e Integración de Películas

Short description:

Podemos utilizar el renderizado del servidor para aplicaciones nativas, agrupando la acción del servidor varias veces en función de la plataforma. El servidor envía una carga útil RFC con suspense para mantener el flujo abierto y actualiza el árbol con nuevas imágenes a medida que avanza el flujo. Este enfoque nos permite utilizar JavaScript arbitrario con enlaces nativos. Además, podemos integrar películas en el prototipo, haciendo coincidir las consultas para buscar películas y transmitiendo interactivamente tarjetas de películas nativas al cliente con información adicional como los miembros del reparto y del equipo.

Entonces, podemos preguntarle algo como, ¿deberían las aplicaciones nativas ser renderizadas por el servidor? Y luego transmitirá algo acerca de cómo las aplicaciones nativas normalmente no son renderizadas por el servidor, y cómo eso es más una cosa de la web. Porque todo esto es bastante nuevo.

Ahora, para crear la acción del servidor, tenemos otro archivo que define useServer en una función. Y esta función será extraída en el paquete del servidor, por lo que nunca se envía al cliente y se convierte en un punto final en el cliente, que podemos versionar y hacer específico de la plataforma. Y podemos renderizar texto nativo aquí, texto nativo de React, dentro de un componente recursivo que itera el flujo.

Un aspecto realmente novedoso de este enfoque del servidor en estas acciones del servidor, es que se agrupa varias veces diferentes en función de la plataforma, de modo que si el dispositivo iOS lo pings, entonces muestra la versión iOS del paquete del servidor, y si la versión Android muestra, versión Android. Y así es como sabe qué texto usar, ya sabes, si es para iOS o Android web.

Ahora, cuando un cliente hace una solicitud, se envía una carga útil RFC con suspense para mantener el flujo abierto. Tiene la representación estática de nuestro JSX raíz cargado dentro de él, una URL al cliente código necesario para que este RFC se cargue, porque dividimos el código del paquete, y se puede cargar y buscar dinámicamente, y luego el elemento de texto actualmente renderizado. A medida que avanza el flujo, se renderizará más contenido, y React actualizará el árbol con las nuevas imágenes, así que, si dijo, ya sabes, una vez, y luego una vez había una vez, entonces Y finalmente, el flujo se completará y React cerrará la conexión.

Y esto es solo una parte de un rompecabezas mucho más grande, pero es súper poderoso, porque significa que podemos usar cualquier JavaScript arbitrario, siempre que los enlaces nativos ya estén en nuestro cliente objetivo, por lo que esto es algo así como crear HTML personalizado en vivo utilizando directivas de uso del cliente y uso del servidor en todas partes. Así que te darás cuenta de que aquí no hay código nativo. Eso es solo JSON, y está delimitado por nuevas líneas, por lo que se transmite. Es bastante dulce. Y esto es solo lo básico. Podemos escalar este concepto a cualquier UI nativa.

Así que hagamos algo un poco más emocionante. Cuando se mostró por primera vez React Native, mostraron una aplicación de películas verdaderamente nativa. Así que pensé que sería divertido incorporar películas a este prototipo de alguna manera. Para inspiración, miré lo que las mejores aplicaciones de AI tenían para ofrecer. En el chat GPT-4, cuando pides películas, renderiza una lista con viñetas de markdown después de hacer ping a bing. Consulté con GPT-4-0, mismo trato. En Gemini, hace lo mismo, pero con algunas imágenes en línea y algunos enlaces en vivo. Así que básicamente solo está enviando markdown, y luego el markdown se está formateando con un formateador de markdown. Ese es su método de transporte.

Y en Xplorerc, podemos hacerlo mucho mejor. Podemos hacer coincidir cualquier consulta para buscar películas, hacer ping a una base de datos de películas, servir una tarjeta de película nativa interactiva, transmitirla al cliente con cosas como menús de UI, cualquier tipo de nueva vista nativa que baje y esté disponible en ese dispositivo. Luego podemos volver a recurrir con más información. Tenemos una acción de servidor que está obteniendo miembros del reparto y miembros del equipo de una película. Y luego incluso podemos crear eventos de calendario donde tenemos una tarjeta que luego hace ping para el permiso del calendario y abre el aviso del calendario.

4. Experiencia Mejorada del Usuario y del Desarrollador

Short description:

Verdaderamente mágico. Incluso más emocionante que la experiencia del usuario es la experiencia del desarrollador. Utilizamos límites de suspense, código de React Native que funciona en todos los dispositivos, y dividimos el paquete para un formato de bytecode optimizado. Obtenemos vistas verdaderamente nativas con desplazamiento suave, alto rendimiento y posibilidades ilimitadas. Expo soporta iOS, Android, web, y ofrece soporte web para un acceso rápido al contenido con enlazabilidad.

Verdaderamente mágico. ¡Gracias! ¡Va a ser un poco más genial, no te preocupes! En general, una mejor user experience, mucha menos lectura. Pero incluso más emocionante que esta vanguardista user experience es la developer experience porque sólo tomó un poco más de código que el ejemplo de texto. Así que aquí, usamos un límite de suspense para mostrar un cargador de esqueleto en el componente asíncrono, obtiene data y renderiza las películas, luego las transmite al cliente.

Te das cuenta de que esto es, aunque esto es código universal de React, hay React Native ahí, es sólo código de React. Como este es código de React verbatim trabajando en todos los dispositivos. Es muy emocionante. Ahora para hacer las tarjetas interactivas, simplemente creamos un componente cliente de envoltura que tiene un poco de estado dentro de él. La lógica JS utilizada aquí será separada del paquete principal y obtenida condicionalmente cuando renderizamos esta tarjeta por primera vez. Así que en las plataformas nativas que están usando el motor Hermes, dividimos el paquete en formato de bytecode optimizado, lo que significa que se inicia inmediatamente y sólo se mapea en memoria. No tienes que analizar nada. Es bastante dulce. Esencialmente significa que estamos entregando las mejores estrategias de los mejores frameworks sólo para la web pero corriendo en un entorno personalizado de JavaScript que empuja la plataforma en tu mano a sus límites.

Porque después de saltar a través de todos los aros necesarios para hacer que el renderizado del servidor funcione, no estamos sólo renderizando al DOM. No, en cambio, obtenemos vistas verdaderamente nativas, como si la aplicación fuera escrita con herramientas de primera parte. Tenemos desplazamiento suave, comportamientos de plataforma de alto rendimiento, es renderizado progresivamente, best practices, y verdaderamente ilimitado. ¿Está lloviendo aquí? Okay, perfecto. Pensé que era sólo yo. Y por supuesto, la mejor parte tiene que ser, funciona así en todas partes. Todas las plataformas. Así que Expo soporta iOS, Android y web. Tiene soporte multiplataforma de Apple, algunos Macs, Vision Pros. Lo tengo funcionando en cada ordenador de mi casa. Es realmente útil porque, más tarde, te mostraré que hace cosas de Spotify, y hay una aplicación de Spotify. Ahora nuestro enfoque está en construir la mejor experiencia posible, lo que significa nativo en iOS y Android, pero también significa que necesitamos aprovechar la capacidad que la web tiene para acceder rápidamente al contenido, donde puedes enviar a cualquier persona en el mundo un enlace, pueden abrirlo, y luego ver inmediatamente al menos una vista previa de tu experiencia completa. Así que también tenemos soporte web ahí. Y luego cada enlace es totalmente enlazable porque es un router basado en archivos universales. Así que si tienes la aplicación instalada y te envían un enlace, abrirá la aplicación en esa ubicación exacta. Se siente loco. Pero sigo hablando de cómo se siente y de cómo se ve.

5. Demostración en Vivo y Acciones del Servidor

Short description:

Permíteme mostrarte en vivo, conectado a mi servidor de desarrollo. Transmisión de código, vista previa de la aplicación con iOS 18 beta e icono de aplicación verde. Acciones del servidor de búsqueda, vistas nativas, vistas de menú de interfaz de usuario de renderizado del servidor. Seleccionar película, crear evento, emular tiempos de espera del servidor, abrir evento de calendario.

Permíteme mostrarte en vivo, conectado a mi servidor de desarrollo en el Wi-Fi de la conferencia. Creo que será realmente genial. Así que aquí tengo el servidor de desarrollo funcionando. Voy a aumentar un poco el tamaño de la fuente. Así que puedes ver que tenemos código transmitiéndose aquí. Lo limpiaré. Y luego aquí, tengo una vista previa de QuickTime de mi aplicación, mi teléfono. También tiene la beta de iOS 18 porque pensé en cambiar un poco las cosas. Eso significa que también podemos cambiar el icono de la aplicación a verde. Características nuevas realmente importantes.

Así que lo abriremos. Voy a recargarlo para que esté fresco justo allí en el servidor. Ves que busca todas las diferentes acciones del servidor en el fondo. Y esta es la aplicación. Así que podemos decir listar nuevas películas, tal como lo hicimos en el video. Cerraré esto aquí. Y luego veamos. Sigue moviendo esto. Sí, así tenemos nuestras vistas nativas. Podría seleccionar una de ellas. Y notarás en el fondo, esa fue la acción del servidor buscando más data y luego renderizando más vistas de menú de UI aquí. Así que es una vista que ni siquiera pensarías que podrías renderizar en el servidor. Estamos renderizando en el servidor. Lo estamos haciendo todo. Así que Justice Owens o Justice Smith, tenemos algunas películas más aquí. Selecciona una, crea un evento. Es bastante rápido, bastante rápido. Es un servidor de desarrollo. Pero también estoy emulando tiempos de espera del servidor allí también. Y luego abre un evento de calendario, ya sabes, créalo, lo que sea.

6. Interacción con Spotify y Contactos Nativos

Short description:

Vamos a mostrar algunas canciones pop de Spotify. Iniciar y cerrar sesión. Consultar contactos nativos sin enviarlos al LLM. Seleccionar a Charlie Cheever, enviarle un mensaje con la explicación de JSX. Formatear markdown. Componer un mensaje para Charlie.

Oh, tenemos un poco de diversión con la alineación del texto allí abajo. Bueno, hagamos algo más. Digamos, sabes, muéstrame algunas canciones pop. Y luego esto bajará una tarjeta que tiene Spotify allí. Y esto tiene inicio de sesión. Así que puedo cerrar sesión, volver a iniciarla. No sé por qué acabo de hacer eso. ¿Y si no inició sesión?

Bueno, podemos volver a iniciar sesión. Podemos ver varias músicas aquí. Solo voy a seleccionarlo durante mucho tiempo. Reproducirá música, pero tengo la sensación de que eso podría no caer bien con nosotros reproduciendo en YouTube. ¿Qué más podemos hacer? Podríamos decir, sabes, ¿cuál es el número de teléfono de Charlie? Ahora esto va a renderizar una tarjeta que envía información que luego puede consultar mis contactos nativos. Así que no tengo que enviar mis contactos al LLM para que los filtre. Es capaz de, ya sabes, GDPR, es capaz de enviar código a mi dispositivo para hacer ese filtrado, lo cual es bastante dulce.

No, no queremos abrir eso. Así que tengo mis Charlies aquí. Podría seleccionar a Charlie Cheever, enviarle un mensaje. Dirá, ya sabes, como, ¿qué quieres enviarle? Explica cómo funciona JSX. Haz eso. Entonces tal vez, está bien, realmente está yendo por ello. Bueno, algo de markdown. También estamos formateando algo de markdown allí. Está bien, genial. Solo voy a poner en cola, sí, envíalo, porque imagino que va a ser como, ¿quieres que diga, vaya, realmente está yendo. Sí, seguro, envíalo. Muy bien, y ahora, ya sabes, seleccionará este texto. Veamos, todavía lo tenemos funcionando en segundo plano aquí, ¿verdad? Está bien, bien. Oh, está bien, ahí está. Así que ahora ha compuesto un mensaje para Charlie. Él es mi jefe.

7. Interacciones Mejoradas y Conversión de Moneda

Short description:

Es un co-creador de Expo. Muestra cosas que hacer en la ciudad. Recupera datos en la acción del servidor para optimizar las solicitudes de red. Desplazamiento suave a través de ubicaciones en Ámsterdam. Obtén el clima para Ámsterdam. Interacciones nativas: reserva un Uber, convierte la moneda. Crea un componente para convertir la moneda.

Es un co-creador de Expo. Puedo simplemente enviárselo. Y sí, así de simple, estamos enviando mensajes.

¿Qué más podemos hacer? Podríamos decir, muéstrame cosas que hacer en la ciudad. Arreglemos eso. Y ahora va a, quiero decir, mira todos esos data que acaba de recuperar en segundo plano. Así que está recuperando todos esos data en la acción del servidor. No tenemos que preocuparnos por optimizarlo y tener algo, porque este es el middleware, y luego envía la cantidad mínima de JSX requerida, lo que significa que estamos optimizando nuestras solicitudes de red.

Y aquí tenemos un componente de cliente para el mapa. Pero este carrusel se renderiza en el servidor. Así que podemos desplazarnos suavemente por todas estas ubicaciones en Ámsterdam, ¿verdad? Es bastante dulce. Así que tal vez seleccionemos uno, digamos obtener el clima, porque sabe, de nuevo, de lo que estamos hablando. Supongo que Ámsterdam, ¿verdad? Podemos tener algunas interacciones nativas allí. Podemos decir reserva un Uber a esta ubicación. Reserva un Uber, solicita un Uber, ábreme en la aplicación Uber. No lo solicitemos realmente. Dice cosas como que son 28 euros, 25 centavos. Así que puedes decir convierte 28 euros a USD. No puedo hacer la conversión en mi cabeza. En realidad, eso fue bastante fácil. Probablemente debería haber podido hacer eso. $31. Pero ahora, no tengo un componente de conversión de moneda incorporado, por eso simplemente me envió texto. Si le pido un componente, simplemente escribirá el componente para mí, lo renderizará en el servidor y transmitirá texto, o al menos eso espero. Está ejecutando un servidor de desarrollador en vivo. Así que podríamos decir crea un componente para convertir la moneda. Ahora se va a renderizar en segundo plano aquí. O al menos eso espero. Eso espero. Veamos.

8. Renderizado del Servidor y Componentes Interactivos

Short description:

Podemos generar dinámicamente un convertidor de moneda y un componente de juego de tic-tac-toe utilizando el renderizado del servidor en una aplicación nativa. El servidor transmite los componentes interactivos, facilitando la implementación de características complejas.

Ahí está. Bastante impresionante. Así que aquí podemos ver todo el texto que acaba de crear. Le pedimos a GPT que renderice este componente. Sabe crear un React Native component, lo ejecutamos, lo transmitimos. Así que ahora tenemos un convertidor de moneda.

Así que podríamos decir, ya sabes, ¿cuánto son 100 euros en USD? Inmediatamente 112. Así que estamos generando dinámicamente. Básicamente, mi punto aquí es que puedes hacer lo que quieras cuando introduces el renderizado del servidor a una aplicación nativa. Incluso podríamos decir, ya sabes, crea un componente de juego de tic-tac-toe. Probablemente no necesitaba ese componente allí. Creo que lo entendió. Y luego renderiza esto.

Así que de nuevo, lo que está pasando, como lo que vemos aquí es que tenemos esta hermosa vista de texto que viene abajo. Esto se transmite. Tengo que asegurarme de que añade use client para que obtengamos componentes interactivos. Oh, está bien. Bueno, esto ya está hecho. Es bastante impresionante que esto siempre funcione. Puedo hacer... Veamos. Vamos al siguiente jugador O. Bueno, tiene todo el cambio allí. Intentemos ganar rápidamente. X. Ganadores. X. Esto es bastante impresionante para mí personalmente porque cuando hice mi primera entrevista en una empresa fang, me pidieron que implementara un juego de tic-tac-toe en Swift. Y aquí simplemente, sí, lo hizo automáticamente. Así que, bastante genial.

9. Renderizado del Servidor y Componentos del Servidor React

Short description:

El renderizado del servidor lleva el estado moderno y la IA universalmente a todas las plataformas, deslizándose sin problemas entre el servidor y el cliente. Construye fácilmente a través de plataformas con primitivas base y toda la funcionalidad ejecutándose en el servidor. Los componentes del servidor React manejan cascadas y solicitudes paralelas, utilizando lo mejor de las tecnologías web.

Bastante dulce. Si volviéramos a cambiar aquí, quiero decir, esto es Expo CLI. Si simplemente presionamos la tecla W, se abrirá en el navegador. Se abrió justo en el navegador pero en esta otra ventana. Así que aquí lo tenemos funcionando en el navegador. Mismo trato. Enumera algunas películas. Tenemos las películas funcionando como antes. No voy a hacer toda la demostración de nuevo. Pero entiendes la idea. Quiero decir, incluso se ejecuta en, lo tengo aquí en mi escritorio también. Lo ejecutamos aquí en el escritorio, ya sabes, así que obtengo la película, enumera algunas películas. Como, sí, es bastante dulce. Soy un gran fan.

Muy bien, volvamos a la presentación aquí. Ahora, eso es lo que parece cuando llevamos el estado moderno del renderizado del servidor en AI y los llevamos universalmente a todas las plataformas. Por supuesto, ahora comienza la lluvia. Deslizándose sin problemas entre el servidor y el cliente en un framework basado en archivos totalmente tipado. Solo tenemos que configurar las API para una sola plataforma y esa es el servidor. Haciéndolo más fácil que nunca para construir a través de plataformas. De hecho, es por eso que pude compartir tanto. Es porque estas son solo primitivas base. Toda la funcionalidad se está ejecutando en el servidor. Mientras que una aplicación nativa tradicional generalmente está ejecutando toda esa lógica en el cliente. Haciéndolo aún más fácil que nunca antes para hacer que React Native sea perfecto. Todas las cascadas, solicitudes paralelas, son manejadas por nosotros como parte de React componentes del servidor. Esto no es solo cualquier renderizado del servidor, estamos utilizando lo mejor que la web tiene para ofrecer. Los secretos están asegurados en el servidor, el código del cliente estático se elimina automáticamente de el paquete. Lo que significa que simplemente sueltas algo de código y si puede ser eliminado en tiempo de construcción, será eliminado en tiempo de construcción. Por primera vez en la historia.

QnA

Beneficios, Expo SDK 51 y Expo Router

Short description:

Nuevos beneficios que redefinen los dispositivos móviles. Permite un desarrollo rápido de aplicaciones. Expo SDK 51 y React 19 ya están disponibles. El renderizador del servidor y el soporte de Expo Router están en progreso. Buscando ingenieros talentosos. Componentes del Servidor Universal de Evan Bacon en Expo Router. Expo Router ganó el Premio al Impulsor de la Productividad en 2023.

Hay toneladas y toneladas de nuevos beneficios. Demasiados para entrar en detalles. Simplemente redefine lo que es posible con nuestros dispositivos móviles en nuestras manos. Y simplemente permite que se construyan nuevos tipos de aplicaciones en tiempos récord. Entonces, la aplicación que acaban de ver está ejecutando Expo SDK 51, lo que significa que todo el código nativo es en realidad ya está disponible. Esta es solo una aplicación Expo construida sobre eso.

React 19, nueva architecture, todo eso ya está disponible. El renderizador del servidor real, soporte de primera clase en Expo Router, aún en progreso. Trabajando en ello activamente. Como dije, me requiere abrir solicitudes de extracción a todas las demás bibliotecas que podrías usar, si nos movemos rápido, tendremos una beta temprana para finales de este año. Considera esto un RFC. ¿Es el renderizado del servidor algo que quieres ver en aplicaciones nativas? Creo que sí. Me encanta usar esto. Me encanta... Quiero decir, es simplemente un cambio de juego, para ser honesto. Y por supuesto, siempre estoy buscando ingenieros talentosos para unirse a mi equipo. Entonces, si estás interesado en inaugurar el futuro del desarrollo de aplicaciones, contáctame en X. Soy Evan Bacon, y esto ha sido Componentes del Servidor Universal en Expo Router. Gracias. Muchas gracias por tu increíble charla. Ahora, quiero señalar algo. Se suponía que debías estar aquí. Quiero decir, no pudiste estar aquí. Pero el año pasado, tuvimos los Premios de Código Abierto de React en 2023, y una cierta herramienta llamada Expo Router en realidad ganó el Premio al Impulsor de la Productividad, y no estabas aquí para recoger eso. Entonces, ¿podemos dar un sí, aplausos para Evan por Expo Router ganando el Premio al Impulsor de la Productividad en 2023? Wow. Eso es hermoso. Gracias. Es un sí, ellos, y justo a tiempo. Bueno, tenemos que saltar a las preguntas, porque cuando digo que el Slido se está volviendo loco, se está volviendo loco.

Generando Paquetes y Políticas de la App Store

Short description:

Generando paquetes en el lado del servidor y políticas de la App Store. No se envía ningún código nativo. Las tiendas de aplicaciones prohíben cambiar el contenido aprobado. Se permiten solicitudes de red. Los ajustes de tiempo de construcción no se pueden cambiar al aire. El código fuente no está disponible para uso público.

Puedo ver la lista. Oh, hombre. Tienes algunas buenas preguntas ahí. Hay muchas. Entonces, sé que no podremos pasar por todas ellas, así que definitivamente puedes atraparlo en la sesión de preguntas y respuestas.

Vamos a empezar con la primera. Esto es tan emocionante. Esto es increíble. Pero, ¿está cubierto por las políticas de la App Store generar los paquetes en el lado del servidor? Esa es una pregunta fantástica. Sí. Ya sabes, lo del RFC es que no estamos enviando ningún código nativo. Y las tiendas de aplicaciones, la política es que simplemente no puedes cambiar el contenido de tu aplicación, como el contenido aprobado, el comportamiento aprobado. Obviamente, no pueden prohibir la capacidad de hacer solicitudes de red, de lo contrario, como Facebook y Twitter no funcionarían. Y las aplicaciones de hoy tienen OTA, tienen vistas web, puedes cambiar cosas dinámicamente. Y si cambian el comportamiento de lo que fue aprobado, sí se rechaza. Eso es posible aquí. Es posible usar APIs de pagos para cosas no legales. Pero ahora puedes hacerlo mucho más fácil y a un ritmo más alto. Otra cosa es que lo que harán las tiendas de aplicaciones es que... Hay muchos ajustes de tiempo de construcción, que no puedes cambiar al aire. Así que esto va a ser como acceder a contenido o permiso de calendario. Con estas cosas, si envías tu aplicación a la tienda, pasarán por ella y verán como, okay, ¿puedo acceder al mensaje que dice que quieren usar tus contactos? Y si no puedes, entonces pueden deducir que puedes estar ocultando funcionalidad y rechazarán ese binario. Así que hay políticas en su lugar, que esto no valida. Pero todavía tienes que usarlo de manera responsable. Como la mayoría de las APIs. Úsalas de manera responsable.

Estoy totalmente de acuerdo. La gente está realmente emocionada con la demostración. Me encanta la demostración. ¿Estará disponible el código fuente? ¿Podemos poseerlo y ejecutarlo nosotros mismos? No por ahora, sin embargo.

Dividiendo Ramas y Componentes del Servidor

Short description:

División de rama y fusión en el repositorio de Expo. El tamaño del paquete importa incluso con el bytecode de Hermes. La carga de fragmentos incurre en un precio de red. La política de división de paquetes y los métodos de obtención/renderizado de datos deben ser compartidos. La interfaz de usuario puede ser más universal. La IA genera algunos componentes de la interfaz de usuario, pero el usuario puede crear sus propios componentes.

Pero sí, estamos activamente... Desde que revelé esto por primera vez en la Conf de React, he estado simplemente dividiendo la rama, y luego abriéndola en el repositorio de Expo. Así que puedes ver todo el progreso que estoy haciendo. GitHub barra Expo. Está en el directorio de aplicaciones. Y sí, estamos constantemente fusionándolo. Pero tenemos que hacerlo poco a poco.

Muy bien, así que sigue mirando en GitHub y en su Twitter. Sí, lo twittearé seguro. Y definitivamente, podrás tenerlo en tus manos.

La siguiente pregunta es en realidad sobre los componentes del servidor en móviles. ¿Y por qué los necesitas cuando el tamaño del paquete y la transferencia realmente no importan? ¿O es esto solo para React Native, como en la web? Esa es una buena pregunta. Esperaba que mi charla hubiera respondido a esa pregunta. Veamos. Componentes del servidor en móviles con un tamaño de paquete... Bueno, el tamaño del paquete realmente importa mucho. El tamaño inicial del paquete no importa tanto, porque tenemos el bytecode de Hermes, que significa que hacemos todo el análisis previo, y luego lo mapeamos en memoria al instante. Pero si estás dividiendo fragmentos y los estás cargando, todavía hay un precio de red que tiene que ser pagado. Y todavía tienes que esperar. Así que esencialmente funciona igual que la web. Misma práctica. Y lo que es realmente importante aquí es que cosas como la política de división de paquetes y la obtención de data y los métodos de renderizado, estos no son códigos que quieras estar haciendo varias veces en un código compartido. Estas son las partes que realmente quieres compartir. Cosas como la UI pueden ser más universales. Así que sí, fantástica pregunta, pero es muy, muy relevante en los dispositivos nativos.

No, seguro, seguro. Y esta pregunta es más sobre cómo construiste la UI. ¿La AI generó toda la UI? Sé que hubo momentos, por ejemplo, donde deliberadamente provocaste la generación o creación de un componente, seguro. ¿Qué pasa con el resto? ¿También fue creado por ella? Sí. Así que la mitad de la diversión aquí es que haces tus propios componentos.

Generación de IA y Cumplimiento

Short description:

La IA genera componentes. El estilo puede ser un desafío. La salida de la IA puede ser revisada para el cumplimiento. El entorno contenerizado garantiza la seguridad. La demostración básica de IA permite construir cualquier tipo de aplicación. Una aplicación para gobernarlas a todas. Evan Bacon gobierna ExpoRouter.

Así que cosas como el componente de películas fue un componente pre-hecho, y luego al final allí donde se genera y puedes ver el código por encima de él, eso es todo generado por AI. Así que eso no está guionizado, y no tenía idea de si realmente se ejecutaría o correría. Lo he hecho una vez antes, así que estaba confiado. O si no funcionaba, podría intentar mitigar la solución o hacer alguna broma sobre la lluvia. Sí, así que parte de ello fue, pero los componentes generados, es difícil hacer que el estilo se vea realmente bien y para esto, sólo quería que todo se viera muy bien. Y luego viste allí al final, era sólo como un botón y luego como una caja de texto sin estilo. Así que, sí.

No, seguro. Muy bien, tenemos otra pregunta, que es especialmente con AI, no siempre sabes con seguridad lo que va a crear. Sí. Entonces, ¿cómo sabes que la AI no devolverá código o un componente o algo que vaya en contra de las políticas de la tienda de aplicaciones o algo sospechoso que no quieras que suceda. Otra gran pregunta. Ustedes realmente están en ello hoy. Así que sí, esto podría haber sido la singularidad. Imagina eso. Podríamos hacer que genere cualquier cosa y empiece a transmitir código. Sí, no, tienes acceso al código en el servidor antes de ejecutarlo, así que podrías ejecutar en un entorno contenerizado y ver si accede fuera de la caja de arena. Apple también tiene cajas de arena para su código, lo que te impide simplemente enviar código nativo al aire. Así que puedes confiar en muchas capas diferentes de seguridad. Pero también esto es sólo una demostración básica de AI. La clave es que las cadenas representan código nativo, lo que significa que puedes construir cualquier tipo de aplicación que quieras y puedes construirla mejor que cualquier otra aplicación que hayas visto. Genial. Y me encanta esta última pregunta. No sé si es realmente una pregunta, más bien una afirmación de que esta es la aplicación estilo El Señor de los Anillos. Una aplicación para gobernarlas a todas. Tenemos un orador increíble que gobierna todo ExpoRouter. ¿Podemos darle un aplauso a Evan Bacon?

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

Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced 2022React Advanced 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
Featured Workshop
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
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!
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
Workshop
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
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.
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