← Ко всем записям

Миграция UI

С Hanko Elements на UI8Kit: миграция один-к-одному

12 мин

Сторонний web-компонент входа замещён собственным бандлом — тот же UX, та же i18n, та же тёмная тема, отдаётся с origin IdP без зависимости от CDN.

В PoC изначально использовался <hanko-auth> из стороннего бандла. Он работал, но привязывал страницу входа к ассетам, тянущимся с домена, который мы не контролируем, и превращал тематизацию в обходной путь, а не в фичу. Мы перенесли всю поверхность на UI8Kit один-к-одному.

Зачем мигрировать

  • Вход — security-critical страница. Меньше origin, меньше скриптов, меньше сторонних участников.
  • Согласованность UX. Страницы AuthKit теперь делят те же design tokens, что и остальной UI8Kit.
  • Гигиена сборки. Один бандл ui8kit.js, отдающийся из /static/js, версионируется вместе с IdP.

Что сохранили

  • Флоу email + passcode, идентичный предыдущему UI.
  • WebAuthn / passkey — через тот же контракт бэкенда.
  • Встроенная i18n (английский, русский).
  • Переключатель тёмной темы и дефолты с уважением к reduced-motion.

Что поменялось под капотом

  • Браузерное SDK живёт в authkit-ts; Hanko-специфичная привязка — тонкий адаптер.
  • AuthKit (Go + templ) рендерит страницу и указывает браузеру SDKScript из FlowConfig — сама страница не импортирует Hanko.
  • Статика отдаётся через StaticFS(); ни один ассет не тянется с CDN.

Цена миграции

Одна человеко-неделя до feature parity, потом ещё неделя на полировку. Главный выигрыш не виден глазу: страница входа теперь — скучный HTML с одним локальным бандлом. Именно это и нужно security-critical поверхности.


Логотип Auth Fly

Auth Fly

Открытый конструктор аутентификации

Об Auth Fly