Skip to content

feat(ios): improved frame rendering#2133

Draft
santhoshvai wants to merge 3 commits intomainfrom
feat/ios-render-improve
Draft

feat(ios): improved frame rendering#2133
santhoshvai wants to merge 3 commits intomainfrom
feat/ios-render-improve

Conversation

@santhoshvai
Copy link
Member

@santhoshvai santhoshvai commented Feb 19, 2026

💡 Overview

DO NOT MERGE YET

Test plan

  • Run iOS app from Xcode
  • Do a call with pronto, with both sides camera enabled
  • And then measure the time it takes for the device to get towards serious thermal state

📝 Implementation notes

webrtc ref: GetStream/react-native-webrtc#27

How to run the iOS App

SDK setup

yarn
yarn build:react-native:deps

iOS setup

cd sample-apps/react-native/dogfood/ios
pod install
open StreamReactNativeVideoSDKSample.xcworkspace
  1. Then now run in Xcode
  2. Measure the time until serious thermal state

Summary by CodeRabbit

  • Chores
    • Updated @stream-io/react-native-webrtc dependency to version 137.1.3-alpha.1 in the React Native sample application
    • Updated iOS CocoaPods configuration with StreamWebRTC dependency

@changeset-bot
Copy link

changeset-bot bot commented Feb 19, 2026

⚠️ No Changeset found

Latest commit: 845408c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 19, 2026

📝 Walkthrough

Walkthrough

Dependencies are updated across the iOS and JavaScript layers: a new StreamWebRTC pod is added to the iOS configuration, and the @stream-io/react-native-webrtc package version is bumped to an alpha release.

Changes

