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 Navigation state
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.
Related guides
The authored surfaces are Apps and Navigation state .