← Cloudflare Realtime / realtime / realtimekit / release-notes
Web Core SDK
2026-08-24
Улучшения
- Сгенерированная документация API теперь корректно определяет имена классов, что повышает точность подсказок типов для пользователей TypeScript.
- Запуск записи, которая уже выполняется, теперь возвращает код ошибки
1005вместо общего кода ошибки1000. Если вашonErrorколбэк обрабатывает код ошибки1000для этого случая, обновите его, чтобы обрабатывать1005.
Исправления
- Исправлена ошибка транспиляции Babel, которая могла возникать при использовании сборок ES2015, содержащих
RequestError. - Исправлено восстановление сессии после тайм-аутов SFU. Теперь участники могут продолжать слышать и видеть остальных после кратковременного тайм-аута API SFU.
- Исправлено пакетное создание media consumers: теперь поддерживаются сетки участников до 100 человек на странице вместо прежних 24.
2026-07-17
Исправления
- Исправлены сборки ES5, содержащие
VERSION_PLACEHOLDERв бандле вместо фактической версии SDK. - Исправлен сбой инициализации SDK при неудачной первой попытке сокет-соединения, из-за которого также не создавалось хранилище плагинов. Теперь SDK повторяет попытку создания хранилища в зависимости от состояния сокет-соединения.
2026-06-18
Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 2.0.0 или более поздней версии.
Это мажорный релиз с критическими изменениями. Несколько устаревших API были удалены, а API плагинов полностью переработаны. Прежде чем обновляться, внимательно ознакомьтесь с руководством по миграции ниже.
API плагинов: полный редизайн
Плагины больше не загружаются с сервера автоматически. Теперь конфигурации плагинов задаются при инициализации SDK через defaults.plugins.
До (v1.x):
// plugins were loaded via API in SDK internally
const meeting = await RealtimeKitClient.init({
authToken,
});
// Server-hosted plugins were auto-populated
const plugin = meeting.plugins.all.get(pluginId);
// Plugin rendered in an iframe managed by the SDK
plugin.addPluginView(iframeElement, 'plugin-main');
// Permissions checked via meeting.self.permissions.plugins.canStart / canClose
После (v2.0):
Компонент плагина представляет собой любой HTMLElement. Можно использовать пользовательский элемент, компонент фреймворка, смонтированный в контейнер, или iframe. В примере ниже в качестве плагина внедрен совместный текстовый редактор:
const editor = document.createElement('iframe');
editor.src = 'https://rustpad.io/#WKLJaD';
editor.style.width = '100%';
editor.style.height = '100%';
editor.style.border = 'none';
const meeting = await RealtimeKitClient.init({
authToken,
defaults: {
plugins: [
{
id: 'collaborative-editor', // SDK prefixes this with {meetingId}: to create the namespaced plugin.id
name: 'Collaborative Editor',
icon: 'https://example.com/editor.png',
permissions: {
canActivate: true,
canDeactivate: true,
},
component: editor,
},
],
},
});
// Plugin is registered and available
const plugin = meeting.plugins.all.get(pluginId);
// Activate — state is synced across all participants
await plugin.activate();
Полное руководство по созданию собственных плагинов см. в Создание собственных плагинов. Если вам нужно записывать содержимое плагина, вам нужно создать собственное приложение для записи.
Основные изменения:
- Новый экспорт типов:
ClientPluginConfig,ClientPluginPermissions. - Плагин
idтеперь работает в отдельном пространстве имён: SDK добавляет префикс к указанному вамиidс{meetingId}:чтобы создать внутреннийpluginId. - Состояние активации и деактивации плагина теперь синхронизируется через коллаборативное хранилище (
__rtk_plugins__) вместо отдельных socket-сообщений. - Теперь у плагинов есть
componentсвойство (любоеHTMLElement) вместо рендеринга на основе iframe черезaddPluginView. - Разрешения для отдельных плагинов (
plugin.permissions.canActivate/plugin.permissions.canDeactivate) заменяют старый глобальныйmeeting.self.permissions.plugins.canStart/meeting.self.permissions.plugins.canClose.
Удалены API плагинов:
plugin.addPluginView(iframe, viewId), передайтеHTMLElementкакcomponentвClientPluginConfigвзамен.plugin.removePluginView(viewId), обрабатывается автоматически UI Kit.plugin.enable(), используйтеplugin.activate().plugin.disable(), используйтеplugin.deactivate().plugin.sendIframeEvent(), удалено. Взаимодействуйте напрямую со своим компонентом.plugin.baseURL, удалено. Плагины больше не размещаются на сервере.plugin.picture, используйтеplugin.icon.plugin.description,plugin.organizationId,plugin.tags,plugin.type,plugin.staggered,plugin.private,plugin.published,plugin.createdAt,plugin.updatedAt, удалено. Больше не применяется.plugin.config(PluginConfig): удален. Понятие манифеста плагина отсутствует.meeting.self.permissions.plugins.canStart, используйтеplugin.permissions.canActivate.meeting.self.permissions.plugins.canClose, используйтеplugin.permissions.canDeactivate.modules.devTools.plugins(локальная конфигурация плагина для разработки): используйтеdefaults.pluginsсcomponentуказывающий на ваш локальный элемент.
Удалены устаревшие API
Клиент:
meeting.joinRoom(), используйтеmeeting.join().meeting.leaveRoom(), используйтеmeeting.leave().
Чат:
meeting.chat.getMessagesByUser(userId), используйтеmeeting.chat.fetchPublicMessages()с соответствующими фильтрами.meeting.chat.getMessagesByType(type), используйтеmeeting.chat.fetchPublicMessages()с соответствующими фильтрами.meeting.chat.getMessages(timestamp, size, reversed), используйтеmeeting.chat.fetchPublicMessages()илиmeeting.chat.fetchPrivateMessages().meeting.chat.searchMessages(query, filters), используйтеmeeting.chat.fetchPublicMessages()илиmeeting.chat.fetchPrivateMessages().meeting.chat.pinned(getter): используйтеmeeting.chat.fetchPinnedMessages().
Разрешения (meeting.self.permissions):
permissions.produceVideo, используйтеpermissions.canProduceVideo.permissions.produceAudio, используйтеpermissions.canProduceAudio.permissions.produceScreenshare, используйтеpermissions.canProduceScreenshare.permissions.waitingRoomType, используйтеpermissions.waitingRoomBehaviour.permissions.canChangeParticipantRole, используйтеpermissions.canChangeParticipantPermissions.permissions.canChangeTheme, удалено (всегда возвращалоfalse).permissions.canPresent, проверьте отдельныеcanProduceAudio,canProduceVideo,canProduceScreenshare.permissions.requestProduce, проверьте отдельные разрешения на доступ к медиаустройствам дляCAN_REQUESTзначения.permissions.acceptPresentRequests, используйтеpermissions.acceptStageRequests.permissions.maxScreenShareCount, используйтеmeeting.self.config.maxScreenShareCount.PermissionPreset.fromResponse(), используйтеPermissionPreset.init().PermissionPreset.default(), используйтеPermissionPreset.init().
Участники:
meeting.participants.disableAudio(participantId), используйтеmeeting.participants.joined.get(participantId).disableAudio().meeting.participants.disableVideo(participantId), используйтеmeeting.participants.joined.get(participantId).disableVideo().meeting.participants.kick(participantId), вызовите kick напрямую для этого участника.participant.clientSpecificId, используйтеparticipant.customParticipantId.
Connected Meetings:
meeting.connectedMeetings.supportsConnectedMeetings, удалено. Теперь проверки разрешений выполняются детально черезmeeting.self.permissions.connectedMeetings.
Улучшения
- Более быстрое переподключение: при разрывах только сокета, когда транспорты WebRTC остаются исправными, теперь пропускается полная пересборка транспорта. Producers регистрируются заново, а существующие Consumers перепривязываются, что значительно сокращает время переподключения.
- Участники остаются видимыми при переподключении: плитки участников не исчезают и не появляются заново во время кратковременного сбоя сокета, а остаются в сетке, обеспечивая бесперебойную работу.
- Исправление двойного звука: устранена проблема, из-за которой другие участники могли слышать двойной звук от переподключившегося участника, вызванная тем, что устаревшие объекты producer не удалялись вовремя.
- Устойчивость переподключения Socket: теперь Socket поддерживает до 50 попыток переподключения с экспоненциальной задержкой и джиттером (ранее 10), что обеспечивает до четырёх минут повторных попыток при пропадании интернета.
- Улучшения Store:
StoreManagerтеперь поддерживаетrefresh(name)чтобы повторно получить данные хранилища с сервера, а также зарезервированные имена хранилищ (__rtk_plugins__) защищены от создания пользователем.
Исправления
- Исправлена ошибка, из-за которой сокет не переподключался при разрыве соединения дольше 30 секунд.
2026-05-28
Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.2.0 или более поздней версии.
Возможности
- Добавлен отдельный код ошибки
0014для сбоев медиасоединения (WebRTC) при присоединении к комнате, что упрощает разграничение сбоев медиа и сбоев сокета или сигнализации.
Улучшения
- Сбои инициализации и подключения из
Client.init()иmeeting.join()теперь показывают конкретные коды ошибок и понятные сообщения вместо общих или вложенных ошибок. - Логи телеметрии теперь сжимаются с помощью gzip, если браузер поддерживает
CompressionStreamAPI, обеспечивая коэффициент сжатия примерно 10:1. Старые браузеры и React Native используют несжатый JSON с меньшим размером пакетов.
Исправления
- Исправлена ошибка в регулярном выражении, из-за которой флаг видеомидлвара Safari удалялся некорректно, что могло нарушать обработку видео в Safari.
- Исправлена проблема, из-за которой
ClientErrorобъекты вкладывались друг в друга при повторных попытках SDK выполнить неудавшиеся запросы API. Это приводило к вложенным сообщениям об ошибках, дублированиюonErrorколбэков и избыточныхwindowсобытий об ошибках.
Удалённые API
- Удалена сторонняя служба флагов.
meeting.__internals__.featuresтеперь считается устаревшим и будет удалён в одном из будущих релизов.
2026-04-20
Совместимость: Лучше всего работает с RealtimeKit Android Core 2.0.0+ и RealtimeKit iOS Core 2.0.0+.
Возможности
- Добавлено
meeting.__internals__.authTokenчтобы предоставлять токен аутентификации, что улучшает интеграцию между Web Core и UI Kit для будущих функций и улучшений.
Исправления
- Проактивно исправлена ошибка, из-за которой участники с включённым simulcast не могли включить камеру или микрофон из-за сбоев SDP в браузере Chrome версии 148+.
Улучшения
- SDK теперь использует
*.realtime.cloudflare.comбазовый URI вместо устаревшегоdyte.ioбазовый URI. - Доработана обработка ошибок для корректного перехвата и отображения кодов ошибок при сбоях инициализации SDK, сбоях подключения к комнате и других ошибках.
2026-03-31
Возможности
- Поддержка simulcast теперь доступна всем клиентам RealtimeKit. Настройте её для каждого участника в Preset через RealtimeKit Dashboard, Preset API с помощью
config.media.video.simulcastполе или пока инициализация SDK. - Добавлена поддержка видео 4K UHD в медиапродукции (настраивается в Preset и API). Если камера не поддерживает 4K, используется максимальное доступное разрешение.
2026-03-10
Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.1.1 или более поздней версии.
Улучшения
- Добавлены ограничения на количество попыток при сбоях ICE-соединения, чтобы избежать бесконечных попыток подключения и повысить надежность.
- Улучшена обработка ошибок при подключении к комнате: сообщения об ошибках стали более подробными и информативными.
- Ошибки подключения к комнате теперь стабильно возникают при блокировке сетевого соединения файрволами или при недоступности TURN-серверов.
Исправления
- Исправлена ошибка в Connected Meetings, из-за которой ID пиров не обновлялись при переключении между комнатами. Теперь ID пиров корректно назначаются для каждой сессии комнаты.
2026-01-30
Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.1.0 или более поздней версии.
Новые API
Добавлена поддержка пагинации чата с помощью следующих методов:
meeting.chat.fetchPinnedMessages- Получение закрепленных сообщений с сервера.meeting.chat.fetchPublicMessages- Получение публичных сообщений с сервера.meeting.chat.fetchPrivateMessages- Получение личных сообщений с сервера.
Улучшения
- Добавлены комментарии JSDoc для всех публичных методов и классов, что улучшает подсказки для разработчиков.
- Операции с сообщениями чата (редактирование, удаление, закрепление) теперь доступны всем клиентам RealtimeKit без дополнительной настройки.
pinMessageиunpinMessageсобытия наmeeting.chatтеперь генерируются надежно.- Закрепление сообщений (
meeting.chat.pinиmeeting.chat.unpin) теперь доступен всем участникам.
Удалённые API
Удалены нерабочие API канала чата для упрощения RealtimeKit SDK. Чат встречи (meeting.chat) продолжает работать в полном объёме.
- Удалено
meeting.self.permissions.chatChannel. - Удалено
meeting.self.permissions.chatMessage. Используйтеmeeting.self.permissions.chatPublicиmeeting.self.permissions.chatPrivateвзамен. - Удалено
meeting.chat.channels. - Удалено
meeting.chat.sendMessageToChannel. - Удалено
meeting.chat.markLastReadMessage. - Удалены события:
channelMessageUpdate,channelCreate, а такжеchannelUpdateотmeeting.chat.
Изменения API
- Следующие методы больше не принимают третий необязательный
channelIdпараметр:meeting.chat.editTextMessage(messageId, message)meeting.chat.editImageMessage(messageId, imageFile)meeting.chat.editFileMessage(messageId, file)meeting.chat.editMessage(messageId, messagePayload)meeting.chat.deleteMessage(messageId)
Устаревшие функции
Следующие методы считаются устаревшими из-за ограничений масштабируемости (не более 1,000 последних сообщений):
meeting.chat.messages- Загружает только недавние сообщения и новые сообщения, отправленные после присоединения.meeting.chat.getMessagesByUser- Используйте новые методы получения данных для масштабируемой загрузки сообщений.meeting.chat.getMessagesByType- Используйте новые методы получения данных для масштабируемой загрузки сообщений.meeting.chat.getMessages- Используйтеmeeting.chat.fetchPublicMessagesилиmeeting.chat.fetchPrivateMessagesвзамен.meeting.chat.pinned- Используйтеmeeting.chat.fetchPinnedMessagesвзамен.meeting.chat.searchMessages- Используйтеmeeting.chat.fetchPublicMessagesилиmeeting.chat.fetchPrivateMessagesвзамен.
Известные ограничения
- Закреплённые сообщения не поддерживаются в личных чатах.
2026-01-05
Исправления
Исправлена ошибка, из-за которой у пользователей, присоединившихся к встрече с выключенными звуком и видео и затем запустивших демонстрацию вкладки, при остановке демонстрации экрана повреждался SDP, что блокировало последующие действия, такие как включение звука или видео.
Возникла ошибка:
InvalidAccessError: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Failed to set remote audio description send parameters for m-section with mid='<N>'Исправлена ошибка, при которой ожидание
RealtimeKitClient.initMediaне вернул медиатрекиПример использования:
const media = await RealtimeKitClient.initMedia({ video : true, audio: true, }); const { videoTrack, audioTrack } = media;Исправлена ошибка, из-за которой неопределенная переменная вызывала
TypeError: Cannot read properties of undefined (reading 'getValue')при получении медиаданных из-за состояния гонки.
2025-12-17
Исправления
- Исправлена ошибка, из-за которой на устройствах Android не работало переключение между передней и задней камерами
- Исправлена логика выбора устройств для более эффективной приоритизации медиаустройств
- Добавлена поддержка PIP для Реакции
2025-11-18
Исправления
- Исправлена ошибка, из-за которой не выполнялся выбор медиаустройства по умолчанию.
- Исправлен бандл SDK: теперь он включает
browser.jsвместо ошибочной поставкиindex.iife.jsв версии 1.2.0.
Улучшения
- Теперь, если предпочитаемое устройство не задано, внешние медиаустройства получают приоритет над встроенными.
2025-10-30
Возможности
Добавлена поддержка настройки симулкаста через
initMeeting:initMeeting({ overrides: { simulcastConfig: { disable: false, encodings: [{ scaleResolutionDownBy: 2 }], }, }, });
Исправления
- Исправлена ошибка, из-за которой в отдельных крайних случаях видеопотоки удалённых участников не отображались во время пагинации сетки.
- Исправлена ошибка, из-за которой участники не могли переключить микрофон, если первый микрофон в списке не работал.
Критические изменения
- Поддержка устаревшего медиадвижка удалена. Если ваша организация была создана до 1 марта 2025 года и вы обновляетесь до этой версии SDK или более поздней, у вас могут возникнуть проблемы с записью. Обратитесь в поддержку, чтобы перейти на новый медиадвижок Cloudflare SFU и сохранить работоспособность записи.
2025-08-26
Исправления
- Исправлена ошибка, из-за которой событие смены спикера возникало, даже если активный спикер не менялся.
- Устранены последствия изменения поведения при переключении микрофона в последних версиях Google Chrome.
- Добавлено
deviceInfoлоги, чтобы улучшить возможности отладки для React Native. - Исправлена ошибка, из-за которой для одного и того же пира ставилось в очередь сразу несколько media consumers, что позволило оптимизировать использование ресурсов.
2025-08-14
Улучшения
- Внутренние изменения, упрощающие и ускоряющие отладку проблем с потреблением медиа.
2025-08-04
Исправления
- Улучшена поддержка React Native для
AudioActivityReporterс корректной дискретизацией звука. - Исправлена ошибка, из-за которой пользователи не могли создавать опросы.
- Исправлена ошибка, из-за которой выход из встречи занимал больше 20 секунд.
2025-07-17
Исправления
- Функция прямой трансляции теперь доступна всем бета-пользователям.
- Исправлена работа сцены в прямой трансляции: видео пиров участников не воспроизводилось у организаторов при их выходе на сцену.
- Исправлены проблемы с подключением и выходом зрителей на сцене Livestream.
2025-07-08
Исправления
- Исправлена ошибка, из-за которой пользователи, присоединившиеся без видео, не могли включить его во время встречи.
2025-07-02
Исправления
- Исправлен крайний случай в крупных встречах, когда уже присутствующие участники не могли слышать или видеть только что присоединившихся пользователей.
2025-06-30
Возможности
- Добавлены методы для переключения видимости плитки локального участника.
- Добавлена функциональность трансляции между связанными встречами (сессионными залами).
Новый API
Отправка сообщений между встречами:
meeting.participants.broadcastMessage("<message_type>", { message: "Hi" }, { meetingIds: ["<connected_meeting_id>"], });
Улучшения
- Уменьшено время отображения видео недавно подключившихся участников при массовом подключении.
- Добавлена поддержка нескольких встреч на одной странице в RealtimeKit Core SDK.
2025-06-17
Исправления
- Улучшена обработка ошибок при медиаоперациях.
- Исправлена ошибка, из-за которой активные участники со включенным звуком или видео не отображались в списке активных участников.
2025-05-29
Исправления
- Исправлены проблемы с первоначальной настройкой интеграции Cloudflare RealtimeKit.
- Исправлены проблемы с присоединением к встрече и медиаподключением.
- Улучшена обработка медиатреков.
2025-05-29
Возможности
- Первый релиз Cloudflare RealtimeKit с поддержкой групповых звонков, вебинаров, прямых трансляций, опросов и чата.