Ios – Error Appstore connect : Missing Purpose String in Info.plist File


I've submitted my app for review to the App Store Connect. Although the app is still under review, I've received an email to inform me that I have to fix an error. Here is the content of the message:

Dear Developer,

We identified one or more issues with a recent delivery for your app
XXXXX. Your delivery was successful, but you may wish to correct the
following issues in your next delivery:

"Missing Purpose String in Info.plist File. Your app's code
references one or more APIs that access sensitive user data. The
app's Info.plist file should contain a
NSLocationAlwaysUsageDescription key with a user-facing purpose
string explaining clearly and completely why your app needs the data.
Starting spring 2019, all apps submitted to the App Store that access
user data will be required to include a purpose string.If you're
using external libraries or SDKs, they may reference APIs that
require a purpose string. While your app might not use these APIs, a
purpose string is still required. You can contact the developer of
the library or SDK and request they release a version of their code
that doesn't contain the APIs.

After you’ve corrected the issues, you can use Xcode or Application
Loader to upload a new binary to iTunes Connect.

Best regards,

The App Store Team

My app is fully built with Expo and I don't know how to access and modify the Info.plist.

Any idea?

Best Solution

EDIT April 2019 : You now have to add these two keys, as spring 2019 has begun. Note that NSLocationAlwaysUsageDescription is now deprecated (since iOS 11) and has been replaced with NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription. If you want to support lower than iOS 11, you'll have to use the three values.

To sum up you have to:

  • Add NSLocationAlwaysAndWhenInUseUsageDescription AND NSLocationWhenInUseUsageDescription for iOS 11 and more
  • And add NSLocationAlwaysUsageDescription if you want to support iOS 10 and less
  • And finally, you can add NSLocationUsageDescription if you wan to support iOS 8 and less.

You can submit your app even if you got this message !

I’ve just faced the same issue yesterday, even if the app isn’t using the location functionality. It may be related to some framework included in the project that have this optional feature.

I can confirm that my app has been approved even without the NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription key in info.plist

Indeed, as Apple stated in the mail :

Starting spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.

So the only thing to do is to add this key (right now is better, so that you won’t forget) in you project so that it will be included in your next update.

Just add two new entries in your info.plist, with NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription as keys and a short description of why you use them as the value (even if you don’t really use them...).