В 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 поверхности.