Дизайн-система для сайта и приложения: как согласовать интерфейсы и ускорить изменения
+7 (800) 444-11-27
Позвоните — обсудим ваш проект
Сергей CCO FITTIN
Сергей CCO FITTIN
Напишите мне в Telegram
Обсудить проект
Дизайн-система для сайта и приложения: как согласовать интерфейсы и ускорить изменения

Дизайн-система для сайта и приложения: как согласовать интерфейсы и ускорить изменения


Дизайн-система для сайта и приложения — это общий набор именованных значений, готовых элементов интерфейса и правил их применения, с которым работают и дизайнер, и разработчик. Компании берутся за неё в похожий момент: одна и та же кнопка на сайте и в приложении выглядит по-разному, правка одного цвета растягивается на недели, а каждый новый экран рисуют с нуля. Разберём устройство системы по слоям и маршрут согласования правок, при котором изменение доходит до выпуска без ручной сверки экранов.

Что такое дизайн-система для сайта и приложения

Дизайн-система описывает интерфейс на трёх уровнях: значения, элементы и правила применения. Для продукта, который живёт и на сайте, и в приложении, это даёт одну точку правки: цвет, отступ или поведение кнопки меняются в одном месте, а не в двадцати макетах и двух кодовых базах.

Три слоя системы

  • Токены — именованные значения: цвета, размеры шрифта, отступы, радиусы, тени, длительности анимации.
  • Компоненты — готовые элементы со всеми состояниями: кнопка, поле ввода, карточка товара, фильтр, модальное окно.
  • Правила — описание, какой компонент применяют в каком сценарии, как интерфейс ведёт себя при ошибке и как перестраивается на узком экране.

Дизайн-система, UI-кит и брендбук: что из чего следует

Чем различаются брендбук, UI-кит и дизайн-система

Документ Что входит Кто им пользуется Что остаётся нерешённым
Брендбук Логотип, палитра, типографика, тон коммуникации Маркетинг, подрядчики по рекламе Поведение интерфейса, состояния элементов, адаптивность
UI-кит Набор экранов и элементов в редакторе макетов Дизайнер Связь с кодом, правила применения, порядок изменений
Дизайн-система Токены, компоненты с состояниями, правила, версии, библиотека в коде Дизайнер, разработчики сайта и приложения, тестировщики Нужны владелец системы и регламент правок

Критерии, при которых дизайн-система оправдана

  • Интерфейс живёт минимум в двух средах — на сайте и в мобильном приложении.
  • Над продуктом работают несколько дизайнеров или несколько команд разработки.
  • Изменения в интерфейсе выходят регулярно, а не раз в несколько лет при редизайне.
  • В продукте есть повторяющиеся экраны: каталог, карточка товара, корзина, оплата, профиль.
  • Правку одного значения приходится вносить руками более чем в двух местах.
  • Продукт переходит с готового решения на собственное — эта задача разобрана в материале про переход с коробочного приложения на собственное.

При одном-двух совпадениях достаточно UI-кита с описанными состояниями. Начиная с трёх поддержка разрозненных макетов обходится дороже системы: каждая правка превращается в сверку экранов между командами.

Токены: базовый слой дизайн-системы

Токен — именованное значение, на которое ссылаются и макет, и код. Вместо кода цвета в двадцати слоях макета и в двух файлах стилей появляется имя вида color.action.primary с одним значением за ним.

Группы токенов, без которых система не работает

  • Цвет — текст, фон, границы, статусы: успех, предупреждение, ошибка.
  • Типографика — размер шрифта, межстрочный интервал, насыщенность.
  • Отступы и сетка — шаг отступов и внутренние поля компонентов.
  • Радиусы и тени — скругления и уровни подъёма элементов.
  • Длительности анимации — переходы между экранами и состояниями.

Уровни токенов

Два слоя имён и зачем нужен второй

Уровень Пример имени Что хранит Когда меняется
Базовый palette.blue.600 Конкретное значение цвета При смене фирменной палитры
Семантический color.action.primary Смысл: цвет основного действия При смене логики интерфейса, а не оттенка
Контекстный color.action.primary.dark Значение под тёмную тему или платформу При добавлении темы или среды

Время экономит семантический слой: когда кнопка ссылается на «цвет основного действия», смена оттенка затрагивает один токен, а экраны остаются неизменными. Если экраны ссылаются прямо на палитру, правка снова превращается в обход всех макетов.

Перенос значений в код

Автоматической цепочки между редактором макетов и кодом по умолчанию нет: значения переносит разработчик вручную, хотя и без пересоздания компонентов. Сократить эту работу помогает единый формат описания токенов — Design Tokens Community Group ведёт открытую спецификацию (tr.designtokens.org, черновик, проверено 28 октября 2026 года). Практический минимум: файл токенов лежит в репозитории рядом с кодом, имена согласованы один раз, а дизайнер при правке меняет значение, а не придумывает новое имя.

Компоненты и их состояния

Компонент — элемент интерфейса, который повторяется в разных сценариях и имеет собственные состояния: кнопка, поле ввода, карточка товара, строка фильтра, всплывающее сообщение. Конкретный экран оплаты компонентом не считается — он состоит из компонентов и описывается правилами раскладки.

Состояния, которые описывают обязательно

  • Обычное.
  • Наведение курсора и нажатие.
  • Фокус с клавиатуры.
  • Отключённое.
  • Загрузка.
  • Ошибка.
  • Пустое значение — для компонентов, которые показывают данные.

Пропущенные состояния дают расхождения быстрее всего. Если состояние загрузки не описано, на сайте появится индикатор в центре экрана, а в приложении — серые заглушки вместо карточек: обе команды решат задачу по-своему и будут правы.

Состояния ошибок и пустых экранов

  • Текст ошибки — называет причину и следующее действие: «Укажите код из SMS», а не «Неверные данные».
  • Место вывода — рядом с полем, к которому ошибка относится, а не только общим сообщением сверху.
  • Сохранение введённого — после неудачной отправки данные остаются в форме.
  • Повтор действия — при обрыве сети пользователь видит кнопку повтора, а не пустой экран.
  • Пустые экраны — пустая корзина, поиск без результатов, пустой список избранного: для каждого описан текст и целевое действие.

Два требования здесь совпадают с проверяемыми критериями доступности: ошибку нужно описать текстом (критерий 3.3.1 WCAG 2.2) и, где возможно, подсказать способ исправления (критерий 3.3.3). Сценарии, на которых проверяют эти состояния в e-commerce, разбираются в материале про сценарии UX-аудита корзины.

Адаптивность: сетка, точки перелома, плотность

Адаптивность в системе описывают правилами, а не набором макетов под модели устройств: какая сетка работает на каждой ширине, в какой момент раскладка перестраивается и как меняется плотность элементов.

Сетка и точки перелома

Точки перелома выбирают по моменту, когда ломается контент: карточка товара становится нечитаемой, таблица не вмещает колонки, фильтр перекрывает каталог. Для каждой точки фиксируют число колонок, внешние поля и шаг между элементами — такие правила переносятся на новые экраны без отдельного макета под каждую ширину.

Плотность и масштаб шрифта

Пользователь может увеличить системный шрифт, и интерфейс обязан это выдержать. Следствие для системы: высоту кнопок и строк списка задают минимальной высотой с внутренними отступами, а не фиксированным числом, и проверяют подписи на двух строках. Проверка занимает минуту: включите увеличенный шрифт в настройках устройства и пройдите каталог, корзину и оплату.

Различия сайта и приложения: что не переносится экран в экран

Общими в двух средах остаются токены и смысл компонентов. Раскладка, навигация и поведение при вводе описываются отдельно, потому что среды различаются на уровне системных правил.

Различия, которые описывают для каждой среды отдельно

Параметр Сайт Мобильное приложение
Навигация Меню, навигационная цепочка, несколько колонок Нижняя панель вкладок, переходы со сдвигом, системный жест возврата
Ввод Клавиатура и курсор, доступно наведение Палец и жесты, экранная клавиатура закрывает часть экрана
Системные элементы Отсутствуют Строка состояния, вырез камеры, безопасные зоны, системная тема
Потеря связи Страница перезагружается Экран остаётся на месте, нужны кэш и повтор запроса
Доставка изменений Публикуются сразу для всех Проходят проверку в сторах, часть пользователей остаётся на прежних версиях

Последняя строка влияет на устройство системы сильнее остальных. На сайте правка компонента доходит до пользователя в день выпуска, в приложении — после проверки в сторах и обновления у пользователя. Поэтому в системе описывают поведение компонента в прежней версии приложения: интерфейс остаётся работоспособным, пока обновление дойдёт до всех. Та же логика действует при переносе данных между версиями — её разбирает материал про перенос приложения на новый backend, а согласованность каналов продаж — материал про омниканальную архитектуру для ритейла.

