Capítulo 4: React Router v7 — Tu Chat Full-Stack
Ya entiendes el streaming. Viste cada text-delta, cada finish-step, cada byte viajando por el wire.
Ahora veamos cuánto código desaparece cuando usas un framework full-stack.
El mismo chat, menos código
Así se ve el endpoint de chat en Hono:
Así se ve en React Router v7:
Sin Hono(). Sin serve(). Sin configurar puerto. React Router v7 maneja todo eso por ti.
El endpoint como action
En React Router v7, cada archivo en app/routes/ puede exportar un action. Cuando haces POST a esa ruta, se ejecuta el action.
Registra la ruta en routes.ts:
Listo. POST a /api/chat ejecuta tu action y retorna el stream.
Lo que React Router v7 hace por ti
Headers correctos
toUIMessageStreamResponse() configura automáticamente:
Content-Type: text/plain; charset=utf-8x-vercel-ai-ui-message-stream: v1Cache-Control: no-cacheTransfer-Encoding: chunked
No tienes que pensar en esto.
Type safety con Route types
El tipo Route.ActionArgs viene generado automáticamente. TypeScript sabe exactamente qué propiedades tiene request.
Hot reload
Cambias el código, el servidor se recarga. Sin reiniciar manualmente.
Deploy integrado
Un fly deploy y tu app está en producción. El mismo código corre en desarrollo y producción.
useChat apuntando a tu action
En el cliente, useChat se conecta al action mediante transport:
Nota AI SDK v6: El hook usa
transportconDefaultChatTransportpara configurar el endpoint. UsamosuseStatede React para el input, ysendMessage({ text })para enviar. Los mensajes tienenpartsen lugar decontent.Si tu endpoint es exactamente
/api/chat(el default), puedes omitirtransportcompletamente:
Callbacks en el servidor RRv7
Los callbacks funcionan igual que en Hono:
Mismo código que en Hono. El AI SDK no cambia—solo cambia el framework que lo envuelve.
Datos custom en RRv7
createUIMessageStream también funciona igual:
El cliente recibe los datos en message.parts exactamente igual.
Un chat completo en RRv7
Aquí está el ejemplo completo con contexto dinámico, callbacks, y persistencia:
Y el cliente:
Cuándo elegir cada uno
| Escenario | Usa |
|---|---|
| API standalone para múltiples clientes | Hono |
| Microservicio de IA en el edge | Hono |
| App full-stack con React | React Router v7 |
| Debugging profundo del protocolo | Hono |
| Máxima productividad | React Router v7 |
| Deploy a Cloudflare Workers | Hono |
| Ya tienes una app RRv7 | React Router v7 |
No es una competencia. Son herramientas para diferentes contextos.
En una frase
- RRv7: El framework hace el trabajo sucio. Tú escribes la lógica.
- El conocimiento de Hono no fue en vano: Cuando algo falle, sabrás dónde buscar.
- Mismo AI SDK, diferente envoltorio: Los callbacks, el protocolo, todo funciona igual.
Hasta ahora el modelo solo genera texto plano. En el próximo capítulo veremos cómo obtener datos estructurados: objetos tipados que tu código puede consumir directamente, sin parsear strings.
¿Ya compraste el libro?
Si compraste el libro y no encuentras tu email de descarga, ingresa tu email y te enviamos un nuevo enlace.
