Skip to main content
Solved

[Expo] How to use with multiple app variants


Forum|alt.badge.img

I recently started using multiple app variants workflow as described here https://docs.expo.dev/tutorial/eas/multiple-app-variants/ 

So basically for development and production it will have have different bundle identifier.

For example
Development Build: com.yourname.stickersmash.dev
Production Build: com.yourname.stickersmash

I had configured everything and it worked great for com.yourname.stickersmash . So the question is to support both dev/production build with same codebase, how should I configure revenuecat? What’s the good practice?

Do i need to create another app in revenuecat dashboard , everything exactly same except the “Google Play package” and “App Bundle ID” ??


Note: after building with com.yourname.stickersmash.dev I’m having error, ofcourse it should have error as in revenuecat dashboard is configured as com.yourname.stickersmash

The error : [RevenueCat] 😿‼️ Error fetching offerings - PurchasesError(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

Best answer by guilherme

Hey ​@cjmling,

RevenueCat identifies apps by their bundle ID (iOS) and package name (Android). Because your builds use different identifiers, it will treat them as two entirely separate apps. To support both development and production variants properly, you should:

  • create a separate app (can be in the same Project) in the RevenueCat dashboard for your development variant and

    • set its bundle/package ID to match the development build;

    • configure it with its own API key.

  • duplicate your product, entitlement, and offering setup across both:

    • RevenueCat Dashboard

      • create the same products, entitlements, and offerings in each RevenueCat app.

    • App Store Connect / Google Play Console

      • manually recreate the same in-app products (same identifiers) for the dev bundle/package ID. Even though the apps may not be published, the products must exist and match exactly.

  • in your app code, use the appropriate API key depending on which variant is being built;

  • register the dev variant's bundle/package ID with the App Store and Play Console:

    • these can be unpublished "test-only" apps, but they must exist and match the ID used at build time.

    • otherwise, store receipt validation will fail.

A single RevenueCat app with conditional bundle/package switching won’t work reliably. RevenueCat and the stores both enforce a one-to-one mapping between app identifier and purchase validation. What you’re seeing with the ConfigurationError is expected when the bundle/package ID doesn’t match what’s configured in the dashboard.

There’s no supported way to handle multiple bundle/package IDs within a single RevenueCat app. Each variant needs its own entry and configuration.

While it requires some duplication, this setup is considered best practice:

  • keeps test and production data separate.

  • prevents test purchases from polluting production metrics.

  • simplifies debugging and validation across environments.

  • future-proofs your setup for additional environments (e.g., staging, QA, regional builds).

Best,

View original
Did this post help you find an answer to your question?

2 replies

guilherme
RevenueCat Staff
Forum|alt.badge.img+4
  • RevenueCat Staff
  • 60 replies
  • Answer
  • June 18, 2025

Hey ​@cjmling,

RevenueCat identifies apps by their bundle ID (iOS) and package name (Android). Because your builds use different identifiers, it will treat them as two entirely separate apps. To support both development and production variants properly, you should:

  • create a separate app (can be in the same Project) in the RevenueCat dashboard for your development variant and

    • set its bundle/package ID to match the development build;

    • configure it with its own API key.

  • duplicate your product, entitlement, and offering setup across both:

    • RevenueCat Dashboard

      • create the same products, entitlements, and offerings in each RevenueCat app.

    • App Store Connect / Google Play Console

      • manually recreate the same in-app products (same identifiers) for the dev bundle/package ID. Even though the apps may not be published, the products must exist and match exactly.

  • in your app code, use the appropriate API key depending on which variant is being built;

  • register the dev variant's bundle/package ID with the App Store and Play Console:

    • these can be unpublished "test-only" apps, but they must exist and match the ID used at build time.

    • otherwise, store receipt validation will fail.

A single RevenueCat app with conditional bundle/package switching won’t work reliably. RevenueCat and the stores both enforce a one-to-one mapping between app identifier and purchase validation. What you’re seeing with the ConfigurationError is expected when the bundle/package ID doesn’t match what’s configured in the dashboard.

There’s no supported way to handle multiple bundle/package IDs within a single RevenueCat app. Each variant needs its own entry and configuration.

While it requires some duplication, this setup is considered best practice:

  • keeps test and production data separate.

  • prevents test purchases from polluting production metrics.

  • simplifies debugging and validation across environments.

  • future-proofs your setup for additional environments (e.g., staging, QA, regional builds).

Best,


Forum|alt.badge.img
  • Author
  • New Member
  • 1 reply
  • June 26, 2025

@guilherme When you says “register the dev variant's bundle/package ID with the App Store and Play Console:” , By “register” you mean i have to add/create new app in each store using the dev build right?


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings