Shipped the docs hub
Nine docs across three collections, with tabbed code, step sequences that also drive the HowTo schema, file trees and env tables. Syntax highlighting runs on the server, so the whole thing costs the browser nothing.
// log
A running record of what got built, what it taught me, and what turned out to be a bad idea. Short entries, newest first — the unedited version of everything the case studies summarise.
7 entriesRSS
Nine docs across three collections, with tabbed code, step sequences that also drive the HowTo schema, file trees and env tables. Syntax highlighting runs on the server, so the whole thing costs the browser nothing.
publish-content.ts turns a markdown file into a Sanity draft — images uploaded, references resolved, callouts and tabbed code converted. Drafts by default; publishing stays a human decision.
Moved the docs search index from a page-load fetch to a first-interaction fetch. Most readers never open search, so for them it went from a real download to zero bytes. The obvious thing, six months late.
Tried async components inside the Portable Text type map. It works, but it couples correct output to how the library renders children. Walking the body once up front and attaching the markup is duller and much harder to break.
Switched Framer Motion to LazyMotion with m.* components, and replaced the counter's imperative animate() with a plain rAF loop. Pulling the whole animation engine in to interpolate one number was not a good trade.
Seven months from a marketplace with forty indexable URLs to one with 2,400. Organic is now their largest channel, and the ops team publishes without filing a ticket.
Reading searchParams in a route opts it into per-request rendering — so every category and tag archive silently stopped being prerendered. Moving pagination onto a path segment fixed it. next build output is the only place this shows up.