Storefront Country Code Inaccuracy on iOS 18

I am currently developing a feature to support global privacy compliance, which relies on accurately obtaining the user’s App Store country/region. Based on this country/region information, out App dynamically display privacy policies that comply with local regulations.

To retrieve this information, I use the relevant StoreKit APIs.

API usage examples:

Objective-C:

NSString *countryCode = [SKPaymentQueue defaultQueue].storefront.countryCode;

Swift

let storefront = await Storefront.current let code = storefront?.countryCode

However, during sandbox account testing on iOS 18.0 and above, I noticed that the returned country code does not match the actual country/region configured in the sandbox Apple ID. This issue does not occur on systems below iOS 18.0, where the country code returned by the API matches the account setting.

Since this discrepancy can directly affect the accuracy of our compliance logic, I would appreciate your clarification on the following points:

  1. Is this a known change in behavior for iOS 18?

  2. In production environments, does the country code returned by the above APIs accurately reflect the App Store region of the user’s signed-in Apple ID?

  3. Is there a recommended approach to reliably obtain the user’s App Store account country/region?

For more information, see the Storekit, how to change and retrieve current user storefront thread.

Storefront Country Code Inaccuracy on iOS 18
 
 
Q