General Questions
What platforms are supported?
What platforms are supported?
- iOS 13.0+
- macOS 10.15+
- macOS Catalyst
- visionOS 1.0+
- tvOS 13.0+
What Swift versions are supported?
What Swift versions are supported?
@preconcurrency or @unchecked Sendable to access LiveKit classes.The minimum required Swift version is defined in Package.swift (currently Swift 5.9+ for backwards compatibility).Is CocoaPods still supported?
Is CocoaPods still supported?
What are the main differences between v1 and v2?
What are the main differences between v1 and v2?
- Full Swift 6 concurrency support
- Improved thread safety
- Better memory management (requires weak references for SDK-managed objects)
- Enhanced audio session management
- New audio engine availability control for CallKit integration
Configuration
How do I adjust the log level?
How do I adjust the log level?
OSLog by default (io.livekit.*) with a minimum log level of info. Logs can be filtered by level, category, etc. using Xcode console.Set log level:App.init() or AppDelegate/SceneDelegate.OSLogger and override the log(...) method to capture specific log levels:How do I publish camera in 60 FPS?
How do I publish camera in 60 FPS?
- Create a
LocalVideoTrackwith 60 FPS capture options:
- Publish with matching encoding settings:
How do I configure AudioSession manually?
How do I configure AudioSession manually?
AVAudioSession while connected. It sets the session to .playback category and switches to .playAndRecord when a local track is published.To configure AVAudioSession yourself:AVAudioSession must be configured and activated with category .playAndRecord and mode .voiceChat or .videoChat before enabling/publishing the microphone.How do I integrate with CallKit?
How do I integrate with CallKit?
AVAudioSession and the SDK’s audio engine is crucial.- Disable automatic audio session configuration:
- Coordinate audio engine availability in your
CXProviderDelegate:
Audio & Video
Are subscribed audio tracks automatically played?
Are subscribed audio tracks automatically played?
How do I reduce mic publish latency?
How do I reduce mic publish latency?
Can I use the camera on iOS Simulator?
Can I use the camera on iOS Simulator?
How do I improve VideoView performance in ScrollViews?
How do I improve VideoView performance in ScrollViews?
VideoViews in a scroll view, disable rendering for views that scroll off-screen:NSHashTable and a timer, see the UIKit Minimal Example.How do I enable screen sharing on iOS?
How do I enable screen sharing on iOS?
Thread Safety & Memory
Which classes are thread-safe?
Which classes are thread-safe?
VideoView- must be accessed from the main thread only (it’s a UI component)
VideoView (reading/writing properties, etc.) must be performed from the main thread.Other core classes (Room, Participant, Track, etc.) can be safely accessed from any thread.Which thread are delegates called on?
Which thread are delegates called on?
@MainActor for methods that update UI.Should I use strong or weak references for SDK objects?
Should I use strong or weak references for SDK objects?
Room disconnects and will be released by the SDK. Holding strong references will prevent releasing Room and other internal objects, leading to memory leaks.VideoView.track property does not hold a strong reference, so it’s not required to set it to nil, but it’s good practice.Do I need to nil VideoView.track to avoid memory leaks?
Do I need to nil VideoView.track to avoid memory leaks?
VideoView.track property does not hold a strong reference, so it’s not required to set it to nil.However, setting it to nil when the view is no longer in use is still good practice for clarity.Troubleshooting
Why do I get a warning about missing dSYM for LiveKitWebRTC?
Why do I get a warning about missing dSYM for LiveKitWebRTC?
LiveKitWebRTC.xcframework binary framework does not contain DSYMs.This will NOT prevent the app from being submitted to the App Store or passing the review process.If you need DSYMs (for custom builds), you can use the build script in DEBUG mode to generate them locally.My app crashes on macOS Catalina. How do I fix it?
My app crashes on macOS Catalina. How do I fix it?
- Explicitly add
ReplayKit.frameworkto Build Phases > Link Binary with Libraries - Set it to Optional (not Required)
How do I debug connection issues?
How do I debug connection issues?
OSLog with category io.livekit.* and can be filtered in Xcode console.Also verify:- Server URL is correct (use
wss://for production) - JWT token is valid and not expired
- Network connectivity is available
- Firewall settings allow WebRTC traffic
Resources
Where can I find example code?
Where can I find example code?
- Full iOS/macOS SwiftUI Example App - Complete reference implementation
- Swift SDK Examples - Minimal examples for specific features
- CallKit Example - CallKit integration
How do I get help or report issues?
How do I get help or report issues?
- Join our Slack community for help from devs and community members
- Submit issues on GitHub
- Browse the complete LiveKit documentation
- Check the Troubleshooting guide