react-native-incall-manager in expo

I managed to make react-native-webrtc work with expo custom dev client.
I now have the problem that I need to keep the screen on, force the audio to loudspeakers and back and so on .
For that I would need to use react-native-incall-manager,
do you guys know what I have to do?

I have a slight feeling no one will ever reply to this.
It is my understanding that this might need a config plugin?
I’m not sure how to create one, I think the docs are a bit confusing (at least for me).
What baffles me is that, in case a config plugin is needed for this particular library, one was created for react-native-webrtc but no one was created for react-native-incall-manager which is almost essential for the former to do anything useful?

For this part at least you could use: KeepAwake - Expo Documentation

For the rest… I get the impression that react-native-incall-manager is not really given much attention. I don’t see any mention of auto-linking, (and I don’t know enough about linking/auto-linking to know if a library needs to specifically support auto-linking.) If auto-linking does work for this library then there are still a couple of things that it seems you might need a config plugin for:


  • android.permission.BLUETOOTH permission - you should be able to add it in app.json as for other permissions, so no config plugin needed for this.
  • “You should add compile "$YOUR_VERSION" in $YOUR_PROJECT/android/app/build.gradle dependencies on android.” - not sure if you need to do anything here. Maybe run expo prebuild in a test Expo app and check what android/app/build.gradle looks like to see if the above might be needed, or try this library out without worrying about this build.gradle change to see if it works. If you do need to make this change, a config plugin will be needed.
  • Optional sound files - If you want to do this you’d need to arrange to move/copy these files into place after the prebuild part of the build. Probably with the eas-build-post-install hook. (See also the Android build process)


  • Optional sound files - Not quite sure what the docs mean. I suppose they’re talking about dragging them into your project in Xcode or something like that. You would need a config plugin to do the equivalent thing.

So it looks to me like it might mostly work without needing a config plugin, but you might need one for the Android app/build.gradle change and if you want custom sound files you would need an EAS hook for Android and a config plugin for iOS.

Bluetooth isn’t listed as an available option for the “permissions” array

I’d give it a try anyway. Maybe also the full "android.permission.BLUETOOTH".
If it doesn’t work you might need a config plugin like this:

Do you know of anything built with expo custom dev clients and web rtc? Seems to me like to react-native-incall-manager is pretty essential for this kind of stuff?

Sorry, I don’t know of any Expo apps that make use of WebRTC. But anyway, it looks like react-native-incall-manager may not need a config plugin unless you want custom sounds on iOS. Maybe give it a try and see if it works?

I’ve already tried with no luck :frowning:

Could you elaborate on that? What happened when you tried?

Did you try on Android or iOS? Did it fail on both? Was it during the build or when you tried running the dev client or standalone app?