0Pricing
React Academy · Lección

SSR en streaming desde el edge

Transmita la salida HTML de React mediante ReadableStream para que el navegador pueda mostrar contenido significativo de inmediato.

SSR en streaming desde el edge es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

La ventaja del streaming

Cuando un servidor transmite HTML, el navegador recibe y renderiza el contenido por fragmentos en lugar de esperar al documento completo. Esto permite que los usuarios vean e interactúen con las partes visibles de la página —el encabezado, la navegación y la sección principal— mientras las secciones más lentas que dependen de datos siguen cargándose.

renderToReadableStream con bootstrapScripts

Pasar bootstrapScripts a renderToReadableStream indica a React dónde se encuentra el bundle de JavaScript del lado del cliente. React inyecta una etiqueta de script al final del stream para que el navegador cargue el bundle y llame a hydrateRoot, haciendo que la página sea interactiva a medida que termina de transmitirse cada sección.

Límites de Suspense en el árbol

El streaming de React se basa en los límites de Suspense para dividir el árbol de componentes en secciones que se pueden transmitir de forma independiente. Los componentes dentro de un límite de Suspense que esperan datos (mediante una Promise lanzada) se transmiten primero como placeholders; después, cuando se resuelven, transmiten su contenido real.

onShellReady: cuándo iniciar el streaming

El callback onShellReady se ejecuta cuando el shell HTML sin suspensiones —todo lo que está fuera de los límites de Suspense— está listo para transmitirse. Ese es el momento correcto para establecer el código de estado HTTP y las cabeceras de respuesta, y después llamar a pipe(res) o empezar a leer desde el ReadableStream.

Por qué deben establecerse primero los códigos de estado

Los códigos de estado HTTP y las cabeceras deben enviarse antes de que comience el body de la respuesta. Como el streaming se inicia con onShellReady, cualquier lógica de gestión de errores (establecer el estado 500 o redirigir) debe ejecutarse antes de que el shell empiece a transmitirse; una vez iniciado el streaming, el código de estado queda bloqueado.

Gestión de errores: onShellError

onShellError se ejecuta cuando se produce un error fatal antes de que el shell esté listo, por ejemplo, un error en un componente de nivel superior situado fuera de cualquier límite de Suspense. En ese caso, el shell nunca se transmite y debe responder con una página de error estática o redirigir a una ruta de error.

Gestión de errores: onError

onError se ejecuta cuando se producen errores recuperables dentro de los límites de Suspense. React aún puede transmitir el resto de la página; el límite afectado por el error renderiza su UI alternativa de error. Utilice onError para el logging: capture el error en su plataforma de observabilidad sin abortar el stream.

Mejora progresiva y tiempos de espera

Si los datos de un límite de Suspense tardan demasiado, transmita el shell de todos modos y deje que el límite se hidrate en el cliente. Implemente un tiempo de espera: después de 5 segundos, llame a abort() sobre el stream si el límite no se ha resuelto, y el cliente obtendrá los datos por su cuenta mediante useEffect.

Mecánica del streaming de Cloudflare Workers

El runtime de Workers pasa ReadableStream directamente como cuerpo de Response. La infraestructura de Cloudflare reenvía cada fragmento al navegador del usuario a medida que React lo produce, sin almacenar en búfer todo el documento. Esto significa que los primeros bytes de HTML salen del PoP de edge en cuestión de milisegundos desde la llegada de la solicitud.

Abort: control de streams largos

renderToReadableStream devuelve una función para abortar. Si se cancela la solicitud (por ejemplo, porque el usuario navega a otra página), llamar a abort() detiene la renderización y el procesamiento de datos adicionales por parte de React. Esto evita desperdiciar capacidad de cómputo en solicitudes huérfanas y mantiene acotado el uso de CPU del Worker.

Perfil de latencia de extremo a extremo

Con el streaming desde el edge, la cadena completa de latencia es la siguiente: 5 ms (de la solicitud al PoP más cercano) + 2 ms (inicio en frío del Worker) + 8 ms (renderización del shell) = 15 ms hasta el primer byte. El navegador del usuario renderiza el elemento LCP a partir del shell mientras el resto de la página continúa transmitiéndose en segundo plano.

Momento de ejecución de onShellReady

¿Cuándo se ejecuta exactamente la devolución de llamada onShellReady durante el SSR mediante streaming?

Resumen de la lección

El SSR mediante streaming desde el edge entrega HTML en fragmentos, lo que mejora FCP y LCP al enviar el shell de inmediato. Los límites de Suspense dividen el árbol en secciones que se pueden transmitir de forma independiente. onShellReady indica que debe comenzar el envío mediante pipes; establezca los códigos de estado antes de llamarlo. onShellError gestiona los fallos irreversibles, onError gestiona los recuperables y abort() evita desperdiciar trabajo en solicitudes canceladas.

Preguntas frecuentes

¿La lección «SSR en streaming desde el edge» es gratis?

Sí — el texto completo de «SSR en streaming desde el edge» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «SSR en streaming desde el edge»?

Transmita la salida HTML de React mediante ReadableStream para que el navegador pueda mostrar contenido significativo de inmediato. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «SSR en streaming desde el edge»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Qué es el renderizado en el edge y por qué importa
  2. React en Cloudflare Workers con Hono
  3. SSR en streaming desde el edge
  4. Estrategias de caché en el edge para aplicaciones React
← Volver a React Academy