From 900a2d766f5e43d7d4fc4af80b2db67f5f9b42d0 Mon Sep 17 00:00:00 2001 From: Santhosh Vaiyapuri Date: Mon, 17 Aug 2026 14:21:46 +0200 Subject: [PATCH 1/4] init 148 snapshot --- android/build.gradle | 2 +- stream-react-native-webrtc.podspec | 7 +++++-- third_party/StreamWebRTC.podspec | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 third_party/StreamWebRTC.podspec diff --git a/android/build.gradle b/android/build.gradle index 8aa2bd996..084f1a8c3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -84,7 +84,7 @@ def kotlin_version = getExtOrDefault('kotlinVersion', '1.8.10') println "Building Stream WebRTC React Native module with Kotlin version: $kotlin_version" dependencies { - api 'io.getstream:stream-video-webrtc-android:145.9.0' + api 'io.getstream:stream-video-webrtc-android:148.0.1-SNAPSHOT' implementation "com.facebook.react:react-android:+" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "androidx.core:core:1.7.0" diff --git a/stream-react-native-webrtc.podspec b/stream-react-native-webrtc.podspec index 5e152299a..837e7bf4f 100644 --- a/stream-react-native-webrtc.podspec +++ b/stream-react-native-webrtc.podspec @@ -20,8 +20,11 @@ Pod::Spec.new do |s| s.framework = 'AudioToolbox','AVFoundation', 'CoreAudio', 'CoreGraphics', 'CoreVideo', 'GLKit', 'VideoToolbox' s.swift_version = '5.0' s.dependency 'React-Core' - # WebRTC version from https://github.com/GetStream/stream-video-swift-webrtc releases - s.dependency 'StreamWebRTC', '= 145.14.0' + # WebRTC version from https://github.com/GetStream/stream-video-swift-webrtc releases. + # 148.0.0 is not yet published to CocoaPods trunk. Until it is, consuming apps must + # add the interim podspec to their Podfile: + # pod 'StreamWebRTC', :podspec => '../node_modules/stream-react-native-webrtc/third_party/StreamWebRTC.podspec' + s.dependency 'StreamWebRTC', '= 148.0.0' # Swift/Objective-C compatibility #https://blog.cocoapods.org/CocoaPods-1.5.0/ s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' diff --git a/third_party/StreamWebRTC.podspec b/third_party/StreamWebRTC.podspec new file mode 100644 index 000000000..eb27f0e44 --- /dev/null +++ b/third_party/StreamWebRTC.podspec @@ -0,0 +1,15 @@ +Pod::Spec.new do |s| + s.name = 'StreamWebRTC' + s.version = '148.0.0' + s.summary = 'Stream WebRTC pre-release binary (148.0.0)' + s.description = <<-DESC + Interim podspec pointing StreamWebRTC at the 148.0.0 pre-release xcframework + published on GitHub releases, used until 148.0.0 is published to CocoaPods trunk. + DESC + s.homepage = 'https://github.com/GetStream/webrtc' + s.license = { :type => 'BSD' } + s.author = 'Stream.io Inc.' + s.platform = :ios, '13.0' + s.source = { :http => 'https://github.com/GetStream/webrtc/releases/download/148.0.0/WebRTC.xcframework.zip' } + s.vendored_frameworks = 'WebRTC.xcframework' +end From 62af853a3572c70d6669206872061dfc4e1a3325 Mon Sep 17 00:00:00 2001 From: Santhosh Vaiyapuri Date: Mon, 17 Aug 2026 14:41:43 +0200 Subject: [PATCH 2/4] easier podspec usage --- .gitignore | 1 + .../ios/GumTestApp.xcodeproj/project.pbxproj | 4 +-- stream-react-native-webrtc.podspec | 35 ++++++++++++++++--- third_party/StreamWebRTC.podspec | 15 -------- 4 files changed, 34 insertions(+), 21 deletions(-) delete mode 100644 third_party/StreamWebRTC.podspec diff --git a/.gitignore b/.gitignore index 743ca6449..b4cd08331 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ android/build Podfile.lock WebRTC.xcframework WebRTC.dSYMs +third_party/.webrtc-version examples/GumTestApp/package-lock.json examples/GumTestApp_macOS/package-lock.json **/.xcode.env.local diff --git a/examples/GumTestApp/ios/GumTestApp.xcodeproj/project.pbxproj b/examples/GumTestApp/ios/GumTestApp.xcodeproj/project.pbxproj index 1e9bc8bcc..80a601f29 100644 --- a/examples/GumTestApp/ios/GumTestApp.xcodeproj/project.pbxproj +++ b/examples/GumTestApp/ios/GumTestApp.xcodeproj/project.pbxproj @@ -352,13 +352,13 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-GumTestApp/Pods-GumTestApp-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/StreamWebRTC/WebRTC.framework/WebRTC", "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/stream-react-native-webrtc/WebRTC.framework/WebRTC", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/stream-react-native-webrtc.podspec b/stream-react-native-webrtc.podspec index 837e7bf4f..4f0e9b363 100644 --- a/stream-react-native-webrtc.podspec +++ b/stream-react-native-webrtc.podspec @@ -1,7 +1,36 @@ require 'json' +require 'fileutils' package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) +# WebRTC version from https://github.com/GetStream/stream-video-swift-webrtc releases. +# 148.0.0 is not on CocoaPods trunk, so the xcframework is vendored directly instead of +# depending on the `StreamWebRTC` pod. The release asset below is the same one the +# `StreamWebRTC` podspec in that repo points at. CocoaPods skips `prepare_command` for +# `:path` pods (which is how React Native autolinks this module), so the fetch happens +# here — the podspec is plain Ruby, evaluated on every `pod install`. +webrtc_version = '148.0.0' +webrtc_url = "https://github.com/GetStream/stream-video-swift-webrtc/releases/download/#{webrtc_version}/WebRTC.xcframework.zip" +webrtc_dir = File.join(__dir__, 'third_party') +webrtc_framework = File.join(webrtc_dir, 'WebRTC.xcframework') +webrtc_stamp = File.join(webrtc_dir, '.webrtc-version') + +unless File.directory?(webrtc_framework) && File.exist?(webrtc_stamp) && File.read(webrtc_stamp).strip == webrtc_url + webrtc_zip = File.join(webrtc_dir, 'WebRTC.xcframework.zip') + + Pod::UI.puts "[stream-react-native-webrtc] Downloading WebRTC.xcframework #{webrtc_version}" + + FileUtils.mkdir_p(webrtc_dir) + FileUtils.rm_rf([webrtc_framework, webrtc_stamp, webrtc_zip]) + + raise "Failed to download #{webrtc_url}" unless system('curl', '-fSL', '--retry', '3', '-o', webrtc_zip, webrtc_url) + raise "Failed to unzip #{webrtc_zip}" unless system('unzip', '-q', '-o', webrtc_zip, '-x', '__MACOSX/*', '-d', webrtc_dir) + raise "#{webrtc_zip} did not contain WebRTC.xcframework" unless File.directory?(webrtc_framework) + + FileUtils.rm_f(webrtc_zip) + File.write(webrtc_stamp, webrtc_url) +end + Pod::Spec.new do |s| s.name = 'stream-react-native-webrtc' s.version = package['version'] @@ -21,10 +50,8 @@ Pod::Spec.new do |s| s.swift_version = '5.0' s.dependency 'React-Core' # WebRTC version from https://github.com/GetStream/stream-video-swift-webrtc releases. - # 148.0.0 is not yet published to CocoaPods trunk. Until it is, consuming apps must - # add the interim podspec to their Podfile: - # pod 'StreamWebRTC', :podspec => '../node_modules/stream-react-native-webrtc/third_party/StreamWebRTC.podspec' - s.dependency 'StreamWebRTC', '= 148.0.0' + # 148.0.0 is not yet published to CocoaPods trunk. so a temporary way to point at the pre-release xcframework published on GitHub releases. + s.vendored_frameworks = 'third_party/WebRTC.xcframework' # Swift/Objective-C compatibility #https://blog.cocoapods.org/CocoaPods-1.5.0/ s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' diff --git a/third_party/StreamWebRTC.podspec b/third_party/StreamWebRTC.podspec deleted file mode 100644 index eb27f0e44..000000000 --- a/third_party/StreamWebRTC.podspec +++ /dev/null @@ -1,15 +0,0 @@ -Pod::Spec.new do |s| - s.name = 'StreamWebRTC' - s.version = '148.0.0' - s.summary = 'Stream WebRTC pre-release binary (148.0.0)' - s.description = <<-DESC - Interim podspec pointing StreamWebRTC at the 148.0.0 pre-release xcframework - published on GitHub releases, used until 148.0.0 is published to CocoaPods trunk. - DESC - s.homepage = 'https://github.com/GetStream/webrtc' - s.license = { :type => 'BSD' } - s.author = 'Stream.io Inc.' - s.platform = :ios, '13.0' - s.source = { :http => 'https://github.com/GetStream/webrtc/releases/download/148.0.0/WebRTC.xcframework.zip' } - s.vendored_frameworks = 'WebRTC.xcframework' -end From c77a202c42e51c1f63a6df0002d3dfb7b6ae65d7 Mon Sep 17 00:00:00 2001 From: Santhosh Vaiyapuri Date: Mon, 17 Aug 2026 14:41:47 +0200 Subject: [PATCH 3/4] 148.0.0-alpha.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41ec28ccf..804d1a8c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@stream-io/react-native-webrtc", - "version": "145.3.0", + "version": "148.0.0-alpha.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@stream-io/react-native-webrtc", - "version": "145.3.0", + "version": "148.0.0-alpha.1", "license": "MIT", "dependencies": { "base64-js": "^1.5.1", diff --git a/package.json b/package.json index 677cafd04..401db4f5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/react-native-webrtc", - "version": "145.3.0", + "version": "148.0.0-alpha.1", "repository": { "type": "git", "url": "git+https://github.com/GetStream/react-native-webrtc.git" From c0044c5ee490ef70b80bd8ba2ccca9d86b18b615 Mon Sep 17 00:00:00 2001 From: Santhosh Vaiyapuri Date: Mon, 17 Aug 2026 14:47:08 +0200 Subject: [PATCH 4/4] fix: wrong android gradle filter --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 084f1a8c3..438705f65 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -25,7 +25,7 @@ rootProject.allprojects { url = 'https://central.sonatype.com/repository/maven-snapshots/' content { // This efficiently tells Gradle to only look for this specific dependency here - includeModule('io.getstream', 'stream-webrtc-android') + includeModule('io.getstream', 'stream-video-webrtc-android') } } }