Hey, I have implemented the RevenueCat with my Expo / React Native app. Everything is working correctly except when I invoke the paywall, instead of my published one - I just see the default RevenueCat paywall. I checked logs and it looks like this:
09-27 21:38:21.900 3704 3704 E [Purchases]: Missing string localization for property with id: 'VFL_T8xgne', for locale: 'en_US'.
09-27 21:38:21.900 3704 3704 E [Purchases]: Missing string localization for property with id: 'VFL_T8xgne', for locale: 'en_US'.
09-27 21:38:21.900 3704 3704 E [Purchases]: Missing string localization for property with id: '0B1RuOuUwn', for locale: 'en_US'.
09-27 21:38:21.900 3704 3704 E [Purchases]: Missing string localization for property with id: '0B1RuOuUwn', for locale: 'en_US'.
09-27 21:38:21.900 3704 3704 E [Purchases]: Displaying default template due to validation errors.
09-27 21:38:21.913 3704 3704 W [Purchases]: Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.
09-27 21:38:21.915 3704 3704 W [Purchases]: Could not process value for variable 'sub_offer_duration' for package '$rc_monthly'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.
However, I downloaded my localisation CSV and I do not see the VFL_* property at all.
I am unsure why 0B1RuOuUwn is showing an error as the field is populated according to the CSV. There are no other relevant logs:
DEBUG [RevenueCat] ℹ️ Listener set
DEBUG [RevenueCat] ℹ️ Syncing purchases
DEBUG [RevenueCat] ℹ️ Querying purchases
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
LOG RevenueCat customer info: {"activeSubscriptions": [], "allExpirationDates": {}, "allExpirationDatesMillis": {}, "allPurchaseDates": {}, "allPurchaseDatesMillis": {}, "allPurchasedProductIdentifiers": [], "entitlements": {"active": {}, "all": {}, "verification": "NOT_REQUESTED"}, "firstSeen": "2025-09-27T15:31:20.000Z", "firstSeenMillis": 1758987080000, "latestExpirationDate": null, "latestExpirationDateMillis": null, "managementURL": null, "nonSubscriptionTransactions": [], "originalAppUserId": "$RCAnonymousID:78cf09d6321a492dbec0a5a20cb08d09", "originalApplicationVersion": null, "originalPurchaseDate": null, "originalPurchaseDateMillis": null, "requestDate": "2025-09-27T19:34:53.227Z", "requestDateMillis": 1759001693227, "subscriptionsByProductIdentifier": {}}
DEBUG [RevenueCat] ℹ️ Vending Offerings from cache
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
LOG Storage services initialized successfully
LOG Current offering: {"annual": {"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-yearly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 52.99, "pricePerMonth": 4415833, "pricePerMonthString": "A$4.42", "pricePerWeek": 1016246, "pricePerWeekString": "A$1.02", "pricePerYear": 52990000, "pricePerYearString": "A$52.99", "priceString": "$52.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1Y", "title": "SnapnEat Subscription (Snap n Eat)"}}, "availablePackages": [{"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": [Object], "product": [Object]}, {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": [Object], "product": [Object]}], "identifier": "default", "lifetime": null, "metadata": {}, "monthly": {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-monthly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 15.99, "pricePerMonth": 15990000, "pricePerMonthString": "A$15.99", "pricePerWeek": 3679890, "pricePerWeekString": "A$3.68", "pricePerYear": 191880000, "pricePerYearString": "A$191.88", "priceString": "$15.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1M", "title": "SnapnEat Subscription (Snap n Eat)"}}, "serverDescription": "The standard set of offerings", "sixMonth": null, "threeMonth": null, "twoMonth": null, "weekly": null}
LOG Storage services initialized successfully
LOG Auth state changed: INITIAL_SESSION Session exists
LOG Auth state changed: INITIAL_SESSION Session exists
LOG goog_ZepLwxJJTHgsnxZSLTrSGWhzQlq
LOG [RevenueCat Debug] Starting syncPurchases
INFO [RevenueCat] Purchases instance already set with the same configuration. Ignoring duplicate call.
DEBUG [RevenueCat] ℹ️ Listener set
DEBUG [RevenueCat] ℹ️ Syncing purchases
DEBUG [RevenueCat] ℹ️ Querying purchases
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
LOG RevenueCat customer info: {"activeSubscriptions": [], "allExpirationDates": {}, "allExpirationDatesMillis": {}, "allPurchaseDates": {}, "allPurchaseDatesMillis": {}, "allPurchasedProductIdentifiers": [], "entitlements": {"active": {}, "all": {}, "verification": "NOT_REQUESTED"}, "firstSeen": "2025-09-27T15:31:20.000Z", "firstSeenMillis": 1758987080000, "latestExpirationDate": null, "latestExpirationDateMillis": null, "managementURL": null, "nonSubscriptionTransactions": [], "originalAppUserId": "$RCAnonymousID:78cf09d6321a492dbec0a5a20cb08d09", "originalApplicationVersion": null, "originalPurchaseDate": null, "originalPurchaseDateMillis": null, "requestDate": "2025-09-27T19:34:53.227Z", "requestDateMillis": 1759001693227, "subscriptionsByProductIdentifier": {}}
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
DEBUG [RevenueCat] ℹ️ Vending Offerings from cache
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
LOG Current offering: {"annual": {"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-yearly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 52.99, "pricePerMonth": 4415833, "pricePerMonthString": "A$4.42", "pricePerWeek": 1016246, "pricePerWeekString": "A$1.02", "pricePerYear": 52990000, "pricePerYearString": "A$52.99", "priceString": "$52.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1Y", "title": "SnapnEat Subscription (Snap n Eat)"}}, "availablePackages": [{"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": [Object], "product": [Object]}, {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": [Object], "product": [Object]}], "identifier": "default", "lifetime": null, "metadata": {}, "monthly": {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-monthly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 15.99, "pricePerMonth": 15990000, "pricePerMonthString": "A$15.99", "pricePerWeek": 3679890, "pricePerWeekString": "A$3.68", "pricePerYear": 191880000, "pricePerYearString": "A$191.88", "priceString": "$15.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1M", "title": "SnapnEat Subscription (Snap n Eat)"}}, "serverDescription": "The standard set of offerings", "sixMonth": null, "threeMonth": null, "twoMonth": null, "weekly": null}
LOG Supabase user_preferences data: {"subscription_tier": "free", "trial_end_date": null, "trial_start_date": null}
LOG User subscription tier (from Supabase): free
LOG Supabase user_preferences data: {"subscription_tier": "free", "trial_end_date": null, "trial_start_date": null}
LOG User subscription tier (from Supabase): free
LOG Storage services initialized successfully
LOG Supabase user_preferences data: {"subscription_tier": "free", "trial_end_date": null, "trial_start_date": null}
LOG User subscription tier (from Supabase): free
LOG Storage services initialized successfully
LOG Presenting paywall with offering: {"annual": {"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-yearly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 52.99, "pricePerMonth": 4415833, "pricePerMonthString": "A$4.42", "pricePerWeek": 1016246, "pricePerWeekString": "A$1.02", "pricePerYear": 52990000, "pricePerYearString": "A$52.99", "priceString": "$52.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1Y", "title": "SnapnEat Subscription (Snap n Eat)"}}, "availablePackages": [{"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": [Object], "product": [Object]}, {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": [Object], "product": [Object]}], "identifier": "default", "lifetime": null, "metadata": {}, "monthly": {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-monthly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 15.99, "pricePerMonth": 15990000, "pricePerMonthString": "A$15.99", "pricePerWeek": 3679890, "pricePerWeekString": "A$3.68", "pricePerYear": 191880000, "pricePerYearString": "A$191.88", "priceString": "$15.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1M", "title": "SnapnEat Subscription (Snap n Eat)"}}, "serverDescription": "The standard set of offerings", "sixMonth": null, "threeMonth": null, "twoMonth": null, "weekly": null}
LOG Supabase user_preferences data: {"subscription_tier": "free", "trial_end_date": null, "trial_start_date": null}
LOG User subscription tier (from Supabase): free
DEBUG [RevenueCat] ℹ️ Vending Offerings from cache
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
LOG [RevenueCat] Caching paywall impression event.
DEBUG [RevenueCat] Tracking event: PaywallEvent(creationData=CreationData(id=8696955d-d08f-462c-acd4-a6d07a73da67, date=Sat Sep 27 21:38:21 GMT+02:00 2025), data=Data(offeringIdentifier=default, paywallRevision=3, sessionIdentifier=a80c02b0-2fe3-47f8-8dd1-0329dd97061f, displayMode=full_screen, localeIdentifier=en_US, darkMode=false), type=IMPRESSION)
LOG [RevenueCat] No Google Play in-app message was available.
LOG [RevenueCat] Clearing cached paywall impression event.
DEBUG [RevenueCat] Tracking event: PaywallEvent(creationData=CreationData(id=a3dba058-957f-4b2d-bbee-47487e19816c, date=Sat Sep 27 21:40:56 GMT+02:00 2025), data=Data(offeringIdentifier=default, paywallRevision=3, sessionIdentifier=a80c02b0-2fe3-47f8-8dd1-0329dd97061f, displayMode=full_screen, localeIdentifier=en_US, darkMode=false), type=CLOSE)
LOG User cancelled the paywall
LOG [RevenueCat] No Google Play in-app message was available.
LOG Auth state changed: TOKEN_REFRESHED Session exists
LOG Auth state changed: TOKEN_REFRESHED Session exists
LOG Auth state changed: TOKEN_REFRESHED Session exists
LOG goog_ZepLwxJJTHgsnxZSLTrSGWhzQlq
LOG [RevenueCat Debug] Starting syncPurchases
INFO [RevenueCat] Purchases instance already set with the same configuration. Ignoring duplicate call.
DEBUG [RevenueCat] ℹ️ Listener set
DEBUG [RevenueCat] ℹ️ Syncing purchases
DEBUG [RevenueCat] ℹ️ Querying purchases
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
DEBUG [RevenueCat] ℹ️ CustomerInfo cache is stale, updating from network in foreground.
DEBUG [RevenueCat] ℹ️ Updating pending purchase queue
LOG RevenueCat customer info: {"activeSubscriptions": [], "allExpirationDates": {}, "allExpirationDatesMillis": {}, "allPurchaseDates": {}, "allPurchaseDatesMillis": {}, "allPurchasedProductIdentifiers": [], "entitlements": {"active": {}, "all": {}, "verification": "NOT_REQUESTED"}, "firstSeen": "2025-09-27T15:31:20.000Z", "firstSeenMillis": 1758987080000, "latestExpirationDate": null, "latestExpirationDateMillis": null, "managementURL": null, "nonSubscriptionTransactions": [], "originalAppUserId": "$RCAnonymousID:78cf09d6321a492dbec0a5a20cb08d09", "originalApplicationVersion": null, "originalPurchaseDate": null, "originalPurchaseDateMillis": null, "requestDate": "2025-09-27T19:34:53.227Z", "requestDateMillis": 1759001693227, "subscriptionsByProductIdentifier": {}}
DEBUG [RevenueCat] ℹ️ Querying purchases
DEBUG [RevenueCat] Retrieving customer info with policy: CACHED_OR_FETCHED
DEBUG [RevenueCat] ℹ️ Vending CustomerInfo from cache.
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
DEBUG [RevenueCat] ℹ️ CustomerInfo cache is stale, updating from network in foreground.
DEBUG [RevenueCat] ℹ️ Updating pending purchase queue
DEBUG [RevenueCat] ℹ️ Querying purchases
DEBUG [RevenueCat] ℹ️ Cleaning previously sent tokens
DEBUG [RevenueCat] ℹ️ Tokens already posted: []
DEBUG [RevenueCat] ℹ️ Saving tokens []
DEBUG [RevenueCat] ℹ️ Tokens already posted: []
DEBUG [RevenueCat] ℹ️ No pending purchases to sync
DEBUG [RevenueCat] Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09], appInBackground=false)
DEBUG [RevenueCat] ℹ️ Cleaning previously sent tokens
DEBUG [RevenueCat] ℹ️ Tokens already posted: []
DEBUG [RevenueCat] ℹ️ Saving tokens []
DEBUG [RevenueCat] ℹ️ Tokens already posted: []
DEBUG [RevenueCat] ℹ️ No pending purchases to sync
DEBUG [RevenueCat] Same call already in progress, adding to callbacks map with key: BackgroundAwareCallbackCacheKey(cacheKey=[/v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09], appInBackground=false)
DEBUG [RevenueCat] Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09], appInBackground=false)
DEBUG [RevenueCat] ℹ️ Vending Offerings from cache
DEBUG [RevenueCat] ℹ️ Checking if cache is stale AppInBackground false
DEBUG [RevenueCat] ℹ️ Offerings cache is stale, updating from network in foreground
DEBUG [RevenueCat] 😻 Start Offerings update from network.
DEBUG [RevenueCat] Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09/offerings], appInBackground=false)
LOG Current offering: {"annual": {"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-yearly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 52.99, "pricePerMonth": 4415833, "pricePerMonthString": "A$4.42", "pricePerWeek": 1016246, "pricePerWeekString": "A$1.02", "pricePerYear": 52990000, "pricePerYearString": "A$52.99", "priceString": "$52.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1Y", "title": "SnapnEat Subscription (Snap n Eat)"}}, "availablePackages": [{"identifier": "$rc_annual", "offeringIdentifier": "default", "packageType": "ANNUAL", "presentedOfferingContext": [Object], "product": [Object]}, {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": [Object], "product": [Object]}], "identifier": "default", "lifetime": null, "metadata": {}, "monthly": {"identifier": "$rc_monthly", "offeringIdentifier": "default", "packageType": "MONTHLY", "presentedOfferingContext": {"offeringIdentifier": "default", "placementIdentifier": null, "targetingContext": null}, "product": {"currencyCode": "AUD", "defaultOption": [Object], "description": "", "discounts": null, "identifier": "paid_subscription:snapneat-monthly-plan", "introPrice": null, "presentedOfferingContext": [Object], "presentedOfferingIdentifier": "default", "price": 15.99, "pricePerMonth": 15990000, "pricePerMonthString": "A$15.99", "pricePerWeek": 3679890, "pricePerWeekString": "A$3.68", "pricePerYear": 191880000, "pricePerYearString": "A$191.88", "priceString": "$15.99", "productCategory": "SUBSCRIPTION", "productType": "AUTO_RENEWABLE_SUBSCRIPTION", "subscriptionOptions": [Array], "subscriptionPeriod": "P1M", "title": "SnapnEat Subscription (Snap n Eat)"}}, "serverDescription": "The standard set of offerings", "sixMonth": null, "threeMonth": null, "twoMonth": null, "weekly": null}
LOG Storage services initialized successfully
DEBUG [RevenueCat] API request started: GET /v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09
DEBUG [RevenueCat] API request completed with status: GET /v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09 304
DEBUG [RevenueCat] 😻 CustomerInfo updated from network.
DEBUG [RevenueCat] 😻 CustomerInfo updated from network.
DEBUG [RevenueCat] API request started: GET /v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09/offerings
DEBUG [RevenueCat] API request completed with status: GET /v1/subscribers/%24RCAnonymousID%3A78cf09d6321a492dbec0a5a20cb08d09/offerings 200
DEBUG [RevenueCat] ℹ️ Requesting products from the store with identifiers: paid_subscription
DEBUG [RevenueCat] ℹ️ Products request finished for paid_subscription
DEBUG [RevenueCat] 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"paid_subscription","type":"subs","title":"SnapnEat Subscription (Snap n Eat)","name":"SnapnEat Subscription","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC","subscriptionOfferDetails":[{"offerIdToken":"AWtSsBcPgt9zAOYgDK+Atd8MFRpwqXA7parWePP1mACJxorc2nR9zCN\/fqbdcCVofpggHHPEgaDHlRP0w4BzoAq+To1TADsRNElJ0MPvDA==","basePlanId":"snapneat-monthly-plan","pricingPhases":[{"priceAmountMicros":15990000,"priceCurrencyCode":"AUD","formattedPrice":"$15.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWtSsBe9ZxytyoVE9r+ovVexAUqeQM0rTgdgolsw9sREKxpC1LUHFT\/wvjdOey08Dec6osVfPGahIEa+++9eCtLy0K7Lhu\/S2X3WLEH3KQ==","basePlanId":"snapneat-yearly-plan","pricingPhases":[{"priceAmountMicros":52990000,"priceCurrencyCode":"AUD","formattedPrice":"$52.99","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"paid_subscription","type":"subs","title":"SnapnEat Subscription (Snap n Eat)","name":"SnapnEat Subscription","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC","subscriptionOfferDetails":[{"offerIdToken":"AWtSsBcPgt9zAOYgDK+Atd8MFRpwqXA7parWePP1mACJxorc2nR9zCN\/fqbdcCVofpggHHPEgaDHlRP0w4BzoAq+To1TADsRNElJ0MPvDA==","basePlanId":"snapneat-monthly-plan","pricingPhases":[{"priceAmountMicros":15990000,"priceCurrencyCode":"AUD","formattedPrice":"$15.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWtSsBe9ZxytyoVE9r+ovVexAUqeQM0rTgdgolsw9sREKxpC1LUHFT\/wvjdOey08Dec6osVfPGahIEa+++9eCtLy0K7Lhu\/S2X3WLEH3KQ==","basePlanId":"snapneat-yearly-plan","pricingPhases":[{"priceAmountMicros":52990000,"priceCurrencyCode":"AUD","formattedPrice":"$52.99","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]}]}, productId='paid_subscription', productType='subs', title='SnapnEat Subscription (Snap n Eat)', productDetailsToken='AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@af44c1c, com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@2dd2025]}
DEBUG [RevenueCat] 💰 paid_subscription - ProductDetails{jsonString='{"productId":"paid_subscription","type":"subs","title":"SnapnEat Subscription (Snap n Eat)","name":"SnapnEat Subscription","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC","subscriptionOfferDetails":[{"offerIdToken":"AWtSsBcPgt9zAOYgDK+Atd8MFRpwqXA7parWePP1mACJxorc2nR9zCN\/fqbdcCVofpggHHPEgaDHlRP0w4BzoAq+To1TADsRNElJ0MPvDA==","basePlanId":"snapneat-monthly-plan","pricingPhases":[{"priceAmountMicros":15990000,"priceCurrencyCode":"AUD","formattedPrice":"$15.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWtSsBe9ZxytyoVE9r+ovVexAUqeQM0rTgdgolsw9sREKxpC1LUHFT\/wvjdOey08Dec6osVfPGahIEa+++9eCtLy0K7Lhu\/S2X3WLEH3KQ==","basePlanId":"snapneat-yearly-plan","pricingPhases":[{"priceAmountMicros":52990000,"priceCurrencyCode":"AUD","formattedPrice":"$52.99","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"paid_subscription","type":"subs","title":"SnapnEat Subscription (Snap n Eat)","name":"SnapnEat Subscription","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC","subscriptionOfferDetails":[{"offerIdToken":"AWtSsBcPgt9zAOYgDK+Atd8MFRpwqXA7parWePP1mACJxorc2nR9zCN\/fqbdcCVofpggHHPEgaDHlRP0w4BzoAq+To1TADsRNElJ0MPvDA==","basePlanId":"snapneat-monthly-plan","pricingPhases":[{"priceAmountMicros":15990000,"priceCurrencyCode":"AUD","formattedPrice":"$15.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWtSsBe9ZxytyoVE9r+ovVexAUqeQM0rTgdgolsw9sREKxpC1LUHFT\/wvjdOey08Dec6osVfPGahIEa+++9eCtLy0K7Lhu\/S2X3WLEH3KQ==","basePlanId":"snapneat-yearly-plan","pricingPhases":[{"priceAmountMicros":52990000,"priceCurrencyCode":"AUD","formattedPrice":"$52.99","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]}]}, productId='paid_subscription', productType='subs', title='SnapnEat Subscription (Snap n Eat)', productDetailsToken='AEuhp4JGLgceH98F1etjGOj4JDAN5Rzxt-oJGox1OS9D1ZgAkO35iPTmkZhvEA5SmovC', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@af44c1c, com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@2dd2025]}
DEBUG [RevenueCat] ℹ️ Building offerings response with 1 products
LOG [RevenueCat] Offerings object created with 1 offerings
DEBUG [RevenueCat] OfferingImagePreDownloader: starting image download
DEBUG [RevenueCat] Pre-downloading Paywall V2 image: https://icons.pawwalls.com/filled-lock.webp
DEBUG [RevenueCat] Pre-downloading Paywall V2 image: https://icons.pawwalls.com/filled-bell.webp
DEBUG [RevenueCat] Pre-downloading Paywall V2 image: https://icons.pawwalls.com/filled-star.webp
DEBUG [RevenueCat] Pre-downloading Paywall V2 image: https://icons.pawwalls.com/x.webp
DEBUG [RevenueCat] Pre-downloading Paywall V2 image: https://icons.pawwalls.com/circle.webp
