Skip to content

[in_app_purchase] Update to Google Play Billing Library 9.x #189974

Closed
flutter/packages
#12781

Description

@qeepcologne

Summary

Request to bump com.android.billingclient:billing from 8.0.0 to 9.1.0 in in_app_purchase_android.

Filing now rather than closer to a mandate, because the diff appears to be mechanical today and this work has historically compressed against the deadline when left late.

Why this should be a small change

v9 removes a set of APIs, and the plugin already uses none of them — 0.5.0 (7.1.1 → 8.0.0) removed the last one:

Removed in v9 Status in 0.5.2
queryPurchaseHistoryAsync, QueryPurchaseHistoryParams not used (removed in 0.5.0)
SkuDetails, SkuDetailsParams, SkuDetailsResponseListener, BillingClient.SkuType, get/setSkuDetailsList, querySkuDetailsAsync not used
no-arg enablePendingPurchases() uses enablePendingPurchases(PendingPurchasesParams) — BillingClientFactoryImpl.java:29
queryPurchasesAsync(String, PurchasesResponseListener) uses QueryPurchasesParams — MethodCallHandlerImpl.java:420-423

The ProductDetailsResponseListener.onProductDetailsResponse() signature change flagged on the v9 migration page was already absorbed by the 8.0.0 work — MethodCallHandlerImpl.java:255-263 uses the two-arg callback with QueryProductDetailsResult.

Minor and unrelated: a few dartdoc comments still reference the removed BillingClient.queryPurchaseHistory (purchase_wrapper.dart:189,338, billing_client_wrapper.dart:23,215).

What does need handling

  • Play Store blocked by the system (OEM kids mode) now reports BILLING_UNAVAILABLE instead of ERROR, and v9 requires androidx.core 1.9+. This surfaces to Dart through BillingResponse, so it is a visible behaviour change for apps.
  • targetSdkVersion 35.

Not part of a version bump, but worth tracking separately: sub-response codes on launchBillingFlow() (PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS, USER_INELIGIBLE) and automatic service reconnection.

Why now rather than at the mandate

#171523 (v8) was filed 2025-07-02 and landed 2026-06-03, under three months before the 2026-08-31 deadline. v9 has no mandate yet, so doing it now gives the behaviour change soak time across apps — instead of every app being moved onto a freshly released plugin version at once, on the payment path, under time pressure.

Activity

  1. stuartmorgan-g commented on Jul 24, 2026

    @stuartmorgan-g
    Contributor
    • v9 requires androidx.core 1.9+

    Sounds like this is blocked on #189862 then.

  2. added
    platform-androidAndroid applications specifically
    packageflutter/packages repository. See also p: labels.
    team-androidOwned by Android platform team
    on Jul 24, 2026
  3. jesswrd commented on Jul 28, 2026

    @jesswrd
    Contributor

    android 1.9+ is blocked by agp being below 9.1.0: #189381 (comment)

  4. added
    triaged-androidTriaged by Android platform team
    P2Important issues not at the top of the work list
    on Jul 28, 2026
  5. Macacoazul01 commented on Jul 30, 2026

    @Macacoazul01
    Contributor

    Is this expected to land with some time to develop an apk update before the 2026-08-31 deadline?
    We have a productive app that uses this plugin.

  6. stuartmorgan-g commented on Jul 31, 2026

    @stuartmorgan-g
    Contributor

    @Macacoazul01 The 2026-08-31 deadline is to use v8, which the plugin already does. This issue is about updating from v8 to v9.

  7. github-actions commented on Nov 2, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  8. locked as resolved and limited conversation to collaborators on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listp: in_app_purchasePlugin for in-app purchasepackageflutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyteam-androidOwned by Android platform teamtriaged-androidTriaged by Android platform team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions