Old vs New Architecture iOS behavior when joining / leaving multiple sessions in a row

Description

This is the last piece in a year long process of updating our app to the new architecture.

The RN code for our zoom video call screen works great in Android on new and old architecture as well as on the old architecture for iOS.

The problem only happens when the app attempts to connect to a 2nd session after a 1st session has ended. First sessions work as normal. Anytime after await zoom.leaveSession() is called I get the errors detailed below when i attempt to “await zoom.join()” at some point in the future. If the app is hard closed or reset in some way the error doesn’t show up until any subsequent calls.

I have added some checks before calling await zoom.leaveSession() to always check if await zoom.isInSession() is true before proceeding. This behavior is different from the old architecture though and outlined no where in the documentation as a necessity.

Errors

This is the error that is giving by the error event listener:

{
  "details": 0,
  "errorType": "ZoomVideoSDKError_Wrong_Usage"
}

This is the exception that is thrown on the JS side from calling zoom.join():

{
  "code": "joinSession_failure",
  "nativeStackIOS": [
    "0   THSPDev.debug.dylib                 0x000000010d8463f4 RCTJSErrorFromCodeMessageAndNSError + 100",
    "1   THSPDev.debug.dylib                 0x000000010dc687d8 ___ZZN8facebook5react15ObjCTurboModule13createPromiseERNS_3jsi7RuntimeENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEU13block_pointerFvU13block_pointerFvP11objc_objectEU13block_pointerFvP8NSStringSH_P7NSErrorEEENK3$_0clES4_RKNS2_5ValueEPSQ_m_block_invoke.112 + 344",
    "2   THSPDev.debug.dylib                 0x000000010ed42f54 __66-[RNZoomVideoSdk joinSessionWithConfig:withResolver:withRejecter:]_block_invoke + 172",
    "3   libdispatch.dylib                   0x0000000104fa461c _dispatch_call_block_and_release + 32",
    "4   libdispatch.dylib                   0x0000000104fbe2b0 _dispatch_client_callout + 16",
    "5   libdispatch.dylib                   0x0000000104fdf48c _dispatch_main_queue_drain.cold.5 + 876",
    "6   libdispatch.dylib                   0x0000000104fb4758 _dispatch_main_queue_drain + 180",
    "7   libdispatch.dylib                   0x0000000104fb4694 _dispatch_main_queue_callback_4CF + 44",
    "8   CoreFoundation                      0x0000000198b615a0 44CF748C-19F2-31C4-A0F1-143E32768AF1 + 439712",
    "9   CoreFoundation                      0x0000000198b13df0 44CF748C-19F2-31C4-A0F1-143E32768AF1 + 122352",
    "10  CoreFoundation                      0x0000000198b12d28 44CF748C-19F2-31C4-A0F1-143E32768AF1 + 118056",
    "11  GraphicsServices                    0x00000001ea119498 GSEventRunModal + 120",
    "12  UIKitCore                           0x000000019b890838 ABE178BE-C241-3474-A192-70F042F71BF4 + 723000",
    "13  UIKitCore                           0x000000019b82efd0 UIApplicationMain + 336",
    "14  THSPDev.debug.dylib                 0x000000010c8b3e34 __debug_main_executable_dylib_entry_point + 64",
    "15  dyld                                0x0000000195d71b18 4E9F3B1E-8F53-3E3B-849C-950CA957C64B + 19224"
  ],
  "domain": "RCTErrorDomain",
  "userInfo": null
}

Which React Native Video SDK version?

current version of 2.2.5

Video SDK Code Snippets

See above in description.

To Reproduce(If applicable)

See above in description.

Screenshots

N/A

Troubleshooting Routes

Everything

Smartphone (please complete the following information):

  • Device: iPad Pro M4, iPhone 16 Pro. both on iOS 26 developer beta

Additional context

Still testing and trying different angles of calling the zoom video sdk functions so they don’t throw errors that crash the app.

Hey @ray.elward
I just tested the quickstart app using Expo 53. It has the new architecture enabled. I’m testing using global?.nativeFabricUIManager shown in the top. Joining and leaving a channel works as expected.
Video: https://drive.google.com/file/d/1TNm2Kitn8gOoH29qSIawIXAEuaE8ss_Z/view?usp=sharing