Zoom Video SDK - installation with managed EAS workflow

If I wanted to just add pod ‘ZoomVideoSDK’, ‘1.6.2’ to the pod file (or copy it in and embed/sign locally) so that it includes that xcframework because the npm @zoom/react-native-videosdk@1.6.2 asks you to link it manually and I want to stay in EAS. How would I do that? Are there any good plugin examples someone can point me to?

Thank you,

Ray.

You may be able to write a config plugin with the withXcodeProject mod that adds the xcframework directly to your project, but another way to do this would be to make a module whose only job is to add this xcframework file and let autolinking do its job. You could start with a template like you get when creating a module with the Expo Modules API, but you’ll be deleting/ leaving a lot blank (there wouldn’t be any interface to expose to React Native, or at least the interface would be empty). In the podspec file, you’ll have a line like:

s.vendored_frameworks = ['path/to/framework.xcframework']

Vendors who have requirements like this generally would frown against you publicly hosting such a package, and may even have terms against committing the file, so I’m just saying in general how you would include an xcframework like this; I don’t know what this vendor allows or doesn’t allow. To keep such a setup private, this could work well in a monorepo setup, where this extra package is wholly internal to your repo and thus gets uploaded when you run an EAS Build, and thus you wouldn’t need a separate private NPM package.

2 Likes

Thank you very much for the response. I definitely don’t plan on publicly hosting a package going behind zoom’s back. I’ve asked in their forums about expo support for the RN library and got a simple reply that they’re taking the question to their Video SDK developers.

i’m going to try setting up a config plugin to locally include the framework. Is there any documentation, or an example, on using “withXcodeProject” to add an xframework to embed & sign in the “Frameworks, Libraries, and Embedded Content” section of General Xcode project settings? The documentation I’ve been reading [Config Plugins - Expo Documentation] seems to only expose its use for changing a string value for product name.

I’ve been able to manually do all this with expo prebuild and then opening the xcode workspace project and working from there, but again the goal here is to get everything on EAS.

withXcodeProject exposes XcodeUtils with some functions for modifying the file, including an addFramework function. You can see what’s available here. expo-notifications and expo-splash-screen are two packages that modify the xcode project that may be good to look at for examples.

1 Like

Thank you for the information. I was able to add the framework programmatically this way. The addFramework documentation is no where to be found though, it won’t pay attention to the “embed” parameter. So I have to manually still update the “embed & sign” status of the framework in Xcode. Also EAS was throwing a lot of errors around being able to find it and sign it in the correct architecture. On local though the following works for getting it setup.
Screenshot 2023-03-09 at 3.07.48 PM

npx expo prebuild; cd ios; arch -x86_64 pod install;

I guess i’m stuck outside of the EAS system for now until the documentation / plugin system gets more robust (or zoom supports expo with its video lib). I’ve found I need to work with VOIP notifications and PushKit / CallKit (react-native-voip-push-notification and react-native-callkeep libraries to be exact) which require a lot of custom AppDelegate modifications and permission updates. So there are a few other blockers here that would need a significant plugin setup.

Hi @rayelwardth

You can also try asking on the config plugins channel on Discord: https://chat.expo.dev