Concepts Choosing zfb When zfb fits your project, when it does not, and where the scaling sweet spot is. Design Philosophy Why zfb stays narrow on purpose, and why the AI era tips the balance further toward recipes over plugins. Architecture overview Top-down mental model of zfb's runtime stack — the two bundles, what runs where, and why the Hono/Workers shape is the stable contract. Engine vs Framework zfb is the engine — frameworks like a future zudo-doc-v2 sit on top of its primitives. Frontmatter One unified frontmatter contract across .md, .mdx, and .tsx — YAML on the markdown side, a static export literal on the TSX side, one JSON shape on the Rust side. Routing How file-system routing under pages/ maps to URLs in zfb. Dynamic Routes Use paths() to enumerate the concrete URLs a [slug].tsx or [...slug].tsx page should build, and pass per-URL props to the component. Markdown and HTML Pages Use .md and .html files as first-class page entries alongside .tsx — same routing conventions, different render path. Content Collections Define typed collections of Markdown content in zfb.config and load them from pages. MDX Components How MDX entries reach your pages as renderable React/Preact components, and how to override individual elements via the components prop. Custom Directives Register your own MDX directives — container, leaf, and text — that map to JSX components without writing any Rust. Data Three options for sourcing structured data in zfb — content collections, data collections, and plain TS modules. Styling Global CSS, Tailwind v4, and where component-scoped styling fits in zfb. Static Assets How to ship images, SVGs, fonts, favicons, robots.txt, and any other byte-for-byte file through zfb's public/ directory. Islands Mark client-interactive components with "use client" and let zfb hydrate them in the browser. Non-HTML Pages Emit XML, RSS, JSON, and plain-text pages alongside your HTML — same TSX page model, different output extension and Content-Type. Build Pipeline An end-to-end tour of how zfb turns your project into a built site. Incremental rebuild How zfb's dependency graph limits each rebuild to the pages actually affected by a file change. Dev mode lifecycle What happens between hitting save on a .tsx file and seeing the change in the browser — watcher, rebundle, SSR refresh, and the three SSE event types. SSR on a Worker (adapter mode) How a prerender = false zfb page actually runs in production — the two-layer worker output, the ASSETS-first dispatch, and the AsyncLocalStorage trick behind getCloudflareContext(). Plugins Author and consume zfb plugins — the four lifecycle hooks, virtual modules, import aliases, and dev-only injected routes.