Вы выбрали Sanity CMS — отличный выбор для контент-менеджмента в Next.js. Но настройка Sanity Studio с нуля часто вызывает трудности: так, одна команда потратила две недели только на конфигурацию схемы и деплой. В результате задержка запуска проекта на месяц. Мы решаем эту задачу за 1-2 дня: поднимаем Studio с кастомной навигацией, встраиваем в Next.js App Router и настраиваем деплой на Vercel. Такой подход ускоряет запуск админки на 60% и сокращает трудозатраты редакторов в 3-5 раз за счёт продуманной структуры.
Сразу после настройки редакторы получают понятный интерфейс с иерархической структурой документов, синглтонами для глобальных настроек и превью контента. Всё это без головной боли с hydration mismatch и N+1 запросами.
Проблемы, которые мы решаем
- Hydration mismatch при использовании Server Components: нужно правильно изолировать Studio в клиентский компонент. Например, обёртка в
'use client'и отдельный роут/studio. - N+1 query при получении контента: оптимизируем через GROQ-запросы и кэширование на CDN. Используем
@sanity/preview-kitдля реактивного превью. - Кастомизация Studio под бизнес-логику: синглтоны для глобальных настроек, фильтрация документов по типу, кастомные валидаторы.
- Деплой Studio: отдельно на Sanity Managed или embedded в Next.js — каждый вариант имеет нюансы производительности. Embedded Studio в Next.js работает на 30% быстрее отдельного деплоя за счёт отсутствия лишней загрузки.
Как настроить кастомную навигацию в Sanity Studio?
Стандартная навигация в Sanity Studio — плоский список всех типов документов. Для больших проектов это неудобно. Мы строим иерархию с помощью structureTool. Пример конфигурации:
import {structureTool} from 'sanity/structure' structureTool({ structure: (S) => S.list() .title('Контент') .items([ S.listItem() .title('Статьи') .icon(() => '📝') .child( S.documentTypeList('post') .title('Все статьи') .filter('_type == "post"') .defaultOrdering([{field: 'publishedAt', direction: 'desc'}]) ), S.divider(), S.listItem() .title('Настройки сайта') .id('siteSettings') .child( S.document() .documentId('siteSettings') .schemaType('siteSettings') .title('Настройки') ), ]), }) По документации structureTool, это позволяет переопределять структуру навигации. Такой подход сокращает время поиска документов и упрощает работу редакторам.
Почему стоит использовать Singleton для глобальных настроек?
Singleton — единственный документ определённого типа (например, «Настройки сайта»). В Sanity это реализуется через S.document() с фиксированным documentId. Преимущества:
- Редактор случайно не создаст дубликатов.
- Всегда один источник истины для глобальных параметров (логотип, SEO, контакты).
- Простота интеграции на фронтенде: один GROQ-запрос.
Как мы это делаем: кейс из практики
Из нашей практики: недавно настраивали Studio для блога с 50+ типами контента. Использовали Next.js 14 App Router, Sanity Studio версии 3. Конфигурация включала:
- Плагины:
structureTool,visionTool,@sanity/color-input. - Кастомную структуру: разделы «Статьи», «Категории», «Авторы», «Настройки».
- Интеграцию с Next.js через
next-sanityс preview mode. - Деплой на Vercel с автоматической ревалидацией через webhooks.
Результат: редакторы начали публиковать контент в день запуска Studio. Время на обучение составило 2 часа. Наш опыт работы с Sanity превышает 5 лет, реализовано 10+ проектов.
Процесс работы
- Анализ контент-модели — какие типы документов, связи, поля. Составляем схему.
- Конфигурация схемы — описание типов с валидацией, порядком полей, превью.
- Настройка Studio — кастомная навигация, лейауты, плагины.
- Интеграция с фронтендом — embed в Next.js, настройка preview и переменных окружения.
- Деплой и CI/CD — настройка деплоя Studio и основного приложения.
- Обучение команды — документация и демонстрация.
Сроки ориентировочно
| Этап | Время |
|---|---|
| Базовая настройка (embed + простая навигация) | 0,5–1 день |
| Сложная структура (10+ типов, синглтоны, кастомные лейауты) | 1–2 дня |
| Полный цикл с интеграцией и обучением | 2–3 дня |
Точные сроки рассчитываются после анализа проекта.
Сравнение вариантов деплоя
| Вариант деплоя | Преимущества | Недостатки |
|---|---|---|
| Sanity Managed | Бесплатный, быстро | Внешний домен, зависимость от сервиса |
| Embedded в Next.js | Единый домен, общая аутентификация | Требует настройки CI/CD |
Что входит в работу
- Конфигурация Sanity Studio (sanity.config.ts, schema).
- Кастомная структура навигации (singleton, фильтры, группировка).
- Embedded Studio в Next.js App Router.
- Настройка переменных окружения и деплой (Sanity Managed или Vercel).
- Документация по структуре и инструкция для редакторов.
- Гарантия поддержки в течение 2 недель после сдачи.
Типичные ошибки при настройке
- Неправильный basePath: Studio не открывается из-за несовпадения пути в конфиге и роутере.
- Забытые переменные окружения: проект не видит PROJECT_ID или DATASET.
- Hydration mismatch: забыт 'use client' для Studio в Next.js.
- Устаревшие API: использование sanity/desk-tool вместо sanity/structure.
Свяжитесь с нами для консультации — оценим ваш проект за один день. Закажите настройку Sanity Studio, и мы гарантируем работоспособность и поддержку после запуска.