На общей кросс-платформенной базе (например, на Flutter) библиотека компонентов в коде может быть одна, но правила раскладки и навигации всё равно описываются для каждой среды. Критерии выбора между кросс-платформенной и нативной разработкой на Kotlin и Swift собраны в матрице выбора для интернет-магазина.

Доступность: требования, которые можно проверить

Доступность сводится к измеримым значениям: их закладывают в токены и компоненты один раз, после чего каждый новый экран получает их по умолчанию.

Проверяемые требования доступности и способ проверки (WCAG 2.2, проверено 28 октября 2026 года)

Требование Значение Как проверить
Контраст обычного текста От 4,5:1 (критерий 1.4.3) Измерить пары «текст — фон» из токенов
Контраст крупного текста От 3:1 — для текста от 18 pt или 14 pt полужирным Проверить заголовки и акцентные подписи
Контраст границ и значимых иконок От 3:1 (критерий 1.4.11) Проверить рамки полей и иконки действий на фоне
Размер цели нажатия От 24×24 CSS-пиксела (критерий 2.5.8); платформы задают 44×44 pt для iOS и 48×48 dp для Android Измерить область нажатия, а не размер иконки
Видимый фокус Фокус заметен и не перекрыт (критерии 2.4.7 и 2.4.11) Пройти экран только с клавиатуры
Сообщение об ошибке Причина названа текстом, не только цветом рамки (критерии 3.3.1 и 3.3.3) Отправить форму без данных и с ошибочными данными

Что проверяют в готовом интерфейсе

  • Прохождение каталога и оплаты с экранным диктором.
  • Работу при увеличенном системном шрифте.
  • Прохождение формы только с клавиатуры.
  • Поведение при включённой системной настройке уменьшения анимации.
  • Текстовое описание изображений — для карточек товара это ещё и задача автоматизации alt-текста.

Этап 1. Инвентаризация интерфейсов

Что происходит: команда проходит по фактическим экранам сайта и приложения и выписывает используемые значения. На этом этапе видно, сколько оттенков серого и вариантов кнопки накопилось в продукте.

  • Перечень экранов и сценариев по двум средам.
  • Список фактических цветов, размеров шрифта и отступов.
  • Список компонентов-дублей, решающих одну задачу.
  • Перечень расхождений между сайтом и приложением.
  • Решение по каждому расхождению: что становится правилом, а что убирают.

Что получится: таблица расхождений и согласованный перечень компонентов, с которого начинается библиотека.

Этап 2. Токены и правила

Что происходит: дизайнер и разработчик договариваются об именах и структуре значений. Имена важнее значений: значение меняется за минуту, переименование расходится по макетам и коду.

  • Базовый слой: палитра, шрифтовая шкала, шаг отступов, радиусы, тени.
  • Семантический слой: цвет основного и второстепенного действия, цвета статусов, уровни текста.
  • Контекстные значения для тёмной темы и для мобильной среды.
  • Правила применения: уровень текста для заголовка карточки, отступ между блоками.
  • Формат файла токенов и место хранения в репозитории.

Что получится: файл токенов и документ с правилами именования, одинаковый для макетов и кода.

Этап 3. Библиотека компонентов

Что происходит: дизайнер описывает компоненты в редакторе макетов — с состояниями, вариантами и границами применения. Отдельное внимание уходит на ошибки и пустые экраны: их обычно не рисуют, и из-за них интерфейсы расходятся.

  • Компоненты каталога, карточки товара, корзины, оплаты и профиля.
  • Все состояния каждого интерактивного компонента.
  • Тексты ошибок и пустых экранов.
  • Варианты компонента для узкого и широкого экрана.
  • Иконки одного стиля и одной сетки — при нехватке набора помогают генераторы иконок для приложений.
  • Короткое описание применения рядом с каждым компонентом.
  • Проверка спорных сценариев на черновой раскладке — быстрые варианты дают инструменты веб-прототипирования.

Что получится: библиотека компонентов в макетах, по которой разработчик реализует экран без вопросов к дизайнеру по каждому отступу.

Этап 4. Перенос библиотеки в код

Что происходит: разработчики переносят токены и компоненты в кодовую базу сайта и приложения. Передача макетов в разработку (в индустрии этот шаг называют handoff) проходит один раз по каждому компоненту, дальше команда работает с кодовой библиотекой, а не с макетом.

  • Файл токенов в репозитории и подключение его к стилям.
  • Компоненты в коде сайта и в коде приложения.
  • Страница-витрина с компонентами и их состояниями для проверки.
  • Сверка готового интерфейса с макетом по отступам, контрасту и размеру целей нажатия.
  • Требования к интерфейсу в техническом задании на новые экраны — как это описывают, разобрано в материале про техническое задание на e-commerce-приложение.

