<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cloudflare changelogs | Realtime</title><description>Cloudflare changelogs for Realtime</description><link>https://docs.ahq.lat/changelog/</link><item><title>Realtime - Cloudflare&apos;s Realtime WebSocket adapter now auto-reconnects and buffers WebRTC media</title><link>https://docs.ahq.lat/changelog/post/2026-05-29-websocket-adapter-auto-reconnect/</link><guid isPermaLink="true">https://docs.ahq.lat/changelog/post/2026-05-29-websocket-adapter-auto-reconnect/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/&quot;&gt;Cloudflare Realtime SFU&lt;/a&gt; is a &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/calls-vs-sfus/&quot;&gt;WebRTC Selective Forwarding Unit that runs on Cloudflare&apos;s global network&lt;/a&gt;, so you can route live audio, video, and data between WebRTC clients around the world without managing SFU infrastructure or regions.&lt;/p&gt;
&lt;p&gt;When you use the &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/&quot;&gt;WebSocket adapter&lt;/a&gt; to stream WebRTC media to a WebSocket endpoint, the adapter now auto-reconnects and buffers audio and video after brief endpoint disconnects or restarts.&lt;/p&gt;
&lt;h4&gt;Streaming WebRTC media to WebSocket endpoints&lt;/h4&gt;
&lt;p&gt;Many teams also use Realtime SFU as the media layer for backend applications, such as transcription, recording, note-taking, and agentic media-processing services. These systems often need to consume live WebRTC audio or video from the SFU in backend infrastructure, including &lt;a href=&quot;https://docs.ahq.lat/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;, &lt;a href=&quot;https://docs.ahq.lat/workers/&quot;&gt;Workers&lt;/a&gt;, &lt;a href=&quot;https://docs.ahq.lat/containers/&quot;&gt;Containers&lt;/a&gt;, or external services, without running a WebRTC client themselves.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/&quot;&gt;WebSocket adapter&lt;/a&gt; bridges that gap by streaming WebRTC media from the SFU to a standard WebSocket endpoint as application-consumable payloads: &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#media-formats&quot;&gt;PCM audio frames and JPEG video frames&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;What changed&lt;/h4&gt;
&lt;p&gt;When you use the WebSocket adapter in &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#stream-mode-egress&quot;&gt;Stream mode (egress)&lt;/a&gt; to send live audio or video from the SFU to your own WebSocket endpoint, the SFU now &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#automatic-reconnection-for-streaming&quot;&gt;automatically reconnects&lt;/a&gt; after brief endpoint disconnects or restarts. This is especially helpful for long-running media pipelines where the WebSocket endpoint may briefly restart while a recording, transcription, or live analysis job is still in progress.&lt;/p&gt;
&lt;p&gt;Previously, a brief disconnect from your WebSocket endpoint could close the adapter and require your application to recreate it before media could resume. Now, the SFU retries the same endpoint for up to 5 seconds with no API change required. If the endpoint comes back within that window, audio and video delivery resumes automatically.&lt;/p&gt;
&lt;p&gt;The reconnect behavior also includes &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#media-buffering-during-reconnect&quot;&gt;live-first media buffering&lt;/a&gt;, so brief interruptions reduce media loss without replaying stale video.&lt;/p&gt;
&lt;h4&gt;Reconnect behavior&lt;/h4&gt;
&lt;p&gt;During reconnect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Audio uses a short bounded backlog to reduce audible loss. If the interruption lasts longer than the backlog can cover, older audio may be dropped.&lt;/li&gt;
&lt;li&gt;Video resumes from the &lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#video-jpeg&quot;&gt;latest available JPEG frame&lt;/a&gt; instead of replaying stale frames.&lt;/li&gt;
&lt;li&gt;Recovery is best effort and does not guarantee gapless or exactly-once delivery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the endpoint remains unavailable after the 5-second reconnect window, the adapter closes and must be recreated.&lt;/p&gt;
&lt;h4&gt;Learn more&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/&quot;&gt;WebSocket adapter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/media-transport-adapters/websocket-adapter/#automatic-reconnection-for-streaming&quot;&gt;Automatic reconnection for streaming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/get-started/&quot;&gt;Get started with Realtime SFU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/example-architecture/&quot;&gt;Realtime SFU example architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/sfu/calls-vs-sfus/&quot;&gt;Realtime vs Regular SFUs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realtime-sfu.dev-demos.workers.dev/&quot; target=&quot;_blank&quot;&gt;Global SFU Network Visualization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><product>Realtime</product><category>Realtime</category></item><item><title>Realtime - Record specific participant audio tracks in RealtimeKit</title><link>https://docs.ahq.lat/changelog/post/2026-05-28-realtimekit-track-recording/</link><guid isPermaLink="true">https://docs.ahq.lat/changelog/post/2026-05-28-realtimekit-track-recording/</guid><description>&lt;p&gt;You can now record specific participant audio tracks in RealtimeKit with &lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/recording-guide/track-recording/&quot;&gt;track recording&lt;/a&gt;. Track recording creates separate WebM files for each participant instead of a single composite recording, which is useful for post-processing, transcription, and regulated or content-sensitive workflows.&lt;/p&gt;
&lt;p&gt;To record specific participants, pass &lt;code&gt;user_ids&lt;/code&gt; when starting a track recording:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--request&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--url&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://api.cloudflare.com/client/v4/accounts/&amp;#x3C;account_id&gt;/realtime/kit/&amp;#x3C;app_id&gt;/recordings/track&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--header&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;Authorization: Bearer &amp;#x3C;api_token&gt;&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--header&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;Content-Type: application/json&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--data&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;meeting_id&quot;: &quot;97440c6a-140b-40a9-9499-b23fd7a3868a&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;user_ids&quot;: [&quot;user-123&quot;, &quot;user-456&quot;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;To pass &lt;code&gt;user_ids&lt;/code&gt; for selective track recording, use the following minimum SDK versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web Core: &lt;code&gt;@cloudflare/realtimekit&lt;/code&gt; version &lt;code&gt;1.4.0&lt;/code&gt; or later&lt;/li&gt;
&lt;li&gt;Web UI Kit: &lt;code&gt;@cloudflare/realtimekit-ui&lt;/code&gt;, &lt;code&gt;@cloudflare/realtimekit-react-ui&lt;/code&gt;, or &lt;code&gt;@cloudflare/realtimekit-angular-ui&lt;/code&gt; version &lt;code&gt;1.1.2&lt;/code&gt; or later&lt;/li&gt;
&lt;li&gt;Android Core or iOS Core: version &lt;code&gt;2.0.0&lt;/code&gt; or later&lt;/li&gt;
&lt;li&gt;Android UI Kit or iOS UI Kit: version &lt;code&gt;1.1.0&lt;/code&gt; or later&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/&quot;&gt;RealtimeKit&lt;/a&gt; provides SDKs and UI components so that you can build your own meeting experience on Cloudflare&apos;s &lt;a href=&quot;https://docs.ahq.lat/realtime/#realtime-sfu&quot;&gt;global WebRTC infrastructure&lt;/a&gt;. Teams today build products ranging from telehealth to education on RealtimeKit for global audiences. You can get started today with our &lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/quickstart/&quot;&gt;Quickstart&lt;/a&gt; or take a look at our &lt;a href=&quot;https://github.com/cloudflare/meet&quot; target=&quot;_blank&quot;&gt;Cloudflare Meet repo&lt;/a&gt; as a reference.&lt;/p&gt;</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><product>Realtime</product><category>Realtime</category></item><item><title>Workers AI, Realtime - Real-time transcription in RealtimeKit now supports 10 languages with regional variants</title><link>https://docs.ahq.lat/changelog/post/2026-03-06-realtimekit-multilingual-transcription/</link><guid isPermaLink="true">https://docs.ahq.lat/changelog/post/2026-03-06-realtimekit-multilingual-transcription/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/ai/transcription/&quot;&gt;Real-time transcription&lt;/a&gt; in RealtimeKit now supports 10 languages with regional variants, powered by &lt;a href=&quot;https://docs.ahq.lat/workers-ai/models/nova-3/&quot;&gt;Deepgram Nova-3&lt;/a&gt; running on &lt;a href=&quot;https://docs.ahq.lat/workers-ai/&quot;&gt;Workers AI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During a meeting, participant audio is routed through &lt;a href=&quot;https://docs.ahq.lat/ai-gateway/&quot;&gt;AI Gateway&lt;/a&gt; to Nova-3 on Workers AI — so transcription runs on Cloudflare&apos;s network end-to-end, reducing latency compared to routing through external speech-to-text services.&lt;/p&gt;
&lt;p&gt;Set the language when &lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/concepts/meeting/&quot;&gt;creating a meeting&lt;/a&gt; via &lt;code&gt;ai_config.transcription.language&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;ai_config&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;transcription&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;language&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;fr&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Supported languages include English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch — with regional variants like &lt;code&gt;en-AU&lt;/code&gt;, &lt;code&gt;en-GB&lt;/code&gt;, &lt;code&gt;en-IN&lt;/code&gt;, &lt;code&gt;en-NZ&lt;/code&gt;, &lt;code&gt;es-419&lt;/code&gt;, &lt;code&gt;fr-CA&lt;/code&gt;, &lt;code&gt;de-CH&lt;/code&gt;, &lt;code&gt;pt-BR&lt;/code&gt;, and &lt;code&gt;pt-PT&lt;/code&gt;. Use &lt;code&gt;multi&lt;/code&gt; for automatic multilingual detection.&lt;/p&gt;
&lt;p&gt;If you are building voice agents or real-time translation workflows, your agent can now transcribe in the caller&apos;s language natively — no extra services or routing logic needed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/realtime/realtimekit/ai/transcription/&quot;&gt;Transcription docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/workers-ai/models/nova-3/&quot;&gt;Nova-3 model page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/workers-ai/&quot;&gt;Workers AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ahq.lat/ai-gateway/&quot;&gt;AI Gateway&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><product>Workers AI</product><category>Workers AI</category><category>Realtime</category></item></channel></rss>