Rendering, SSR & hydration
The app shell is server-rendered, hydrated on the client and still keeps route loading honest.
SSR
The initial URL is injected explicitly
The demo no longer relies on an implicit request header path inside the router call site.
Hydration
Routes may load asynchronously
This page loads with a real delay. Hydration adopts the server-rendered tree and swaps it once the loader delivers.
Shell
Toolbar and navigation stay stable
The visual frame does not reflow unexpectedly while the routed content swaps.
Boot flow
Client and SSR both hand the initial URL to App explicitly.
scala
Runtime.renderToStringAsync { cursor =>
render(cursor, request, path)
}
render(hydratingCursor, request, url)