Sanity — headless CMS из Норвегии, основанная в 2015 году. Главное отличие от конкурентов: контент — это структурированные данные, а не HTML-блоки. Разработчики описывают схему в коде, редакторы наполняют её в real-time коллаборативной админке, а запросы к контенту выполняются на GROQ — собственном языке запросов Sanity.
Сайт: sanity.io
Архитектура
Sanity разделяет контент и представление на фундаментальном уровне. Контент живёт в Sanity Content Lake — это облачное хранилище, доступное через API. Админка (Sanity Studio) — React-приложение, которое можно кастомизировать как угодно и хостить где угодно.
Схема контента описывается в JavaScript/TypeScript-файлах. Вы определяете поля, их типы, валидации, связи — и Studio автоматически подхватывает схему. Изменения в схеме деплоятся вместе с кодом Studio — Git-based workflow без GUI-конфигураторов.
GROQ — язык запросов
GROQ (Graph-Relational Object Queries) — это как GraphQL, но заточенный под работу с документами. Он позволяет запрашивать вложенные структуры, фильтровать, агрегировать и трансформировать данные в одном запросе. Пример:
*[_type == "post" && publishedAt < now()] | order(publishedAt desc) {
title,
"slug": slug.current,
"author": author->name,
"related": *[_type == "post" && references(^._id)]{title}
}[0...10]
Мощно, но требует привыкания. Разработчики, знакомые с GraphQL, осваивают за день-два.
Real-time коллаборация
Несколько редакторов могут работать над одним документом одновременно. Изменения отображаются мгновенно — как в Google Docs. Конфликты разрешаются на уровне полей. Для редакций и контент-команд, где над статьёй трудятся 2–3 человека, это killer feature.
Тарифы
- Free: unlimited контент, 2 пользователя, 100 GB assets
- Growth: $15/мес за пользователя — custom roles, scheduled publishing
- Enterprise: кастом — SSO, audit logs, dedicated support
Бесплатный тариф невероятно щедрый. Для команды до 5 человек — $75/мес. Сравнимо с Contentful ($489/мес за 5 пользователей) — разница на порядок.
Что хорошо
Developer Experience — главная фишка. Схема в коде, деплой через Git, кастомизация админки на React. Встройте свои компоненты прямо в панель редактора: превью, кастомные виджеты, интеграции. Sanity Studio можно стилизовать под бренд клиента.
GROQ — после освоения даёт суперсилу. Фильтрация по связанным документам, условные поля, агрегации — всё в одном запросе без N+1 проблемы.
Контент доступен через GraphQL и GROQ одновременно. API быстрый, кеширование на CDN, webhook’и для ребилдов.
Что сдерживает
Кривая обучения круче, чем у Strapi или Storyblok. GROQ нужно учить, Studio нужно собирать — это не Plug & Play. Для простого блога с типовой структурой оверхед великоват.
Vendor lock-in: контент в Content Lake — это не просто JSON. Экспортировать в Markdown можно, но структура Sanity (references, blocks, portable text) теряется. Обратный переезд будет болезненным.
Цена за пользователя ($15/мес) быстро набегает для больших команд. 20 редакторов — $300/мес.
Вердикт
Sanity — CMS для команд, где разработчики участвуют в проектировании контента. Если у вас сложная структура данных, потребность в real-time коллаборации и желание кастомизировать админку под клиента — Sanity лучший выбор на рынке. Для простых блогов и лендингов — берите Strapi, оно проще.