Changelog
All notable changes are documented here. RTCstack follows Semantic Versioning.
Unreleased — Native Mobile (preview)
Native iOS and Android SDKs + UI kits that mirror the @rtcstack/sdk contract and interoperate with web clients in the same room. Both SDKs compile against their pinned LiveKit dependencies and the cross-platform wire-format conformance tests pass (Android 7/7, iOS 6/6). Device-level features are implemented but pending a real-device QA pass; packages are not yet published to CocoaPods / Maven Central. See the Mobile guide.
iOS (RTCstackKit / RTCstackUI)
RTCstack.createCall→Callwrappingclient-sdk-swift2.14.1; Combine@Publishedstate +eventspublisher- Connection/media/messaging parity with the web SDK; JWT expiry parse +
tokenRefresher AudioSessionManager(AVAudioSession),CallKitAdapter+VoIPPushManager+CallCoordinator(report-before-return, CallKit-owned audio activation)- ReplayKit screen share: Broadcast Upload Extension template +
BroadcastPickerView RTCstackUISwiftUI kit oncomponents-swift0.1.7:VideoConferenceView, grid, control bar, chat;.rtcstackTheme()tokens- Swift Package + CocoaPods podspec; iOS 15.0+
Android (com.rtcstack:sdk / com.rtcstack:ui-compose)
RTCstack.createCall→Callwrappinglivekit-android2.24.1;StateFlowstate +SharedFloweventsRTCstackCallServicetyped foreground service; audio focus +MODE_IN_COMMUNICATIONroutingIncomingCallManager(FCM + full-screen-intent notification);ScreenShareLauncher(MediaProjection consent + FGS promotion)ui-composekit onlivekit-android-compose-components2.3.0:VideoConference, grid, control bar, chat;RTCstackThemetokens- Consumer ProGuard rules + manifest-merged FGS/permissions; Gradle multi-module AAR; API 24+
Docs / site
- New Native Mobile guide section (Overview, iOS, Android)
- Canonical GitHub repository URL updated to
github.com/radioBros/RTCstack
v0.1.0 — 2026-04-21
Initial release.
Infrastructure
- Docker Compose stack: LiveKit SFU, LiveKit Egress, coturn TURN, Caddy TLS proxy, Redis, MinIO
- All services use pinned image versions with Docker healthchecks
docker/.env.examplewith all required variables documented
Backend API
POST /v1/token— sign LiveKit JWTs with role-based grants (host, moderator, participant, viewer)POST /v1/token/refresh— refresh near-expiry tokensGET/POST/DELETE /v1/rooms— room lifecycle managementGET/DELETE /v1/rooms/:roomId/participants/:id— participant list, kickPOST /v1/rooms/:roomId/participants/:id/mute— mute audio or videoPOST/GET /v1/rooms/:roomId/recording/start|stop— composite MP4 recording via LiveKit EgressPOST/GET/PUT/DELETE /v1/webhooks— webhook config CRUD with HMAC-signed delivery and retry backoffPOST/GET/DELETE /v1/rooms/:roomId/ingress— RTMP/WHIP ingress via LiveKit IngressClientGET/POST /v1/rooms/:roomId/transcription/*— live + post-call transcription (requires STT profile)- HMAC-SHA256 request signing with 5-minute replay protection window
- Rate limiting via
@fastify/rate-limit
SDK (@rtcstack/sdk)
createCall({ token, url, tokenRefresher? })— factory returning aCallinstanceCallclass wrappinglivekit-client: connect, disconnect, toggleMic, toggleCamera, startScreenShare, stopScreenShare, switchDevice, sendMessage, sendReaction, setLayout, pin- Typed
EventEmitterwith fullCallEventMap MockCall+createMockCall()for testing without a LiveKit server- Bundle ≤ 80 kB gzipped
UI Kits
@rtcstack/ui-react— CallProvider, 7 hooks, 5 components (VideoConference, VideoGrid, ControlBar, ChatPanel, ParticipantVideo), CSS design tokens, dark/light themes@rtcstack/ui-vue— CALL_KEY injection, 7 composables, 5 SFC components@rtcstack/ui-vanilla—mountVideoConference()imperative API
Example Apps
apps/examples/react-example— Vite + React 18, join form, role selectorapps/examples/vue-example— Vite + Vue 3, join form, role selectorapps/examples/vanilla-example— No-framework HTML + Vite
Website
- VitePress documentation site with full guide coverage
- Local search

