[]previous and next page

Server rendering and hydration

There is nothing to write: createHandler renders each page with the matched route chain, sends the loader data in <script id="__shadow_router">, and the generated…

For agentsUpdated

There is nothing to write: createHandler renders each page with the matched route chain, sends the loader data in <script id="__shadow_router">, and the generated client entry (hydrateDusk) hydrates onto the server's markup without running the loaders again. The mode option chooses how the page is sent:

mode Behavior Next.js analog
"stream" (default) The shell is sent first; Suspense boundaries show their fallback and the content follows in the same response Streaming with loading.tsx / Suspense
"async" The renderer waits for every useResource to settle and sends one document export const dynamic = "force-dynamic" without streaming
"string" Renders once, no waiting none

A route's loader is awaited before any byte is sent, so the status code and redirects are always right. To stream slow data, start a useResource below a Suspense boundary instead of loading it in the loader. See SSR, hydration and streaming.