# Guide: Build a Multi-View App

**Goal:** an app with tabs (or wizard/master-detail/modal navigation).

Compose multiple views into a shell; the shell provides navigation, each view renders its own on-chain floor:

```ts
// multi-view apps are composed with the multiview builders (buildTabs / buildWizard / buildMasterDetail / buildModal),
// then compiled like any component:
import { format } from "@chainrender/client";
const app = buildMultiView({
  shell: header,
  views: [quoteView, venuesView, routeView],
  template: "tabs", // or "wizard" | "master-detail" | "modal"
});
```

A reachability invariant (enforced on-chain) ensures no view is stranded. The app's capability envelope is the
union across all views + shell. See **[Concepts → Composition](../concepts/composition.md)**.
