React Native, AppStore requests NSLocationAlwaysUsageDescription value
Simply remove RCTGeolocation.xcodeproj from your Libraries folder in the left panel of Xcode, if you are really positive you don't depend on any geo location. Removing .xcodeproj will unlink libs.
Apple scan your binary for any calls to privacy related APIs as they describe here.
From the list above, the method call that triggers the requirement of NSLocationAlwaysUsageDescription is CLLocationManager requestAlwaysAuthorization
. From a quick search of my RN 0.46 codebase, this call appears in react-native/Libraries/Geolocation/RCTLocationObserver.m
as well as in the react-native-permissions
so even if you don't call this code from the JS, the fact that it exists in the binary will cause Apple to flag it.
The easiest solution is just to add a plist entry for NSLocationAlwaysUsageDescription even though it won't ever appear to the user if you never ask for permission. I had this issue this morning uploading to the app store and after adding the flag, my app went through to review no problem.
Technically, unlinking libRCTGeolocation
from your Xcode project should also work, although I haven't tested this so I can't guarantee that your app will still run correctly.
As @TylerTheCompiler has pointed in the comments, it is working again. I've uploaded the same compilation again and now the app is accepted. So it has been an issue from Apple.