Cohort / File(s) Summary
Dependency Updates
sample-apps/react-native/dogfood/ios/Podfile, sample-apps/react-native/dogfood/package.json
Added new StreamWebRTC pod dependency with specific podspec URL and updated @stream-io/react-native-webrtc from 137.1.0 to 137.1.3-alpha.1.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 New libraries hop into the nest,
StreamWebRTC joins the rest,
Version bumps and deps aligned,
Better code, more refined! 🌿

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(ios): improved frame rendering' is directly related to the PR's main objective of improving iOS frame rendering, as confirmed by the description and objectives.
Description check ✅ Passed The description includes an Overview section and Implementation notes, but is missing the required Ticket and Docs sections from the template; however, the description is mostly complete with substantial testing and setup instructions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/ios-render-improve

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@santhoshvai santhoshvai marked this pull request as draft February 19, 2026 09:25
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@sample-apps/react-native/dogfood/ios/Podfile`:
- Line 13: Move the pod declaration for StreamWebRTC into the target block to
make the Podfile intent explicit: locate the top-level line "pod 'StreamWebRTC',
podspec:
'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'"
and cut it into the "target 'StreamReactNativeVideoSDKSample'" block (near the
"use_frameworks! :linkage => :static" statement) so the pod is declared inside
that target rather than at root scope.

In `@sample-apps/react-native/dogfood/package.json`:
- Line 24: The PR updates the react-native WebRTC dependency to the pre-release
"@stream-io/react-native-webrtc": "137.1.3-alpha.1" but does not include the
regenerated CocoaPods lock; run pod install in the iOS workspace to produce an
updated Podfile.lock that reflects the pinned StreamWebRTC (e.g., the manual pin
"StreamWebRTC 137.0.62" in the Podfile), then add and commit the updated
Podfile.lock alongside the package.json change so other contributors will get
the exact CocoaPods resolution.

node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')

pod 'StreamWebRTC', podspec: 'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, locate and examine the Podfile
fd -type f -name "Podfile" | head -5

Repository: GetStream/stream-video-js

Length of output: 239


🏁 Script executed:

# Check for podspec files related to react-native-webrtc
fd -type f -name "*.podspec*" | head -20

Repository: GetStream/stream-video-js

Length of output: 239


🏁 Script executed:

# Look for package.json files that might contain `@stream-io/react-native-webrtc`
fd -type f -name "package*.json" | xargs grep -l "react-native-webrtc" 2>/dev/null

Repository: GetStream/stream-video-js

Length of output: 241


🏁 Script executed:

# Find Podfile
find . -name "Podfile" 2>/dev/null

Repository: GetStream/stream-video-js

Length of output: 115


🏁 Script executed:

# Find podspec files
find . -name "*.podspec*" 2>/dev/null | head -20

Repository: GetStream/stream-video-js

Length of output: 398


🏁 Script executed:

# Look at the Podfile content
cat -n sample-apps/react-native/dogfood/ios/Podfile | head -50

Repository: GetStream/stream-video-js

Length of output: 2025


🏁 Script executed:

# Find package.json with react-native-webrtc
rg "react-native-webrtc" -t json | head -20

Repository: GetStream/stream-video-js

Length of output: 1570


🏁 Script executed:

# Check the react-native-sdk podspec
cat -n packages/react-native-sdk/stream-video-react-native.podspec

Repository: GetStream/stream-video-js

Length of output: 2174


🏁 Script executed:

# Look for any node_modules or installed podspecs
find . -path "*/node_modules/@stream-io/react-native-webrtc/*.podspec*" 2>/dev/null

Repository: GetStream/stream-video-js

Length of output: 51


🏁 Script executed:

# Search for StreamWebRTC version references in podspecs
rg "StreamWebRTC" -A 2 -B 2 packages/react-native-sdk/stream-video-react-native.podspec

Repository: GetStream/stream-video-js

Length of output: 51


🏁 Script executed:

# Check if stream-react-native-webrtc exists as a pod in the repo
rg "stream-react-native-webrtc" -A 3 -B 1

Repository: GetStream/stream-video-js

Length of output: 6515


🏁 Script executed:

# Search for any references to StreamWebRTC versions
rg "StreamWebRTC" -B 2 -A 2

Repository: GetStream/stream-video-js

Length of output: 3171


🏁 Script executed:

# Check the dogfood app's full dependencies to understand the package structure
cat sample-apps/react-native/dogfood/package.json | head -100

Repository: GetStream/stream-video-js

Length of output: 2856


Move the StreamWebRTC pod inside the target block for clarity.

The StreamWebRTC pod is declared at the root scope (line 13), before platform :ios and outside the target 'StreamReactNativeVideoSDKSample' block. While CocoaPods' implicit abstract target mechanism allows this to work, placing it alongside use_frameworks! :linkage => :static (line 36) inside the target block makes the intent clearer and is idiomatic.

Version alignment is already correct: The Podfile.lock confirms that stream-react-native-webrtc@137.1.3-alpha.1 declares StreamWebRTC (~> 137.0.62), and the manually specified 137.0.62 satisfies this constraint. No version conflict exists.

♻️ Suggested placement
-pod 'StreamWebRTC', podspec: 'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'
-
 platform :ios, min_ios_version_supported
 ...
 target 'StreamReactNativeVideoSDKSample' do
   config = use_native_modules!
   use_frameworks! :linkage => :static
   $RNFirebaseAsStaticFramework = true
+  pod 'StreamWebRTC', podspec: 'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'
   ...
 end
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
pod 'StreamWebRTC', podspec: 'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'
platform :ios, min_ios_version_supported
target 'StreamReactNativeVideoSDKSample' do
config = use_native_modules!
use_frameworks! :linkage => :static
$RNFirebaseAsStaticFramework = true
pod 'StreamWebRTC', podspec: 'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'
end
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/ios/Podfile` at line 13, Move the pod
declaration for StreamWebRTC into the target block to make the Podfile intent
explicit: locate the top-level line "pod 'StreamWebRTC', podspec:
'https://raw.githubusercontent.com/GetStream/stream-video-swift-webrtc/137.0.62/StreamWebRTC.podspec'"
and cut it into the "target 'StreamReactNativeVideoSDKSample'" block (near the
"use_frameworks! :linkage => :static" statement) so the pod is declared inside
that target rather than at root scope.

"@react-navigation/native-stack": "^7.3.27",
"@stream-io/noise-cancellation-react-native": "workspace:^",
"@stream-io/react-native-webrtc": "137.1.0",
"@stream-io/react-native-webrtc": "137.1.3-alpha.1",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Pre-release alpha — confirm Podfile.lock is committed alongside.

The latest stable release on npm is 137.0.2, so 137.1.3-alpha.1 is an unpublished pre-release (consistent with the "DO NOT MERGE YET" label). The exact pin is appropriate here.

One operational note: the Podfile.lock should always be kept under version control — it is generated after the first run of pod install and tracks the exact version of each pod that was installed. The PR diff doesn't include an updated Podfile.lock. Committing the regenerated lock file alongside this change prevents other contributors on the branch from hitting a different (potentially conflicting) CocoaPods resolution, especially given the manually pinned StreamWebRTC 137.0.62 in the Podfile.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/package.json` at line 24, The PR updates the
react-native WebRTC dependency to the pre-release
"@stream-io/react-native-webrtc": "137.1.3-alpha.1" but does not include the
regenerated CocoaPods lock; run pod install in the iOS workspace to produce an
updated Podfile.lock that reflects the pinned StreamWebRTC (e.g., the manual pin
"StreamWebRTC 137.0.62" in the Podfile), then add and commit the updated
Podfile.lock alongside the package.json change so other contributors will get
the exact CocoaPods resolution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant