npx expo prebuild --clean1.37.0
VoIP push registration is simplified — the SDK now owns the PKPushRegistry delegate internally. A single call to StreamVideoReactNative.voipRegistration() replaces all the previous AppDelegate boilerplate.
🔨 What changed?
StreamVideoReactNative.voipRegistration() still exists but now sets up the registry and owns the delegate. The legacy helpers that used to be called from your AppDelegate's PKPushRegistryDelegate methods are removed:
StreamVideoReactNative.didUpdatePushCredentials(_:forType:)StreamVideoReactNative.didReceiveIncomingPush(_:forType:completionHandler:)StreamVideoReactNative.didReceiveIncomingVoIPPush(_:metadata:completionHandler:)
If your code references any of these, it will fail to compile against 1.37.0.
💡 How to migrate?
Expo apps
Re-run prebuild after upgrading — the Stream Video SDK config plugin emits the new boilerplate automatically:
React Native apps with a manual AppDelegate
Update your AppDelegate.swift (or AppDelegate.mm) in three steps. The voipRegistration() call itself stays — only the surrounding boilerplate changes.
1. Drop the PushKit import
#import <PushKit/PushKit.h>
#import "StreamVideoReactNative.h"2. Remove the PKPushRegistryDelegate conformance and delete all pushRegistry(...) methods
Drop the protocol from your class declaration (Swift only):
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, PKPushRegistryDelegate {
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { Then delete the following delegate methods from your AppDelegate:
// Methods to delete:
pushRegistry(_:didUpdate:for:)
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
pushRegistry(_:didReceiveIncomingVoIPPushWith:metadata:withCompletionHandler:) // iOS 26.4+ variant, if you added it3. Keep the voipRegistration() call
No change needed — the call stays exactly as it was:
[StreamVideoReactNative voipRegistration];