What's new in Turbo Start Sanity

A roundup of the features that define the current Turbo Start Sanity: the page builder, Markdown for agents, visual editing, end-to-end TypeGen and more.

57efbed4ccc2c41cd2bb2821848afe69b12edd57.png

Turbo Start Sanity has grown from a starter into an opinionated platform for Next.js and Sanity projects that need to scale. Here is a tour of the features that define where it stands today.

A composable page builder

The core content model is a page builder: an array of typed blocks that editors arrange freely. Each block is self-contained — its schema, GROQ projection and headless React component live together in one folder — so the query and the UI cannot drift apart. Blocks register through a single blockSchemas export, and the frontend renders them through a typed dispatcher that turns a schema rename into a build error rather than a runtime surprise.

Markdown content negotiation for agents

Every page is now available as clean Markdown. Append .md to any URL, or send Accept: text/markdown, and a proxy rewrites the request to a route that serializes the page's Sanity data straight to Markdown — never touching React. Agents read your content cheaply, unknown blocks degrade to nothing instead of leaking as raw tags, and the response ships with Vary: Accept and noindex headers so caches and crawlers stay honest.

Visual editing and live content

The Presentation tool plus the Sanity Live Content API give editors click-to-edit on the real page. Data attributes across the page builder map a clicked element back to its exact field in the Studio, optimistic updates make edits feel instant, and published changes appear without a full rebuild.

End-to-end type safety

Types flow from the schema, through every defineQuery, into narrow React props. Frontend types are derived from generated query results with Extract and NonNullable rather than hand-written, so the shape Sanity stores and the shape React expects cannot silently diverge. The workflow is two commands — extract, then generate — after any schema change.

SEO and AEO by default

Metadata resolves through a fallback chain so no page ships with an empty title, Open Graph cards render from a dynamic image route, and JSON-LD is generated from existing fields at render time. Two distinct switches — seoNoIndex and seoHideFromLists — separate "keep it out of search" from "keep it out of my own lists".

A pnpm monorepo built to scale

Under the hood it is a pnpm-driven Turborepo: apps/web and apps/studio sit alongside shared packages for the Sanity client and queries, the page-builder blocks, a UI kit, a validated env layer and a logger. pnpm's linked dependency store keeps installs fast and disk usage modest, while Turborepo orchestrates linting, formatting and type checking across the whole workspace.

Conventions that keep it tidy

Files are kebab-case, components are .tsx and utilities .ts, and linting and formatting run through Biome rather than ESLint and Prettier. Small rules, consistently applied, are what let the codebase stay legible as it grows.

Where it is headed

The through-line is the same in every feature above: make the correct thing the automatic thing. Typed dispatchers, derived metadata, colocated block definitions and machine-readable output all exist so that scaling the content does not mean scaling the maintenance. Pull requests welcome — that is how each of these landed.