pimenov.ai

shadcn выпустил готовые компоненты для чат-интерфейсов

shadcn выпустил набор компонентов для чат-интерфейсов: стриминг, умная прокрутка через MessageScroller и headless-пакет под Radix и Base UI.

ИнструментыОбзор

shadcn выпустил набор готовых компонентов для чат-интерфейсов. Если вы хоть раз собирали свой чат с ИИ, то знаете, сколько там скрытой возни — и вот её наконец решили закрыть.

Что внутри

Это слой самого диалога: стриминг ответов, прокрутка, сообщения, бабблы, вложения, маркеры. Всё то, из чего состоит любой нормальный чат, только уже продумано за вас.

Главный герой релиза — MessageScroller. Он берёт на себя именно те вещи, которые проще всего сделать криво:

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

Компонент отвечает за поведение, а данные, транспорт и хранение вы подключаете свои.

Notion image

Почему это удобно

Любой, кто делал чат, помнит, как мучительно ведёт себя прокрутка. Лента дёргается во время стриминга, теряет позицию при загрузке старых сообщений, скачет при переключении тредов. shadcn вынес эту логику в отдельные примитивы, чтобы каждый раз не изобретать её заново.

Notion image

Отдельно вышел headless-пакет message-scroller — без стилей, со своей вёрсткой. Есть версии под Radix и Base UI. В довесок две мелочи, которые добавляют ощущение качества: плавное затухание прокрутки (scroll-fade) и мерцание загрузки (shimmer).

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

Посмотреть changelog и примеры можно в документации shadcn.

По теме

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

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov