Livrkit client version changes from 2.15.7 to 2.1...
# ask-ai
b
Livrkit client version changes from 2.15.7 to 2.17.3. What are the changes i need to consider from developer perspective
✅ 1
t
Thanks for reaching out, G. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — you’re asking what developer-facing changes to expect when moving from LiveKit client 2.15.7 → 2.17.3. Below I’ve summarized the key changes you should consider, what might affect your code, and recommended steps to evaluate the upgrade. Acknowledgement • I’m responding to your question about developer-impact between client versions 2.15.7 and 2.17.3. Key developer-facing changes and features • RPC (request/response) support ◦ New APIs:
performRpc()
and
registerRpcMethod()
to do request/response between participants. ◦ Configurable timeouts and
RpcError
handling. You may want to add handling for RPC timeouts and errors in your app. • Data Streams (experimental) ◦ New experimental APIs for sending larger payloads via packetization/depacketization (supports text streams and multi-packet messages). ◦ If you use data channels for large messages, test and consider switching to the new APIs for reliability. • Data channel improvements (lossy/reliable) ◦ Lossy data channels now support adjustable latency behavior, and packetization helps send larger payloads reliably. ◦ Review any custom packet framing you have to ensure compatibility with built-in packetization. • End-to-end encryption (E2EE) enhancements ◦ E2EE now extends to data channels in addition to media tracks. ◦ Encryption work is performed in a dedicated Web Worker (
e2ee.worker.mjs
) for performance. ◦ Supported codecs called out: VP8, VP9, H.264, H.265 (video) and Opus (audio). ◦ If you use custom key providers or handle encryption errors, test flows for
EncryptionError
and key exchange/migration. • React Native and mobile improvements ◦ Data channel encryption is supported in React Native. ◦ Pre-connect audio buffering added to improve audio reliability on mobile. If you support RN, validate audio behavior after upgrade. • Audio output device selection ◦ New helper
supportsAudioOutputSelection()
and use of
HTMLMediaElement.setSinkId()
where supported. ◦ Note: browser support varies (Chromium supports setSinkId; Safari does not). Add feature detection and fallbacks. • Device switching and robustness ◦ Improved logic to avoid unnecessary track restarts when switching devices using ideal constraints. ◦ Better handling around device disconnection/reconnection; test device plug/unplug flows. Resilience, reconnection, and error-handling improvements • Improved reconnection strategy: exponential backoff, ICE restarts, WebSocket reconnections — expect more robust resume behavior but test for edge cases you depend on (negotiation timing, resume/migration). • Better recovery for peer connection mismatches and negotiation timeouts; ensure any custom retry logic you implemented doesn’t conflict with the SDK’s improved behavior. Potential breaking or impactful areas to test • Data channel behavior: packetization and E2EE on data channels could change how messages are encoded/decoded. • E2EE integration: if you implemented custom encryption hooks, make sure they’re compatible with the worker-based encryption flow. • Device selection and audio output: cross-browser differences (especially Safari) may require conditional handling. • Events and error types: new RPC and encryption error types mean you may need to add handlers for new event/error names. Recommended upgrade steps 1. Run integration tests covering: ◦ Data channel send/receive (small and large messages) ◦ E2EE flows (media and data) ◦ RPC calls (success, timeout, error) ◦ Device switch, disconnect/reconnect, audio output selection ◦ Reconnection/resume scenarios 1. Feature detection and fallbacks: ◦ Use
supportsAudioOutputSelection()
before calling
setSinkId()
. ◦ Detect whether the environment supports Web Worker-based E2EE for data channels (React Native specifics). 1. Add/update error handling: ◦ Handle
RpcError
,
EncryptionError
, and any new data events. ◦ Reduce duplicate retry logic that may conflict with SDK reconnection handling. 1. If you use React (or React Native): ◦ Test UI components for any new events or lifecycle differences; consider using
@livekit/components-react
for easier integration where helpful. If you want, I can: • Provide a focused test checklist tailored to your app (web or React Native). • Review any specific areas of your code (data channel handling, encryption, device management, or reconnection logic) to point out specific lines or patterns to change. Would you like a custom upgrade checklist for web or React Native, or help mapping the new RPC and E2EE APIs to your existing code? Sources: client-sdk-js | livekit/livekit_composite | DeepWiki | OpenAI and LiveKit partner to turn Advanced Voice into an API | LiveKit