From b1abd69efa6dc20c68f9a5119affa205141ccce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Mon, 9 Feb 2026 13:46:21 +0100 Subject: [PATCH 1/8] refactor: deprecate disabled degradation pref --- Sources/LiveKit/Types/DegradationPreference.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Sources/LiveKit/Types/DegradationPreference.swift b/Sources/LiveKit/Types/DegradationPreference.swift index 3440360d7..20fd271f4 100644 --- a/Sources/LiveKit/Types/DegradationPreference.swift +++ b/Sources/LiveKit/Types/DegradationPreference.swift @@ -20,21 +20,25 @@ internal import LiveKitWebRTC public enum DegradationPreference: Int, Sendable { /// The SDK will decide which preference is suitable or will use WebRTC's default implementation. case auto + @available(*, deprecated, renamed: "maintainFramerateAndResolution") case disabled /// Prefer to maintain FPS rather than resolution. case maintainFramerate /// Prefer to maintain resolution rather than FPS. case maintainResolution case balanced + /// Prefer to maintain both FPS and resolution. + case maintainFramerateAndResolution } extension DegradationPreference { func toRTCType() -> LKRTCDegradationPreference? { switch self { case .auto: nil - case .disabled: .disabled + case .disabled: .maintainFramerateAndResolution case .maintainFramerate: .maintainFramerate case .maintainResolution: .maintainResolution + case .maintainFramerateAndResolution: .maintainFramerateAndResolution case .balanced: .balanced } } From 5436258add62e1ca80293a2eeb7896bc0a817cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:30:35 +0100 Subject: [PATCH 2/8] build: update WebRTC to 144 and add Swift 6.2 package --- Package.swift | 2 +- Package@swift-6.0.swift | 3 +- Package@swift-6.2.swift | 88 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 Package@swift-6.2.swift diff --git a/Package.swift b/Package.swift index cd784b550..7e30d3736 100644 --- a/Package.swift +++ b/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "137.7151.12"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift index 58f5a646e..321bab24f 100644 --- a/Package@swift-6.0.swift +++ b/Package@swift-6.0.swift @@ -9,7 +9,6 @@ let package = Package( .iOS(.v13), .macOS(.v10_15), .macCatalyst(.v14), - .visionOS(.v2), .tvOS(.v17), ], products: [ @@ -20,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "137.7151.12"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.2.swift b/Package@swift-6.2.swift new file mode 100644 index 000000000..9de23dee3 --- /dev/null +++ b/Package@swift-6.2.swift @@ -0,0 +1,88 @@ +// swift-tools-version:6.2 +// (Xcode26.0+) + +import PackageDescription + +let package = Package( + name: "LiveKit", + platforms: [ + .iOS(.v13), + .macOS(.v10_15), + .macCatalyst(.v14), + .visionOS(.v26), + .tvOS(.v17), + ], + products: [ + .library( + name: "LiveKit", + targets: ["LiveKit"] + ), + ], + dependencies: [ + // LK-Prefixed Dynamic WebRTC XCFramework + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), + .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), + .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), + .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), + // Only used for DocC generation + .package(url: "https://github.com/apple/swift-docc-plugin.git", from: "1.3.0"), + ], + targets: [ + .target( + name: "LKObjCHelpers", + publicHeadersPath: "include" + ), + .target( + name: "LiveKit", + dependencies: [ + .product(name: "LiveKitWebRTC", package: "webrtc-xcframework"), + .product(name: "LiveKitUniFFI", package: "livekit-uniffi-xcframework"), + .product(name: "SwiftProtobuf", package: "swift-protobuf"), + .product(name: "DequeModule", package: "swift-collections"), + .product(name: "OrderedCollections", package: "swift-collections"), + "LKObjCHelpers", + ], + exclude: [ + "Broadcast/NOTICE", + ], + resources: [ + .process("PrivacyInfo.xcprivacy"), + ], + swiftSettings: [ + .enableExperimentalFeature("AccessLevelOnImport"), + ] + ), + .target( + name: "LiveKitTestSupport", + dependencies: [ + "LiveKit", + ], + path: "Tests/LiveKitTestSupport" + ), + .testTarget( + name: "LiveKitCoreTests", + dependencies: [ + "LiveKit", + "LiveKitTestSupport", + ] + ), + .testTarget( + name: "LiveKitAudioTests", + dependencies: [ + "LiveKit", + "LiveKitTestSupport", + ] + ), + .testTarget( + name: "LiveKitObjCTests", + dependencies: [ + "LiveKit", + "LiveKitTestSupport", + ] + ), + ], + swiftLanguageModes: [ + .v5, // opt-out from dynamic actor isolation checks + .v6, + ] +) From 992dbcbaa295d2ba8d51bcf845ed2342a748b111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:32:09 +0100 Subject: [PATCH 3/8] ci: remove visionOS Simulator from the CI test matrix --- .github/workflows/ci.yaml | 3 --- Package@swift-6.2.swift | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7c339aff7..e9efab056 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -51,9 +51,6 @@ jobs: - os: macos-15 xcode: 16.4 platform: "macOS,variant=Mac Catalyst" - - os: macos-15 - xcode: 16.4 - platform: "visionOS Simulator,name=Apple Vision Pro,OS=2.5" - os: macos-15 xcode: 16.4 platform: "tvOS Simulator,name=Apple TV,OS=18.5" diff --git a/Package@swift-6.2.swift b/Package@swift-6.2.swift index 9de23dee3..1d6568d5a 100644 --- a/Package@swift-6.2.swift +++ b/Package@swift-6.2.swift @@ -9,8 +9,8 @@ let package = Package( .iOS(.v13), .macOS(.v10_15), .macCatalyst(.v14), - .visionOS(.v26), .tvOS(.v17), + .visionOS(.v26), ], products: [ .library( From ffd8a147d82bbab0252f1a22c705c01958d843e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Thu, 12 Feb 2026 11:18:06 +0100 Subject: [PATCH 4/8] fix: add conditional import for LiveKitTestSupport to improve build compatibility --- Tests/LiveKitCoreTests/RegionManagerTests.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tests/LiveKitCoreTests/RegionManagerTests.swift b/Tests/LiveKitCoreTests/RegionManagerTests.swift index 174b9625d..739498449 100644 --- a/Tests/LiveKitCoreTests/RegionManagerTests.swift +++ b/Tests/LiveKitCoreTests/RegionManagerTests.swift @@ -15,7 +15,9 @@ */ @testable import LiveKit +#if canImport(LiveKitTestSupport) import LiveKitTestSupport +#endif import XCTest class RegionManagerTests: XCTestCase { From 663a11a73c9260acd1305200be68e030509d25c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:20:36 +0100 Subject: [PATCH 5/8] build: update webrtc pre-release version --- Package.swift | 2 +- Package@swift-6.0.swift | 2 +- Package@swift-6.2.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Package.swift b/Package.swift index 7e30d3736..b7f128ece 100644 --- a/Package.swift +++ b/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift index 321bab24f..f700533d0 100644 --- a/Package@swift-6.0.swift +++ b/Package@swift-6.0.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.2.swift b/Package@swift-6.2.swift index 1d6568d5a..6475c4fe1 100644 --- a/Package@swift-6.2.swift +++ b/Package@swift-6.2.swift @@ -20,7 +20,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), From 03edad9b42b36df2e79fe9c6d74d6ec1e163e4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:23:37 +0100 Subject: [PATCH 6/8] warp: pass value from sdk --- Sources/LiveKit/Core/RTC.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sources/LiveKit/Core/RTC.swift b/Sources/LiveKit/Core/RTC.swift index 8e306e176..b843c44a3 100644 --- a/Sources/LiveKit/Core/RTC.swift +++ b/Sources/LiveKit/Core/RTC.swift @@ -96,6 +96,9 @@ actor RTC { Room.log("Initializing PeerConnectionFactory...") + // Enable DTLS during ICE handshake for faster connection setup. + LKRTCPeerConnectionFactory.configureFieldTrials("WebRTC-IceHandshakeDtls/Enabled/") + return LKRTCPeerConnectionFactory(audioDeviceModuleType: admType.toRTCType(), bypassVoiceProcessing: bypassVoiceProcessing, encoderFactory: encoderFactory, From 79fe355a2f717118506c2187cff25b5cbe03a747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Fri, 13 Mar 2026 08:12:03 +0100 Subject: [PATCH 7/8] deps: update to final version --- LiveKitClient.podspec | 2 +- Package.swift | 2 +- Package@swift-6.0.swift | 2 +- Package@swift-6.2.swift | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LiveKitClient.podspec b/LiveKitClient.podspec index d381008db..d731224a4 100644 --- a/LiveKitClient.podspec +++ b/LiveKitClient.podspec @@ -14,7 +14,7 @@ Pod::Spec.new do |spec| spec.source_files = "Sources/**/*" - spec.dependency("LiveKitWebRTC", "= 137.7151.12") + spec.dependency("LiveKitWebRTC", "= 144.7559.01") spec.dependency("LiveKitUniFFI", "= 0.0.5") spec.dependency("SwiftProtobuf") spec.dependency("DequeModule", "= 1.1.4") diff --git a/Package.swift b/Package.swift index b7f128ece..64ebe29fe 100644 --- a/Package.swift +++ b/Package.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift index f700533d0..debe7873a 100644 --- a/Package@swift-6.0.swift +++ b/Package@swift-6.0.swift @@ -19,7 +19,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), diff --git a/Package@swift-6.2.swift b/Package@swift-6.2.swift index 6475c4fe1..a3797d98f 100644 --- a/Package@swift-6.2.swift +++ b/Package@swift-6.2.swift @@ -20,7 +20,7 @@ let package = Package( ], dependencies: [ // LK-Prefixed Dynamic WebRTC XCFramework - .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01-alpha.1"), + .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "144.7559.01"), .package(url: "https://github.com/livekit/livekit-uniffi-xcframework.git", exact: "0.0.5"), .package(url: "https://github.com/apple/swift-protobuf.git", from: "1.31.0"), .package(url: "https://github.com/apple/swift-collections.git", "1.1.0" ..< "1.3.0"), From 665c6078c9e846af14a60b4ba952afd73c848692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Fri, 13 Mar 2026 08:13:50 +0100 Subject: [PATCH 8/8] changes --- .changes/vision-26 | 1 + .changes/webrtc-m144 | 1 + 2 files changed, 2 insertions(+) create mode 100644 .changes/vision-26 create mode 100644 .changes/webrtc-m144 diff --git a/.changes/vision-26 b/.changes/vision-26 new file mode 100644 index 000000000..50e270457 --- /dev/null +++ b/.changes/vision-26 @@ -0,0 +1 @@ +minor type="changed" "Changed minimal supported visionOS version to 26 due to WebRTC dependencies" diff --git a/.changes/webrtc-m144 b/.changes/webrtc-m144 new file mode 100644 index 000000000..cdaa12646 --- /dev/null +++ b/.changes/webrtc-m144 @@ -0,0 +1 @@ +minor type="changed" "Update WebRTC to m144"