Skip to content

Test mode on Android SDK 2.7.11 — productVariables empty for PlayStore products #401

@jcalven

Description

@jcalven

Hi team! Running into something that looks like a test-mode bug on Android and would love a sanity check before we dig deeper.

Per the Test Mode docs, test mode should pull product metadata from the dashboard. Test mode activates fine on our end and the device log
even confirms dashboard products were fetched (Test mode: loaded N products), but productVariables stays [] in the rendered paywall – every
product slot renders blank, no test-mode purchase drawer appears, and tapping purchase fires:

‼️ [paywallTransactions] ERROR: Trying to purchase (...) but the product has failed to load.


Setup on our side

  • superwallkit_flutter 2.4.12 → native superwall-android 2.7.11
  • TestModeBehavior.ALWAYS
  • Android 16, Pixel 8 Pro
  • 2 PlayStore-typed subscription products with full metadata (price, period, trial)
  • Entitlement linked bidirectionally to both products
  • Paywall published with snapshot promoted
  • Application bundle_id set on the dashboard

Log

ℹ️ [superwallCore] INFO: Test mode: loaded 5 products ← dashboard fetch succeeds
💬 [productsManager] DEBUG: Requesting products from the store...
💬 [productsManager] DEBUG: Retrieved productDetailsList: ← Play Billing returns empty (expected)
💬 [superwallCore] DEBUG: Template Logic: [..."products":[],"primary":{},"secondary":{},"tertiary":{}]
‼️ [paywallTransactions] ERROR: ... product has failed to load.

It looks like the SDK fetches dashboard products successfully, then also queries Play Billing, and ends up using the empty Play result for
the template substitution – ignoring the dashboard data it just loaded a moment earlier.

Also worth flagging: six of these warnings fire during paywall load, possibly related?

💬 [all] DEBUG: !! Warning: Unsupported type class java.util.ArrayList (Kotlin reflection is not available), skipping...


What we expected vs. what we see

Per the docs, dashboard products should populate productVariables and tapping a product should show the test-mode drawer. Instead the
dashboard fetch seems to be ignored and the empty Play Billing result is what actually drives the WebView.


Workaround we're using

Starting Entitlements → Subscribed in the config modal works for validating the already-entitled path, but it doesn't cover the
fresh-purchase flow which is what we'd really like to be able to test end-to-end.


Let us know if there's anything else helpful we can pull from our side. Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions