FastComments.com

Добавление комментариев в приложение React Native


Это официальный SDK для React Native от FastComments.

Получайте доступ к API FastComments непосредственно из вашего приложения на React Native.

Репозиторий

Посмотреть на GitHub


Установка Internal Link

npm

npm install fastcomments-react-native-sdk --save

Скриншоты Internal Link

Live threaded commenting with avatars, nested replies, votes, and the built-in rich-text composer, plus a dark theme and a live-chat preset (shown here rendered via react-native-web):

Живой комментарий
Живой комментарий, светлая тема
Тёмная тема
Живой комментарий, тёмная тема
Живой чат
Предустановка живого чата

Редактор форматированного текста

This library uses react-native-enriched for rich text editing, which provides a powerful WYSIWYG editing experience. The same editor powers iOS, Android, and the web (via react-native-web), so the composer behaves consistently across every platform with a single implementation.

react-native-enriched requires the React Native New Architecture (Fabric) on native (the default since RN 0.76, opt-in on RN 0.72-0.75), and a bundler that resolves package exports conditions. This SDK is developed and tested against RN 0.81 / React 19. The same editor also runs on web through react-native-web; the enriched editor's web build is still marked experimental upstream.

Виджеты

  • FastCommentsLiveCommenting - ветвление комментариев с голосами, ответами, пагинацией, упоминаниями, уведомлениями и живыми обновлениями.
  • FastCommentsLiveChat - предустановка чата на том же движке: хронологические сообщения с новыми внизу, редактор под списком, живая полоска заголовка (точка соединения + количество пользователей), бесконечная история, загружаемая прокруткой вверх, авто‑прокрутка к новым сообщениям, без голосов и ветвления ответов. Каждую предустановку можно переопределить через config.
  • FastCommentsFeed - социальная лента с редактором постов, медиа, реакциями, подписками и живыми баннерами новых постов.
<FastCommentsLiveChat config=\{{ tenantId: 'demo', urlId: 'my-room' }}/>

Темизация

The default look is generated from a set of semantic design tokens (FastCommentsTheme): colors, spacing, radius, font sizes, font weights, and avatar sizes. Pass partial token overrides (typed FastCommentsThemeOverrides) through the theme prop on any widget and the entire style tree restyles consistently:

<FastCommentsLiveCommenting config={config} theme=\{{ colors: { primary: '#FF5500' } }}/>

Dark mode is one token set away:

import { getDarkTheme } from 'fastcomments-react-native-sdk';

    <FastCommentsLiveCommenting config={config} theme={getDarkTheme()}/>

The styles prop still accepts a raw IFastCommentsStyles tree for surgical control. When theme and styles are both provided, the explicit styles win over the themed tree; when only styles is provided, it replaces the defaults entirely (the original behavior, so existing integrations and skins are unaffected). setupDarkModeSkin is deprecated in favor of the theme prop.

Параметры конфигурации

This library aims to support all configuration options defined in fastcomments-typescript, just like the web implementation.

On top of those, React Native adds a few SDK-specific options via FastCommentsRNConfig:

  • hideTopBar - скрыть полосу с залогиненным пользователем / колокольчиком уведомлений, отображаемую над редактором.
  • usePressToEdit - нажать и удерживать комментарий, чтобы открыть его меню.
  • disableDownVoting - скрыть кнопки отрицательного голоса.
  • renderCommentInline - отображать информацию о комментаторе внутри того же HTML‑блока, что и содержимое комментария.
  • renderLikesToRight - переместить область голосов/лайков вправо от комментария вместо снизу.
  • renderDateBelowComment - отображать дату под комментарием.
  • showLiveStatus - показывать полоску заголовка в стиле чата «Live» + количество пользователей над комментариями.
  • useInlineSubmitButton - отображать кнопку отправки как иконку внутри редактора.
  • countAboveToggle - при useShowCommentsToggle — сколько комментариев отображать над переключателем «Показать комментарии».
  • preserveFeedScrollPosition - FastCommentsFeed запоминает смещение прокрутки при размонтировании/монтировании (по умолчанию true).

Концепции FastComments

The main concepts to be aware of to get started are tenantId and urlId. tenantId is your FastComments.com account identifier. urlId is where comment threads will be tied to. This could be a page URL, or a product id, an article id, etc.

Локализация

All user-facing text in these widgets (button labels, placeholders, empty states, relative dates like "5 minutes ago", error messages, etc.) is server-driven. The components do not hard-code English strings; they render the translations FastComments serves for the requested locale.

To request a locale, set locale in your config:

const config = {
    tenantId: 'your-tenant-id',
    urlId: 'some-page',
    locale: 'de_de', // de_de, fr_fr, ja_jp, es_es, etc.
};

When no locale is set, FastComments serves the tenant's default language.

Editing the text: translations are managed in your FastComments dashboard, not in this SDK. To change wording, override the default copy, or add a language, edit the translations for your account in the dashboard - the change is picked up by the widgets automatically with no app release required. The SDK ships no English fallbacks, so any key you blank out in the dashboard renders empty; keep the keys populated for every locale you support.

Уведомления пользователей

FastComments supports notifications for many scenarios. Notifications are configurable, can be opted-out globally or at a notification/comment level, and supports page-level subscriptions so that users can subscribe to threads of a specific page or article.

For example, it is possible to use Secure SSO to authenticate the user and then periodically poll for unread notifications and push them to the user.

See the example AppNotificationSecureSSO for how to get and translate unread user notifications.

Браузер GIF

By default, no image or gif selection is enabled. See example/src/AppCommentingImageSelection.tsx for how to support image and gif uploads. There is a Gif Browser that anonymizes searches and images provided in this library, you simply have to use it.

Производительность

Please open a ticket with an example to reproduce, including device used, if you identify any performance problems. Performance is a first-class citizen of all FastComments libraries.

Нужна помощь?

Если вы столкнулись с проблемами или у вас есть вопросы по React Native SDK, пожалуйста:

Вклад

Вклады приветствуются! Пожалуйста, посетите репозиторий на GitHub для получения руководства по внесению вклада.