Skip to main content

Hello 👋,

After nearly two years of using RevenueCat without any Problems, we started to get rejected during Play Store Reviews due to a ‘Broken Functionality Policy’ Violation.

After investigating the issue, it turned out that fetching Offerings from RevenueCat seems to fail on the devices used by the Google Play Reviewers. On those devices the following error is thrown:

PlatformException(23, There is an issue with your configuration. Check the underlying error for more details., {code: 23, message: There is an issue with your configuration. Check the underlying error for more details., readableErrorCode: ConfigurationError, readable_error_code: ConfigurationError, underlyingErrorMessage: There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store. More information: https://rev.cat/why-are-offerings-empty}, null)

The code for fetching the offerings from RevenueCat roughly looks like this

final Offerings offerings;

try {
offerings = await Purchases.getOfferings();
} on PlatformException catch (err, stackTrace) {
// error handling ...
// this is where we end up during Google Play Reviews
} on Exception catch (err, stackTrace) {
// more error handling ...
}

final offering = offerings.getOffering(_PREMIUM_SUBSCRIPTION_OFFERING_ID);

// continue with displaying the offering and so on ...

When testing ourselfes we were never able to cause this error (neither in Sandbox nor in Production), but for the Google Play Reviewers it seems to happen every time.

After digging deeper, we discovered, that the Google Play Reviews happen from 🇮🇳India, but our App is available in 🇩🇪Germany, 🇨🇭Switzerland, 🇦🇹Austria and 🇱🇺Luxembourg only. Accordingly we do not have subscriptions/base-plans/prices configured in the Play Console outside of those countries.

The objection by the Play Store Reviewers is that our app shows a Button that leads to the Paywall-Screen, but then on that screen, it is not possible to do anything, because no offering could be fetched. We do show an appropriate error message, but that doesn’t seem to solve the issue, we have to not show any button or other interactive element, that leads to the Paywall-Screen.

Questions

  • Is it intentional, that the Purchases.getOfferings() call fails in this situation? What we expected to happen is that it succeeds, but then offerings.getOffering(...) would return null to indicate that there is no offering. Or we might have expected it to return an Offering but then offering.availablePackages would be an empty list.
  • What is the intended way to solve this problem? I assume not many apps have offerings for all countries in the world, so maybe we overlooked something in the documentation?

Setup

  • Flutter 3.19.4
  • Dart 3.3.2
  • purchases_flutter 6.26.0

Potential Workaround

  • We will now try to catch the error mentioned above and then handle it in such a way that users receiving this error will simply not see any hint of our Paywall when using the app. I will add an answer to this post as soon as I know whether that makes the Google Play Reviewers happy.

Hey @Yegair 

Thank you for the detailed post! The error that is throwing is a configuration error but it can also be triggered when products can not be found - such as in the case of a user attempting to access your app from a country where it is not available. 

I am surprised that Google would give you a reviewer from a location that can not access your app. I’d recommend just making double, triple certain that India is not in your country list. If you’ve been unable to reproduce the Configuration/Empty Offerings error and everything on this guide looks correct for your app, I’d recommend resubmitting your build, perhaps with a notation about the limited country availability. 

Some developers in the past have enabled debug logs for the version that they share with the reviewer and requested that the reviewer send them back in order to gain further insight as to what the issue is. This could be worth a try as well. 

Good luck, let us know how it goes!


I did check the list of target countries again, but for all I know, with the following settings it should be unavailable in India


However, the workaround we applied did the trick. Catching the configuration error and preventing the paywall from showing up in such cases made us finally pass the review.

It still feels a little unsatisfactory, that we had to put in quiet a lot of effort to account for a problem, that will never show up in production. I have not yet found reports of other developers encountering the same problem, so I’m not sure whether we are just unlucky to get reviewers from countries where the app is not available, or if that is a common practice of Google to distribute the reviews in times of high load 🤔.