Start · application topology
Routing and layouts
The file tree is the route graph. Presolve resolves route identity, URL ownership, application-shell composition, and nested layout invocation at compile time, then publishes deterministic HTML for every route.
File routes
app/routes/index.tsx/app/routes/about.tsx/about/app/routes/docs/index.tsx/docs/app/routes/docs/api.tsx/docs/api/The root route is not redirected to an internal artifact path. dist/routes/root/index.html is a publication detail; the deployment adapter serves it at /.
Application shell
app/app.tsx wraps every route. Put shared navigation, providers, theme UI, footer, and application framing here. Keep document metadata and stylesheet links in the document layer.
import { slot, Component, type SlotContent } from "presolve";export class App extends Component {children: SlotContent = slot();render() { return <div className="app"><slot /></div>; }}Nested layouts
A layout.tsx inside a route directory wraps that subtree. For example, app/routes/docs/layout.tsx composes with every /docs/* route. It declares a children: SlotContent = slot() field and renders one default outlet.
app/app.tsx.Navigation
Use ordinary anchors with absolute application paths. Links work in the published HTML before any browser program activates and preserve native browser semantics.
<a href="/docs/components/">Components</a>Current boundary
- Deterministic static routes and nested layout composition are supported.
slot()fields are the current layout outlet form.- Conditional, keyed, nested, and slot-projected structural hosts are represented in compiler artifacts and browser lifecycles.
- Client-side router interception, middleware, executable server loaders, and dynamic server routing are not part of the static beta adapter.