Site / Creating a site

Server rendering a route

The server does what prefetch does, then renders. URL → route → target Model → sourcesFor → satisfy → an SSR plan over those Sources with Remote's resume part → covered inspection → rendered page carrying the destination's data:

ts
const plan = SSR.plan(App, {
  id: 'owner',
  state: Projection.pick(App.model.route),
  surfaces: Object.values(active),
  parts: [Remote.resume(Data)],
})
const rendered = yield* SSR.render(config, plan, { buildId: 'b' })
const page = SSR.page(template, rendered)

SSR.inspect proves the plan covers what the browser's Surfaces will read; the envelope carries exactly what the resolved Surfaces required — a page resumes with its data present and asks the server for none of it. Static generation is the same preparation under the staticSite build plugin, with sitemap and robots derived from the generated pages. The browser takeover (when / otherwise / freshness) stays proved in foldkit-ssr.