Собираете ли вы формы из дизайн-системы или верстаете кастомно
Что проверяют
Есть ли у вас позиция по цене кастома. Формы это место, где самодельный компонент кажется быстрее, а потом обрастает доступностью, валидацией, автозаполнением и правильной клавиатурой на телефоне. Хотят услышать критерий выбора, а не «зависит от задачи».
Как отвечать
Позиция по умолчанию: берём компонент дизайн-системы, кастом пишем тогда, когда нужного поведения в ней нет. Дальше разложите форму на слои, они независимы:
- разметка и семантика: настоящий
<form>, подпись связана с полем, отправка по Enter, осмысленныеnameи типы полей; - состояние и валидация: единая схема, а не проверки внутри компонента, ошибки по потере фокуса и на отправке;
- представление: поле дизайн-системы, обёрнутое в свой адаптер, чтобы форма не зависела от его пропсов напрямую.
Когда компонента нет, честный путь не «сверстаю свой», а «дополню систему»: заводим компонент по её правилам, согласуем с дизайнером, отдаём обратно в библиотеку. Разовый кастом оправдан для действительно уникального узла: редактор, конструктор, поле с картой.
Хорошо звучит и обратная сторона: дизайн-система тормозит, когда макет требует того, чего в ней нет, и тогда полезнее договориться о правке макета, чем форкать компонент.
Где спотыкаются
Собирают поле ввода из div с обработчиками. Теряются автозаполнение, менеджеры паролей, подходящая клавиатура на мобильном и озвучка ошибки экранным диктором.
Второе: форкают компонент дизайн-системы ради одного отступа. Форк не получает обновлений, и через полгода в продукте два визуально разных поля.
Третье: приносят на интервью цифры вроде «ускорили разработку на треть». Проверить их нельзя, следующий вопрос будет про методику замера, а её нет.