Что такое Server-Driven UI и почему фронтендеры его любят
Разбираем, как сервер может управлять интерфейсом, почему это ускоряет работу и где эта технология особенно полезна
🚀 SDUI — это подход, при котором сервер отдаёт клиенту описание интерфейса (обычно JSON), а клиент его отрисовывает. Меняем UI — меняем данные, а не сборку приложения. Меньше релизов, больше гибкости. ✨
📦 Определение: в чём суть SDUI
Server-Driven UI — это когда сервер управляет структурой и поведением UI: отправляет клиенту схему экрана (компоненты, их свойства, действия). Клиент знает, как рисовать базовые блоки и связывать их с событиями, но логика компоновки и вариативность живут на сервере.
{
"screen": {
"title": "Товар дня",
"blocks": [
{ "type": "image", "src": "https://cdn.example.com/promo.png", "ratio": "1:1", "alt": "Promo" },
{ "type": "text", "style": "h2", "value": "Скидка -30%" },
{ "type": "button", "style": "primary", "text": "Купить", "action": { "type": "POST", "url": "/buy?id=42" } }
]
}
}
Клиенту не пришлось менять код, чтобы нарисовать новый экран — он лишь отрисовал присланную схему.

🔍 Как это работает по шагам
Клиент запрашивает конфигурацию экрана у сервера.
Сервер возвращает JSON/DSL со схемой UI и действиями.
Клиент рендерит UI из схемы и подписывает события.
Бизнес-логика (A/B, фичи, условия показа) — на сервере.
Это особенно удобно для мобильных приложений, где релизы проходят модерацию.
💡 Чем SDUI полезен фронтендеру
Меньше релизов: правим UI на сервере — клиент подхватывает изменения сразу.
Единый опыт на платформах: веб и мобильные клиенты рендерят одну схему.
Быстрые эксперименты: A/B-тесты и фичефлаги — без перекомпиляции клиента.
Контент- и конфиг-центричный подход: дизайн-систему можно «подтягивать» через схему.
Эксперимент без релиза: продуктовая команда меняет текст кнопки «Купить» → «В корзину» в ответе сервера и смотрит на конверсию в тот же день.
📌 Реалистичный пример API
Сервер может отдавать не только список блоков, но и условия, биндинги данных и события:
{
"screen": {
"title": "Каталог",
"blocks": [
{ "type": "search", "placeholder": "Найти товар..." },
{ "type": "list", "items": "{{products}}",
"item": {
"type": "card",
"image": "{{item.image}}",
"title": "{{item.title}}",
"price": "{{item.price}}",
"cta": { "type": "button", "text": "Добавить", "action": { "type": "POST", "url": "/cart/add", "body": {"id": "{{item.id}}"} } }
}
}
],
"data": { "products": "/api/products?query={{query}}" },
"experiments": { "cta_text": ["Купить", "Добавить", "В корзину"] }
}
}
Шаблоны {{placeholders}} подставляются клиентом из данных, запрошенных по ссылкам.
✅ Плюсы
Снижение time-to-market для UI-изменений.
Централизация правил показа и вариаций интерфейса.
Единая дизайн-система через абстракции компонентов.
⚠️ Минусы
Дебаг сложнее: баги возможны и в схеме, и в клиенте.
Требует дисциплины версионирования схемы.
Ограничения по «богатым» интеракциям на клиенте.
🔧 Где SDUI особенно уместен
Мобильные приложения с долгой модерацией релизов.
Проекты с частыми акциями/редизайнами и A/B-тестами.
Мультиплатформенные продукты (Web + iOS + Android).
🧭 Заключение
Server-Driven UI ускоряет продуктовые эксперименты и снижает количество клиентских релизов. Он хорошо работает там, где UI часто меняется и нужно быстро катить вариации без перепаковки приложений. При этом важно продумать версионирование схем и границы ответственности между клиентом и сервером.
📚 Хочешь углубиться в тему?
В приложении Кодик ты найдёшь подробные уроки по разным темам, пошаговые упражнения, разбор ошибок и удобную практику прямо в телефоне или браузере.
А если хочешь быть в курсе новостей, новых фич и полезных материалов — подписывайся на наш Telegram-канал. Там уютно, по делу и с любовью к коду ❤️