what this page is
A proof page
Each section maps a conference claim to a working route, a visible behavior, and a source file in this repo.
/slides/tanstack-start/showcase
A conference companion for showing how this site uses TanStack Start: typed URLs, explicit server boundaries, opt-in rendering choices, and Cloudflare-native deployment.
This page is not a second slide deck. It is a live prop: open it when the talk moves from claims to proof, click one feature, show the code path, then jump back to the deck.
what this page is
Each section maps a conference claim to a working route, a visible behavior, and a source file in this repo.
what to do
Pick a feature pill, show the live behavior, mention the listed files, then return to the main deck before the page becomes the talk.
why it helps
The audience can see the primitives in a real website: slides, analytics, MDX, static pages, auth routes, and Cloudflare infrastructure.
feature / router
Next.js pressure
Search params usually arrive as loose strings that every page has to parse again.
Start move
The route validates URL state once, then loaders, links, and components share the type.
Use this first. It is the smallest way to show the audience that Start treats the URL as application state, not a string bag.
Click the feature pills and change `?feature=` in the URL. The route validates bad values back to `router`, then loaderDeps keys the server function call from the parsed value.
supporting demos
Use these cards when someone asks “but where is that actually happening?” They link this route back to real app behavior instead of abstract framework marketing.
Hover these links in an editor: the destination and search object are checked against the route tree.
<Link to="/stats" search={{ period: "30d" }} />
<Link to="/slides/tanstack-start" search={{ live: "demo" }} />The blog loader fetches a server-rendered MDX subtree and composes client islands through it.
const Renderable = await renderServerComponent(
<MDXContent components={{ Sparkles }} />
);
return { post, Renderable };One function has separate server and client implementations; each side is tree-shaken from the other bundle.
createIsomorphicFn()
.server(() => "server render")
.client(() => "hydrated browser")Current runtime: server render
This island is server-rendered into the document, but Start can delay loading and hydrating its JavaScript until the boundary is close to the viewport.
For the talk, the useful framing is: “I do not have to choose between HTML now and JavaScript now.” The page still has meaningful markup, while the button below only becomes interactive after the hydration trigger runs.
hydration waits for visibility
This is useful for comments, charts, embeds, and other below-fold UI: keep the page indexable and good-looking, but do not make the browser hydrate everything up front.
suggested speaker flow
step 1
Show the feature pills and explain that a typed search param is driving both the UI and the loader dependency.
step 2
Press the refresh button and point out that the same function works from SSR and the hydrated browser.
step 3
Scroll to the hydration island and frame Start as a set of knobs, not one global rendering ideology.
step 4
Close on the slide poll: the deck itself is the Cloudflare/Durable Object deployment proof.