Sanity CMS: редактор контента, который любят разработчики

Обзор Sanity — headless CMS с real-time коллаборацией, GROQ-запросами и кастомизируемой админкой. Для команд, ценящих DX и контроль над контентом.

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, оно проще.