Play Billing Library: Smart Version-Specific Checklist

Use this checklist to verify that every technical requirement between your [Current Version] and [Target Version] has been met.

PBL v1.x through v3.x

  • [ ] [v1.0] Builder Pattern: Verify BillingClient.newBuilder(context) is used.
  • [ ] [v2.0] Mandatory Acknowledgment: Verify acknowledgePurchase() or consumeAsync() is called within 3 days.
  • [ ] [v2.0] Response Types: Logic must handle BillingResult objects instead of raw integers.
  • [ ] [v3.0] Legacy Removal: Verify ChildDirected and UnderAgeOfConsent parameters are deleted.

PBL v4.x Series

  • [ ] Async Purchasing: Confirm queryPurchases() is replaced with queryPurchasesAsync().
  • [ ] Multi-SKU Accessors: Replace getSku() with getSkus() (returns a list) in Purchase objects.
  • [ ] Subscription Refactor: Verify setSubscriptionUpdateParams() is used for change logic.

PBL v5.x Series

  • [ ] Data Model Swap: Replace all instances of SkuDetails with ProductDetails.
  • [ ] Personalized Pricing: Implement setIsOfferPersonalized() for EU price disclosures.

PBL v6.x Series

  • [ ] Replacement Mode: Replace ProrationMode with the ReplacementMode enum.
  • [ ] User Choice Billing: Replace AlternativeBillingListener with UserChoiceBillingListener.

PBL v7.x Series

  • [ ] SDK Compliance: compileSdk is set to 34 or higher.
  • [ ] Pending Purchases: Replace parameterless enablePendingPurchases() with enablePendingPurchases(PendingPurchaseParams).
  • [ ] API Cleanup: Replace setOldSkuPurchaseToken() with setOldPurchaseToken().

PBL v8.x Series

  • [ ] SDK Compliance: compileSdk is set to 34 or higher.
  • [ ] Terminology Shift: Rename "in-app items" to "one-time products" in UI/strings.
  • [ ] Signature Enforcement: onProductDetailsResponse signature MUST be (BillingResult, QueryProductDetailsResult).
  • [ ] SUBS Offer Token: For SUBS type, ProductDetailsParams MUST include an offerToken.
  • [ ] Auto-Reconnection: Verify enableAutoServiceReconnection() is used in the builder.
  • [ ] Min SDK Increase: Verify minSdkVersion is at least 23.

PBL v9.x Series

  • [ ] SDK Compliance: compileSdk is set to 35 or higher.
  • [ ] API Removals: Ensure all usages of SkuDetails, SkuDetailsParams, and SkuDetailsResponseListener are removed and replaced with their ProductDetails equivalents.
  • [ ] Blocked Store Error Handling: If targeting restricted device modes (e.g., kids modes), ensure androidx.core is at v1.9+ and update error logic to catch BILLING_UNAVAILABLE instead of ERROR.
  • [ ] External Payment Program Null-Safety: If using developer-provided billing, update DeveloperProvidedBillingDetails.getLinkUri() logic to explicitly check for both null and empty string ("") values before parsing.

Future Versions (PBL 10.0.0+)

  • [ ] Dynamic Checklist Generation: For any version >=10.0.0, you MUST synthesize a new checklist for each new version header found in the Release Notes.
  • [ ] Identify Version Delta: Review "Breaking Changes" and "Removed APIs" for the new version and create a list of terms to grep.