Skip to content

Rendering pipeline

Rendering pipeline

Apps are Svelte pages, but the shell around them is generated. This page is how a request becomes a rendered surface — loaders, the nav stack, and collection surfaces.

Generated loaders

At build time Bolt generates an app loader per discovered app and wires it into the application shell. The shell owns authentication, the sidebar, and the workspace chrome; each app owns its own surface.

  request
        │
        ▼
  ┌─────────────────────────────────────┐
  │  application shell                 │
  │  (auth, sidebar, workspace chrome) │
  └──────────────┬──────────────────────┘
                 │  generated loader
                 ▼
  app surface (Svelte page)
        │
        ├── live data ──► collection surfaces (table, form)
        ├── nav state ──► ?stack= page or sidesheet
        └── records ────► +representation.svelte overrides

Record-detail navigation is carried in ?stack= URL state and rendered as a stack — a page or a sidesheet, with route context for each entry. Back and refresh restore the same stack.

Collection surfaces

Rendering a collection uses the generated surfaces — CollectionTable for tables, CollectionForm for forms, and +representation.svelte overrides for record detail — all fed by the client, all live.

The authored surfaces are Apps and Navigation state .