Skip to content

Revert AIDL workaround for consumed consumables#3255

Merged
tonidero merged 4 commits into
mainfrom
remove-aidl-workaround
Apr 7, 2026
Merged

Revert AIDL workaround for consumed consumables#3255
tonidero merged 4 commits into
mainfrom
remove-aidl-workaround

Conversation

@tonidero

@tonidero tonidero commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

This reverts commit f452c66 PR #2872 .

Description

We're removing usage of this unofficial APIs. This will result in a behavior breaking change. Docs for the behavior: https://www.revenuecat.com/docs/known-store-issues/play-billing-library/restore-consumable-purchases-bc8


Note

Medium Risk
Behavior change for Google Play Billing v8 restores: consumed one-time purchases may no longer appear during restore since the unofficial AIDL getPurchaseHistory path is removed. Risk is limited to restore/purchase history behavior; no auth or backend data handling changes.

Overview
Reverts the unofficial AIDL integration used to fetch Play Store in-app purchase history. BillingWrapper.queryPurchaseHistoryAsync no longer conditionally queries IInAppBillingService.getPurchaseHistory and instead always runs QueryPurchaseHistoryUseCase.

This removes the aidl build feature and the ENABLE_QUERY_PURCHASE_HISTORY_AIDL build config flag, deletes the AIDL interface and google/history implementation (PurchaseHistoryManager + related models), and drops the associated unit tests that exercised the AIDL fallback behavior.

Reviewed by Cursor Bugbot for commit e8ec3aa. Bugbot is set up for automated code reviews on this repo. Configure here.

@tonidero tonidero added pr:breaking Changes that are breaking pr:fix A bug fix labels Mar 18, 2026
@codecov

codecov Bot commented Mar 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.20%. Comparing base (7272360) to head (e8ec3aa).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3255      +/-   ##
==========================================
- Coverage   79.48%   79.20%   -0.28%     
==========================================
  Files         357      352       -5     
  Lines       14352    14099     -253     
  Branches     1960     1939      -21     
==========================================
- Hits        11407    11167     -240     
+ Misses       2141     2136       -5     
+ Partials      804      796       -8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tonidero tonidero force-pushed the remove-aidl-workaround branch from 82d4bf1 to e20a71e Compare March 18, 2026 09:49
@tonidero tonidero marked this pull request as ready for review March 23, 2026 12:17
@tonidero tonidero requested a review from a team as a code owner March 23, 2026 12:17
@tonidero tonidero requested a review from a team March 23, 2026 12:17
@tonidero tonidero added this pull request to the merge queue Apr 7, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Apr 7, 2026
@tonidero tonidero enabled auto-merge April 7, 2026 14:38

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit e8ec3aa. Configure here.

import com.revenuecat.purchases.models.SubscriptionOption
import com.revenuecat.purchases.models.SubscriptionOptions
import com.revenuecat.purchases.strings.BillingStrings
import com.revenuecat.purchases.strings.PurchaseStrings

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Three unused imports added to test file

Low Severity

Three new imports were added to BillingWrapperTest.kt that are never used anywhere in the file: PurchaseStrings, mockQueryPurchases, and verifyQueryPurchasesCalledWithType. These appear to have been accidentally introduced during the revert.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit e8ec3aa. Configure here.

@tonidero tonidero added this pull request to the merge queue Apr 7, 2026
Merged via the queue into main with commit 0a8f99f Apr 7, 2026
36 checks passed
@tonidero tonidero deleted the remove-aidl-workaround branch April 7, 2026 17:35
@tonidero tonidero mentioned this pull request Apr 7, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Apr 8, 2026
## RevenueCat SDK
> [!WARNING]  
> If you don't have any login system in your app, please make sure your
one-time purchase products have been correctly configured in the
RevenueCat dashboard as either consumable or non-consumable. If they're
incorr as consumables, RevenueCat will consume these purchases. This
means that users won't be able to restore them from version 10.0.0
onward.
> Non-consumables are products that are meant to be bought only once,
for example, lifetime subscriptions. Please see more information in our
[docs](https://www.revenuecat.com/docs/known-store-issues/play-billing-library/restore-consumable-purchases-bc8)

### 💥 Breaking Changes
This release updates to Billing Library 8.3.0 with min SDK supported of
Android 6 (API 23), previously min was 21. It also removes a previous
workaround used to be able to restore consumed one time products which
is not available anymore.

* Update to Billing Library 8.3.0 (#3256) via Toni Rico (@tonidero)
* Revert AIDL workaround for consumed consumables (#3255) via Toni Rico
(@tonidero)

### 🔄 Other Changes
* Bump fastlane-plugin-revenuecat_internal from `6289be1` to `ceecf91`
(#3301) via dependabot[bot] (@dependabot[bot])
* Increase targetSdkVersion to 36 (#2446) via Toni Rico (@tonidero)
* [AUTOMATIC] Update golden test files for backend integration tests
(#3302) via RevenueCat Git Bot (@RCGitBot)
* Bump fastlane-plugin-revenuecat_internal from `5d6e93f` to `6289be1`
(#3299) via dependabot[bot] (@dependabot[bot])
* Bump fastlane-plugin-revenuecat_internal from `f11fe40` to `5d6e93f`
(#3294) via dependabot[bot] (@dependabot[bot])


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Primarily a release/version bump, but it ships documented breaking
changes (minSdk 23 via Billing Library 8.3.0 and removal of a restore
workaround) that can affect app compatibility and restore behavior.
> 
> **Overview**
> Bumps the project from `9.30.0-SNAPSHOT` to `10.0.0` across build
metadata (`.version`, `gradle.properties`, `Config.frameworkVersion`)
and sample/test app dependency pins.
> 
> Updates release documentation: adds `10.0.0` entries to
`CHANGELOG.md`/`CHANGELOG.latest.md` (including a warning and
breaking-change notes) and introduces `migrations/v10-MIGRATION.md`.
> 
> Adjusts docs publishing to serve `10.0.0` by updating
`docs/index.html` redirect and the CircleCI S3 sync path in
`docs-deploy`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
d18f479. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:breaking Changes that are breaking pr:fix A bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants