
Язык 🇷🇺 Русский
Документация
Начало работы
Использование
Конфигурация
Добавьте комментарии в ваше приложение SolidJS
Это официальная библиотека SolidJS для FastComments.
Встраивайте виджеты для живых комментариев, чата и отзывов в ваше приложение на SolidJS.
Репозиторий
AI‑агенты программирования 
Дайте вашему код‑агенту контекст FastComments, который ему нужен — виджеты, конфигурацию, Secure SSO, REST API и SDK:
npx skills add fastcomments/skills
Работает с Claude Code, Codex, Cursor, Copilot, Gemini и любым другим агентом, поддерживаемым skills CLI.
Онлайн‑демо 
Попробуйте каждый виджет вживую по адресу https://fastcomments.com/commenting-system-for-solidjs/.
Использование 
import { FastCommentsCommentWidget } from 'fastcomments-solidjs';
export default function App() {
return <FastCommentsCommentWidget tenantId="demo" urlId="some-page-id" />;
}
Реагирование на изменения конфигурации (императивный обработчик) 
Solid не отслеживает автоматически глубокие изменения произвольных объектов, поэтому
изменения конфигурации после первого рендера нужно передавать явно. Каждый виджет
принимает apiRef, который возвращает дескриптор; вызывайте handle.update(partial) из
createEffect для обеспечения реактивности:
import { createEffect, createSignal } from 'solid-js';
import { FastCommentsCommentWidget, type FastCommentsCommentWidgetHandle } from 'fastcomments-solidjs';
export default function Paginated() {
const [page, setPage] = createSignal(0);
let handle: FastCommentsCommentWidgetHandle | undefined;
createEffect(() => handle?.update({ urlId: `product-${page()}` }));
return (
<>
<button onClick={() => setPage(page() + 1)}>next</button>
<FastCommentsCommentWidget
apiRef={(h) => (handle = h)}
tenantId="demo"
urlId={`product-${page()}`}
/>
</>
);
}
update() безопасно вызывать в любой момент:
- До загрузки скрипта: частичная конфигурация сохраняется и применяется при инициализации.
- Во время асинхронной инициализации (reviews-summary, user-activity-feed): частичная конфигурация ставится в очередь и применяется, когда колбэк завершится.
- После инициализации: вызов передаётся напрямую методу
.update()живого виджета.
Императивный API дескриптора
interface WidgetHandle<Config> {
getInstance: () => WidgetInstance | null; // последний живой экземпляр (или null до монтирования)
onInstance: (cb: (instance: WidgetInstance) => void) => void; // срабатывает один раз, когда экземпляр готов
update: (partial: Partial<Config>) => void; // объединение и отправка конфигурации
}
Используйте getInstance() для императивных действий, не покрытых .update(), например openProfile:
const openProfile = () =>
(handle?.getInstance() as { openProfile?: (o: { userId: string }) => void } | null)
?.openProfile?.({ userId: 'demo' });
Компоненты 
Каждый виджет из fastcomments-react доступен под тем же именем:
| Компонент | Тип handle | Загружаемый виджет |
|---|---|---|
FastCommentsCommentWidget | FastCommentsCommentWidgetHandle | Флагманский виджет живых комментариев |
FastCommentsCommentCountWidget | FastCommentsCommentCountWidgetHandle | Инлайн-бейдж с количеством комментариев |
FastCommentsLiveChatWidget | FastCommentsLiveChatWidgetHandle | Потоковый виджет живого чата |
FastCommentsCollabChatWidget | FastCommentsCollabChatWidgetHandle | Совместный чат, привязанный к тексту |
FastCommentsImageChatWidget | FastCommentsImageChatWidgetHandle | Комментарии по регионам изображения |
FastCommentsRecentCommentsWidget | FastCommentsRecentCommentsWidgetHandle | Лента последних комментариев |
FastCommentsRecentDiscussionsWidget | FastCommentsRecentDiscussionsWidgetHandle | Лента последних обсуждений |
FastCommentsReviewsSummaryWidget | FastCommentsReviewsSummaryWidgetHandle | Сводка по звездному рейтингу |
FastCommentsTopPagesWidget | FastCommentsTopPagesWidgetHandle | Рейтинг страниц по количеству комментариев |
FastCommentsUserActivityFeedWidget | FastCommentsUserActivityFeedWidgetHandle | Хронология активности пользователя |
Виджеты, которые монтируются в существующий элемент
FastCommentsCollabChatWidget и FastCommentsImageChatWidget монтируются в элемент, переданный вызывающим. Передайте accessor targetRef, который возвращает элемент после монтирования:
import { FastCommentsImageChatWidget } from 'fastcomments-solidjs';
export default function ImageChat() {
let img: HTMLImageElement | undefined;
return (
<>
<img ref={img} src="/screenshot.png" alt="" />
<FastCommentsImageChatWidget
tenantId="demo"
urlId="my-image"
targetRef={() => img}
/>
</>
);
}
Регионы
Укажите region="eu", чтобы маршрутизировать трафик виджета через кластер ЕС.
Нужна помощь?
Если вы столкнулись с проблемами или у вас есть вопросы по библиотеке SolidJS, пожалуйста:
Как внести вклад
Вклады приветствуются! Пожалуйста, посетите репозиторий на GitHub для получения руководства по внесению вклада.