Что получится: две кодовые библиотеки с общим файлом токенов и витрина компонентов, на которой видно расхождения.

Этап 5. Версии, поддержка и обучение команды

Что происходит: система получает владельца, версии и правило для исключений. Без этого библиотека постепенно начинает описывать прошлое состояние продукта, а команды снова рисуют экраны по памяти.

  • Версия библиотеки с перечнем изменений в каждом выпуске.
  • Владелец библиотеки макетов и владелец библиотеки в коде.
  • Правило для исключений: когда разовое отклонение допустимо и как оно фиксируется.
  • Короткое обучение для дизайнеров, разработчиков и тестировщиков.
  • Регулярная проверка расхождений между продуктом и библиотекой — её удобно включить в общий порядок проверки качества разработки.

Что получится: работающий регламент: правка в библиотеке доходит до интерфейса предсказуемым путём, а исключения видны и посчитаны. Близкая по смыслу задача — зафиксировать обязательства по поддержке; её разбирает материал про обязательства SLA на поддержку приложения.

Маршрут согласования изменений

Скорость изменений в интерфейсе зависит от маршрута: сколько шагов проходит правка от заявки до выпуска и кто принимает решение на каждом шаге. Сами решения полезно фиксировать письменно — о порядке такой фиксации есть материал про контроль задач после встреч.

  1. Заявка на изменение. Автор описывает сценарий: что пользователь не может сделать сейчас.
  2. Проверка существующих компонентов. Владелец библиотеки смотрит, закрывается ли сценарий тем, что уже описано: шаг отсекает дубли, из которых вырастают расхождения.
  3. Решение о типе правки. Варианта четыре: значение токена, новое состояние существующего компонента, новый компонент, разовое исключение вне системы.
  4. Правка в библиотеке макетов. Дизайнер вносит изменение и описывает затронутые состояния.
  5. Версия библиотеки. Изменение попадает в выпуск с перечнем правок — команды видят, что поменялось.
  6. Перенос в код. Разработчики сайта и приложения обновляют библиотеки у себя.
  7. Проверка перед выпуском. Тестировщики проходят затронутые экраны в двух средах, включая ошибки и работу с клавиатурой.

Кто принимает решение

  • Дизайнер — владелец библиотеки макетов. Состав компонентов, имена токенов, описание состояний.
  • Разработчик — владелец библиотеки в коде. Значения в коде, реализация компонентов, версии пакета.
  • Руководитель направления или владелец продукта. Продуктовое решение: нужен ли новый тип экрана и когда изменение выходит.

Что измерять

  • Время от заявки на изменение до выпуска в двух средах.
  • Число расхождений между сайтом и приложением, найденных при проверке.
  • Долю новых экранов, сделанных на существующих компонентах без новых значений.
  • Число действующих исключений вне системы.

Показатели считаются вручную и не требуют отдельных инструментов. Если нужна связка с поведением пользователей, что именно фиксировать в продукте разобрано в материале про продуктовую аналитику приложения.

Итог: дизайн-система на одной странице

  • Система состоит из трёх слоёв: токены, компоненты с состояниями, правила применения.
  • Общими для сайта и приложения делают токены и смысл компонентов, раздельными — раскладку и навигацию.
  • Состояния ошибок и пустых экранов описывают наравне с обычным видом: без них интерфейсы расходятся.
  • Требования доступности закладывают в токены значениями, которые проверяются измерением.
  • Скорость изменений задаёт маршрут согласования с названными владельцами библиотеки.

Для продукта, который живёт на сайте и в приложении одновременно, дизайн-система — оптимальный способ держать интерфейсы согласованными: правка проходит один раз и доходит до обеих сред предсказуемым путём.

Что делать дальше

Начните с инвентаризации: соберите фактические значения и расхождения по двум средам — этот документ сразу показывает объём работы. Если интерфейс уже работает и вопрос в потерях на пути к оплате, посмотрите сценарии UX-аудита корзины. Если впереди новый продукт, начните с требований — их состав разобран в материале про техническое задание на e-commerce-приложение, а оценку эффекта — в материале про окупаемость мобильного приложения.

Частые вопросы

Чем дизайн-система отличается от UI-кита?

UI-кит — набор элементов и экранов в редакторе макетов для дизайнера. Дизайн-система добавляет к нему токены, на которые ссылаются и макет, и код, описание всех состояний компонента, правила применения и порядок внесения правок. Разница видна при изменении: в UI-ките значение переносят в каждый макет и в каждую кодовую базу руками, в системе правка идёт в одном месте и дальше по версии библиотеки.

Какие токены нужны в дизайн-системе в первую очередь?

Минимум закрывает пять групп: цвета (текст, фон, границы, статусы), типографика, отступы и шаг сетки, радиусы и тени, длительности анимации. Этого достаточно для каталога, карточки товара, корзины и оплаты. Токены делят на два слоя: базовый хранит конкретное значение, семантический описывает смысл — например, цвет основного действия. Экраны ссылаются на семантический слой, поэтому смена палитры не требует правки каждого макета.

Сколько состояний описывать у компонента интерфейса?

Для интерактивного компонента описывают семь состояний: обычное, наведение, нажатие, фокус с клавиатуры, отключённое, загрузка и ошибка. Компонентам с данными добавляют пустое состояние: пустая корзина, поиск без результатов, пустое избранное. Пропущенные состояния — основной источник расхождений: разработчик придумывает их сам, и в двух средах они получаются разными. Проверка занимает минуту: отправьте форму без данных, затем при обрыве связи, затем пройдите её с клавиатуры.

Как сделать единый дизайн для сайта и мобильного приложения?

Общими делают токены и смысл компонентов, раздельными — раскладку и навигацию. Цвет основного действия, шрифтовая шкала, шаг отступов и формулировки ошибок совпадают в двух средах. Навигация и поведение при вводе описываются отдельно: на сайте работают меню и курсор, в приложении — нижняя панель вкладок, жесты и экранная клавиатура, которая закрывает часть экрана. Перенос экранов один в один даёт интерфейс, неудобный в обеих средах.

Какие требования доступности проверяют в интерфейсе?

Проверяемый минимум описан в WCAG 2.2: контраст обычного текста от 4,5:1, крупного — от 3:1, контраст границ полей и значимых иконок — от 3:1, размер цели нажатия не менее 24×24 CSS-пиксела, видимый и не перекрытый фокус, сообщение об ошибке словами, а не только цветом рамки. Руководства платформ задают цель нажатия крупнее: 44×44 pt для iOS и 48×48 dp для Android.

Кто отвечает за дизайн-систему в команде?

У системы два владельца. Дизайнер отвечает за библиотеку макетов: состав компонентов, имена токенов, описание состояний. Разработчик отвечает за библиотеки в коде сайта и приложения: значения токенов, реализацию компонентов, версии пакета. Продуктовое решение — нужен ли новый тип экрана — принимает руководитель направления. Без названных ролей правки расходятся: каждая команда дорабатывает интерфейс у себя, и библиотека перестаёт описывать то, что видит покупатель.

Как согласовать изменение интерфейса между дизайнером и разработчиком?

Маршрут состоит из семи шагов: заявка с описанием сценария, проверка, закрывается ли сценарий существующим компонентом, решение о типе правки (токен, новое состояние, новый компонент или разовое исключение), правка в библиотеке макетов, версия библиотеки с перечнем изменений, перенос в код сайта и приложения, проверка расхождений перед выпуском. Ключевой шаг — проверка существующих компонентов: он отсекает дубли, из которых и вырастают расхождения.

Источники

  • Web Content Accessibility Guidelines (WCAG) 2.2, W3C — критерии 1.4.3, 1.4.11, 2.4.7, 2.4.11, 2.5.8, 3.3.1, 3.3.3. Проверено 28 октября 2026 года.
  • Understanding SC 2.5.8: Target Size (Minimum), W3C WAI — пояснение к требованию 24×24 CSS-пиксела. Проверено 28 октября 2026 года.
  • Design Tokens Format Module, Design Tokens Community Group — черновик спецификации формата токенов. Проверено 28 октября 2026 года.
  • Apple Human Interface Guidelines — раздел о целях нажатия и безопасных зонах. Проверено 28 октября 2026 года.
  • Material Design 3, Google — разделы о доступности и размерах целей нажатия. Проверено 28 октября 2026 года.

Обсудить задачу

Если интерфейсы сайта и приложения уже расходятся и нужен внешний взгляд на объём работ — обсудите задачу с нашей командой: разберём текущие экраны, состав будущей библиотеки и маршрут согласования правок под вашу команду.

ДАВАЙТЕ ОБСУДИМ
ВАШ ПРОЕКТ

Мобильное приложение