← Cloudflare Realtime / realtime / realtimekit / release-notes
Web Core SDK
2026-08-24
Vylepšení
- Vygenerovaná dokumentace API nyní správně identifikuje názvy tříd, což uživatelům TypeScriptu poskytuje přesnější návrhy typů.
- Spuštění nahrávání, které již probíhá, nyní vrátí chybový kód
1005místo obecného chybového kódu1000. Pokud vášonErrorcallback zpracovává chybový kód1000pro tento případ ji aktualizujte tak, aby zpracovávala1005.
Opravy
- Opravena chyba transpilace Babel, ke které mohlo dojít při použití buildů ES2015 obsahujících
RequestError. - Opravena obnova relace po timeoutu SFU. Účastníci nyní mohou po přechodném timeoutu SFU API dál slyšet a vidět ostatní.
- Opraveno dávkové vytváření mediálních konzumentů tak, aby podporovalo mřížky účastníků až se 100 účastníky na stránku, oproti dřívějším 24 na stránku.
2026-07-17
Opravy
- Opraveny buildy ES5 obsahující
VERSION_PLACEHOLDERv balíčku místo skutečné verze SDK. - Opraveno selhání inicializace SDK při neúspěšném prvním pokusu o připojení socketu, které také bránilo vytvoření úložiště pluginů. SDK nyní vytvoření úložiště opakuje podle stavu připojení socketu.
2026-06-18
Kompatibilita: Nejlépe funguje s RealtimeKit Web UI Kit 2.0.0 nebo novějším.
Jde o zásadní verzi s nekompatibilními změnami. Několik zastaralých API bylo odstraněno a API pro pluginy bylo zcela přepracováno. Před upgradem si pečlivě projděte průvodce migrací uvedený níže.
Plugin API: kompletní redesign
Pluginy se už automaticky nenačítají ze serveru. Konfigurace pluginů nyní zadáváte při inicializaci SDK prostřednictvím defaults.plugins.
Před (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
Po (v2.0):
Komponenta pluginu je jakýkoli HTMLElement. Můžete použít vlastní element, komponentu frameworku připojenou do kontejneru nebo iframe. Následující příklad vkládá kolaborativní textový editor jako plugin:
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();
Úplného průvodce vytvářením vlastních pluginů najdete v Vytváření vlastních pluginů. Pokud potřebujete nahrávat obsah pluginu, musíte sestavit vlastní aplikace pro nahrávání.
Klíčové změny:
- Nové exporty typů:
ClientPluginConfig,ClientPluginPermissions. - Plugin
idje nyní umístěna v jmenném prostoru: SDK přidá prefix k vámi zadanémuidhodnotou{meetingId}:a vytvořit tak internípluginId. - Stav aktivace a deaktivace pluginu se nyní synchronizuje prostřednictvím kolaborativního úložiště (
__rtk_plugins__) místo vyhrazených socket zpráv. - Pluginy nyní mají
componentvlastnost (jakákoliHTMLElement) místo vykreslování založeného na iframe pomocíaddPluginView. - Oprávnění pro jednotlivé pluginy (
plugin.permissions.canActivate/plugin.permissions.canDeactivate) nahrazují starou globálnímeeting.self.permissions.plugins.canStart/meeting.self.permissions.plugins.canClose.
Odstraněná API pluginů:
plugin.addPluginView(iframe, viewId), předejteHTMLElementjakocomponentvClientPluginConfigmísto toho.plugin.removePluginView(viewId), je řešeno automaticky pomocí UI Kit.plugin.enable(), použijteplugin.activate().plugin.disable(), použijteplugin.deactivate().plugin.sendIframeEvent(), odstraněno. Komunikujte přímo se svou komponentou.plugin.baseURL, odstraněno. Pluginy již nejsou hostovány na serveru.plugin.picture, použijteplugin.icon.plugin.description,plugin.organizationId,plugin.tags,plugin.type,plugin.staggered,plugin.private,plugin.published,plugin.createdAt,plugin.updatedAt, odstraněno. Již není relevantní.plugin.config(PluginConfig): odstraněno. Koncept manifestu pluginu neexistuje.meeting.self.permissions.plugins.canStart, použijteplugin.permissions.canActivate.meeting.self.permissions.plugins.canClose, použijteplugin.permissions.canDeactivate.modules.devTools.plugins(konfigurace pluginu pro lokální vývoj): použijtedefaults.pluginsscomponentodkazující na váš lokální element.
Odstraněna zastaralá API
Klient:
meeting.joinRoom(), použijtemeeting.join().meeting.leaveRoom(), použijtemeeting.leave().
Chat:
meeting.chat.getMessagesByUser(userId), použijtemeeting.chat.fetchPublicMessages()s příslušnými filtry.meeting.chat.getMessagesByType(type), použijtemeeting.chat.fetchPublicMessages()s příslušnými filtry.meeting.chat.getMessages(timestamp, size, reversed), použijtemeeting.chat.fetchPublicMessages()nebomeeting.chat.fetchPrivateMessages().meeting.chat.searchMessages(query, filters), použijtemeeting.chat.fetchPublicMessages()nebomeeting.chat.fetchPrivateMessages().meeting.chat.pinned(getter): použijtemeeting.chat.fetchPinnedMessages().
Oprávnění (meeting.self.permissions):
permissions.produceVideo, použijtepermissions.canProduceVideo.permissions.produceAudio, použijtepermissions.canProduceAudio.permissions.produceScreenshare, použijtepermissions.canProduceScreenshare.permissions.waitingRoomType, použijtepermissions.waitingRoomBehaviour.permissions.canChangeParticipantRole, použijtepermissions.canChangeParticipantPermissions.permissions.canChangeTheme, odstraněno (vždy vracelofalse).permissions.canPresent, zkontrolujte jednotlivácanProduceAudio,canProduceVideo,canProduceScreenshare.permissions.requestProduce, zkontrolujte jednotlivá oprávnění k médiím proCAN_REQUESThodnoty.permissions.acceptPresentRequests, použijtepermissions.acceptStageRequests.permissions.maxScreenShareCount, použijtemeeting.self.config.maxScreenShareCount.PermissionPreset.fromResponse(), použijtePermissionPreset.init().PermissionPreset.default(), použijtePermissionPreset.init().
Účastníci:
meeting.participants.disableAudio(participantId), použijtemeeting.participants.joined.get(participantId).disableAudio().meeting.participants.disableVideo(participantId), použijtemeeting.participants.joined.get(participantId).disableVideo().meeting.participants.kick(participantId), zavolejte kick přímo na účastníkovi.participant.clientSpecificId, použijteparticipant.customParticipantId.
Connected Meetings:
meeting.connectedMeetings.supportsConnectedMeetings, odstraněno. Kontroly oprávnění jsou nyní granulární prostřednictvímmeeting.self.permissions.connectedMeetings.
Vylepšení
- Rychlejší opětovné připojení: Při odpojení pouze socketu (kdy WebRTC transporty zůstávají funkční) se nyní přeskočí úplné nové nastavení transportu. Producenti se znovu zaregistrují a stávající konzumenti se přemapují, což výrazně zkracuje dobu opětovného připojení.
- Účastníci zůstávají viditelní i během opětovného připojování: dlaždice účastníků zůstanou v mřížce i při krátkém výpadku socketu, místo aby mizely a znovu se objevovaly, což zajišťuje plynulý zážitek.
- Oprava zdvojeného zvuku: Opravena chyba, při které mohli ostatní účastníci slyšet zdvojený zvuk od znovu připojeného účastníka, způsobená zastaralými producery, které nebyly vyčištěny.
- Odolnost opětovného připojení Socketu: Socket nyní podporuje až 50 pokusů o opětovné připojení s exponenciálním prodlužováním intervalu (exponential backoff) a jitterem (dříve 10), což poskytuje přibližně čtyři minuty pokrytí opakovanými pokusy v případě výpadku internetu.
- Vylepšení Store:
StoreManagernyní podporujerefresh(name)a znovu tak načíst data store ze serveru, a vyhrazené názvy store (__rtk_plugins__) jsou chráněny před vytvořením uživatelem.
Opravy
- Opraveno selhávání opětovného připojení socketu, pokud zůstal odpojený 30 sekund.
2026-05-28
Kompatibilita: Nejlépe funguje s RealtimeKit Web UI Kit 1.2.0 nebo novějším.
Funkce
- Přidán vyhrazený chybový kód
0014pro selhání mediálního (WebRTC) připojení při vstupu do místnosti, což usnadňuje rozlišení selhání médií od selhání soketu a signalizace.
Vylepšení
- Chyby inicializace a připojení z
Client.init()ameeting.join()nyní místo obecných nebo vrstvených chyb zobrazují konkrétní chybové kódy a popisné zprávy. - Protokoly telemetrie se nyní komprimují pomocí gzip, pokud to prohlížeč podporuje prostřednictvím
CompressionStreamAPI, čímž dosahuje kompresního poměru přibližně 10:1. Starší prohlížeče a React Native se vrací k nekomprimovanému JSON s menšími dávkami.
Opravy
- Opravena chyba založená na regulárním výrazu, kdy byl nesprávně odstraněn příznak middlewaru videa pro Safari, což mohlo narušit zpracování videa v Safari.
- Opraven problém, kdy
ClientErrorbyly vzájemně zabaleny do sebe, když SDK opakoval neúspěšné API požadavky. To způsobovalo vnořené chybové zprávy, duplicitníonErrorcallbacky a redundantníwindowchybové události.
Odstraněná API
- Odstraněna služba příznaků třetích stran.
meeting.__internals__.featuresje nyní zastaralá a bude odstraněna v některé z budoucích verzí.
2026-04-20
Kompatibilita: Nejlépe funguje s RealtimeKit Android Core 2.0.0+ a RealtimeKit iOS Core 2.0.0+.
Funkce
- Přidáno
meeting.__internals__.authTokena zpřístupnit tak autentizační token, což umožňuje lepší integraci mezi Web Core a UI Kit pro budoucí funkce a vylepšení.
Opravy
- Proaktivně opravena chyba, kdy účastníci se zapnutým simulcastem nemohli zapnout kameru nebo mikrofon kvůli selháním SDP v prohlížeči Chrome verze 148+.
Vylepšení
- SDK nyní používá
*.realtime.cloudflare.comzákladní URI interně místo staršíhodyte.iozákladní URI. - Přepracováno zpracování chyb tak, aby správně zachytávalo a zobrazovalo chybové kódy pro selhání inicializace SDK, selhání připojení k místnosti a další chyby.
2026-03-31
Funkce
- Podpora simulcastu je nyní dostupná všem klientům RealtimeKit. Nakonfigurujte ji pro jednotlivé účastníky v Preset pomocí dashboard RealtimeKit, Preset API pomocí
config.media.video.simulcastpole, nebo když inicializace SDK. - Přidána podpora videa ve 4K UHD při zpracování médií (lze nastavit v Presetu a API). Pokud kamera 4K nepodporuje, použije se maximální podporované rozlišení.
2026-03-10
Kompatibilita: Nejlépe funguje s RealtimeKit Web UI Kit 1.1.1 nebo novějším.
Vylepšení
- Zavedeny limity opakování pro selhání ICE připojení, které zabraňují nekonečným pokusům o připojení a zvyšují spolehlivost.
- Vylepšeno zpracování chyb při operacích připojení k místnosti, které nyní poskytuje podrobnější a srozumitelnější chybové zprávy.
- Chyby při připojování k místnosti se nyní vždy vyhazují konzistentně, když je síťové připojení blokováno firewallem nebo když jsou servery TURN nedostupné.
Opravy
- Opravena chyba v propojených schůzkách (Connected Meetings), kdy se ID peerů při přepínání mezi místnostmi neregenerovala. ID peerů se nyní správně přiřazují pro každou relaci místnosti.
2026-01-30
Kompatibilita: Nejlépe funguje s RealtimeKit Web UI Kit 1.1.0 nebo novějším.
Nová API
Přidána podpora stránkování chatu pomocí následujících metod:
meeting.chat.fetchPinnedMessages- Načte připnuté zprávy ze serveru.meeting.chat.fetchPublicMessages- Načte veřejné zprávy ze serveru.meeting.chat.fetchPrivateMessages- Načte soukromé zprávy ze serveru.
Vylepšení
- Přidány komentáře JSDoc ke všem veřejným metodám a třídám pro lepší nápovědu při vývoji.
- Operace se zprávami v chatu (úprava, mazání, připnutí) jsou nyní dostupné všem klientům RealtimeKit bez nutnosti dalšího nastavení.
pinMessageaunpinMessageudálosti nameeting.chatnyní spolehlivě emitují.- Připnutí zpráv (
meeting.chat.pinameeting.chat.unpin) je nyní dostupné všem účastníkům.
Odstraněná API
Odstraněna nefunkční API chatovacích kanálů za účelem zjednodušení RealtimeKit SDK. Chat schůzky (meeting.chat) zůstává plně funkční.
- Odstraněno
meeting.self.permissions.chatChannel. - Odstraněno
meeting.self.permissions.chatMessage. Použijtemeeting.self.permissions.chatPublicameeting.self.permissions.chatPrivatemísto toho. - Odstraněno
meeting.chat.channels. - Odstraněno
meeting.chat.sendMessageToChannel. - Odstraněno
meeting.chat.markLastReadMessage. - Odstraněné události:
channelMessageUpdate,channelCreate, achannelUpdatezmeeting.chat.
Změny API
- Následující metody již nepřijímají třetí volitelný
channelIdparametr:meeting.chat.editTextMessage(messageId, message)meeting.chat.editImageMessage(messageId, imageFile)meeting.chat.editFileMessage(messageId, file)meeting.chat.editMessage(messageId, messagePayload)meeting.chat.deleteMessage(messageId)
Zastaralé funkce
Následující metody jsou zastaralé kvůli omezením škálovatelnosti (omezeno na 1,000 nejnovějších zpráv):
meeting.chat.messages- Načítá pouze nedávné zprávy a nové zprávy po připojení.meeting.chat.getMessagesByUser- Použít nové metody načítání pro škálovatelné získávání zpráv.meeting.chat.getMessagesByType- Použít nové metody načítání pro škálovatelné získávání zpráv.meeting.chat.getMessages- Použítmeeting.chat.fetchPublicMessagesnebomeeting.chat.fetchPrivateMessagesmísto toho.meeting.chat.pinned- Použítmeeting.chat.fetchPinnedMessagesmísto toho.meeting.chat.searchMessages- Použítmeeting.chat.fetchPublicMessagesnebomeeting.chat.fetchPrivateMessagesmísto toho.
Známá omezení
- Připnuté zprávy nejsou u soukromých chatů podporovány.
2026-01-05
Opravy
Opravena chyba, kdy u uživatelů, kteří se připojili ke schůzce s vypnutým audiem i videem a poté zahájili sdílení obrazovky karty, došlo při zastavení sdílení obrazovky k poškození SDP, což bránilo dalším akcím, jako je zapnutí audia nebo videa.
Vyvolaná chyba:
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>'Opravena chyba, kdy čekání na
RealtimeKitClient.initMedianevrátil žádné mediální trackyPříklad použití:
const media = await RealtimeKitClient.initMedia({ video : true, audio: true, }); const { videoTrack, audioTrack } = media;Opravena chyba, kdy nedefinovaná proměnná způsobovala
TypeError: Cannot read properties of undefined (reading 'getValue')při načítání médií v důsledku souběhu (race condition).
2025-12-17
Opravy
- Opravena chyba, kdy na zařízeních Android nefungovalo přepínání mezi přední a zadní kamerou
- Opravena logika výběru zařízení pro efektivnější upřednostňování mediálních zařízení
- Přidána podpora PIP pro Reakce
2025-11-18
Opravy
- Vyřešen problém, který bránil výběru výchozího mediálního zařízení.
- Opraven balíček SDK tak, aby obsahoval
browser.jsmísto nesprávného odesíláníindex.iife.jsve verzi 1.2.0.
Vylepšení
- Externí mediální zařízení mají nyní přednost před interními zařízeními, pokud není nastaveno preferované zařízení.
2025-10-30
Funkce
Přidána podpora konfigurace simulcastu přes
initMeeting:initMeeting({ overrides: { simulcastConfig: { disable: false, encodings: [{ scaleResolutionDownBy: 2 }], }, }, });
Opravy
- Vyřešen problém, kdy v některých krajních případech nebyla vidět videa vzdálených účastníků při stránkování mřížky.
- Opravena chyba, která bránila účastníkům přepnout mikrofon, pokud první mikrofon v seznamu nefungoval.
Zásadní změny
- Podpora staršího media enginu byla odebrána. Pokud byla vaše organizace vytvořena před 1. březnem 2025 a přecházíte na tuto verzi SDK nebo novější, můžete narazit na problémy s nahráváním. Pro zajištění nepřerušené funkčnosti nahrávání kontaktujte podporu ohledně přechodu na nový media engine Cloudflare SFU.
2025-08-26
Opravy
- Opravena chyba, kdy se událost změny řečníka vyvolávala i v případě, že se aktivní řečník nezměnil.
- Vyřešena změna chování při přepínání mikrofonu v nedávných verzích Google Chrome.
- Přidáno
deviceInfoprotokoly za účelem zlepšení možností ladění pro React Native. - Opravena chyba, kdy se do fronty řadilo více mediálních konzumentů pro stejného peera, což zoptimalizovalo využití prostředků.
2025-08-14
Vylepšení
- Interní změny usnadňující a zrychlující ladění problémů se spotřebou médií.
2025-08-04
Opravy
- Vylepšena podpora React Native pro
AudioActivityReporterse správným vzorkováním zvuku. - Vyřešen problém, který bránil uživatelům vytvářet ankety.
- Opravena chyba, kdy opuštění schůzky trvalo déle než 20 sekund.
2025-07-17
Opravy
- Funkce Livestream je nyní dostupná všem beta uživatelům.
- Opravena funkčnost pódia u Livestreamu, kdy hostitelé po připojení účastníků na pódium nezobrazovali jejich video.
- Vyřešeny problémy s připojováním a odpojováním diváků v rámci Livestream stage.
2025-07-08
Opravy
- Opravena chyba, kdy si uživatelé nemohli zapnout video v průběhu schůzky, pokud se na začátku připojili bez videa.
2025-07-02
Opravy
- Opraven okrajový případ ve velkých schůzkách, kdy stávající účastníci neslyšeli ani neviděli nově připojené uživatele.
2025-06-30
Funkce
- Přidány metody pro přepínání viditelnosti dlaždice self tile.
- Přidána funkce vysílání napříč propojenými schůzkami (skupinové místnosti).
Nové API
Odesílání zpráv napříč schůzkami:
meeting.participants.broadcastMessage("<message_type>", { message: "Hi" }, { meetingIds: ["<connected_meeting_id>"], });
Vylepšení
- Zkrácena doba zobrazení videí nově připojených účastníků při hromadném připojování.
- Přidána podpora více schůzek na stejné stránce v RealtimeKit Core SDK.
2025-06-17
Opravy
- Vylepšeno zpracování chyb u mediálních operací.
- Opravena chyba, kdy se aktivní účastníci se zapnutým audiem nebo videem nezobrazovali v seznamu aktivních účastníků.
2025-05-29
Opravy
- Vyřešeny počáteční problémy s nastavením integrace Cloudflare RealtimeKit.
- Opraveny problémy s připojením ke schůzce a s mediální konektivitou.
- Vylepšeno zpracování mediálních tracků.
2025-05-29
Funkce
- První verze Cloudflare RealtimeKit s podporou skupinových hovorů, webinářů, živého vysílání, anket a chatu.