I’m hoping to use Sanity as an earlier part of our design and prototyping workflow. Are there any techniques or plugins folks would recommend to – 1. Create Sanity schemas...
Great questions! Using Sanity early in design/prototyping is smart. Let me address both of your needs:
1. Creating Schemas via GUI
There isn't an official GUI schema builder in Sanity Studio. Schemas are typically defined in TypeScript/JavaScript code, which gives you version control, collaboration benefits, and type safety. However, there are a couple of approaches:
@sanity-typed/schema-builder - This plugin provides a TypeScript-based schema builder with full type inference. While still code-based, it offers better developer experience with autocomplete and type safety.
Visual planning tools - Some teams use flowchart makers or diagramming tools for initial content modeling, then translate those to code. This can help with stakeholder communication during prototyping.
The code-first approach actually works well for prototyping since you can iterate quickly, commit changes, and share schemas with your team through version control.
2. Generating Mock/Seed Data (Critical for your workflow!)
This is where Sanity has you covered! There are several excellent options:
Best option: @sanity-typed/faker plugin
The @sanity-typed/faker plugin generates realistic mock data directly from your schemas using Faker.js under the hood. It infers data types from your schema and creates appropriate fake content automatically.
import { sanityConfigToFaker } from "@sanity-typed/faker";
import { defineConfig } from "sanity";
// Generate mock data based on your schema
const mockData = sanityConfigToFaker(yourConfig);Official approach: CLI + custom scripts
Sanity has official documentation on generating demo content. You can write scripts using Faker.js to generate NDJSON files, then import them using the Sanity CLI:
- Create a script that generates fake data matching your schema
- Output to NDJSON format or use transactions to create documents directly
- Import with
sanity dataset import data.ndjsonor execute withsanity exec
The official guide walks through creating sophisticated seed scripts that handle:
- References between documents
- Image uploads with
client.assets.upload() - Converting HTML to Portable Text using @sanity/block-tools
- Batching with p-limit to avoid rate limits
- Repeatable seed data for different environments
Template example
The Sanity + Remix template includes a working example of a seed script using Faker to populate a fresh Studio with content - you can examine this for implementation patterns.
Prototyping Workflow Recommendation
For your design/prototyping workflow, I'd suggest:
- Define schemas in code (iterate quickly with hot reloading in Studio)
- Use @sanity-typed/faker or a custom seed script to instantly populate with realistic data
- Share the seeded Studio with designers/stakeholders for feedback
- Iterate on both schema and frontend design together
This gives you the "exemplified model" you need while keeping everything version-controlled and reproducible across environments. You can even add a fake: true boolean field to all generated content, making it easy to delete and regenerate seed data whenever you update your schema during prototyping.
The combination of Sanity's auto-generated editing interface from your schema + rich mock data means you can get realistic prototypes in front of stakeholders very quickly!
Sanity – Build the way you think, not the way your CMS thinks
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.