# 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.

![Neon yellow and orange light streaks crossing a dark dotted grid](https://cdn.sanity.io/images/s6kuy1ts/production/57efbed4ccc2c41cd2bb2821848afe69b12edd57-4096x2596.png?w=1600&fm=webp&q=80&auto=format)

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.
