Skip to content

Feature request: call "BillingClient.showInAppMessages()" automatically #46

@Monabr

Description

@Monabr

Problem

Google Play Billing Library exposes BillingClient.showInAppMessages(), which displays a Google-rendered snackbar to subscribers in grace period or account hold. The snackbar contains a deep link to fix the payment method directly in Google Play.

According to Google's data, this single call produces a 2x increase in user recovery and growth in subscriber spend. It's one of the highest-ROI tools for reducing involuntary churn.

Currently, Adapty Android SDK doesn't call this API. As a developer using Adapty, I'd have to instantiate a second BillingClient myself just to make this one call — which feels like duplication of what the SDK should reasonably do for me.

Comparison

RevenueCat ships this since SDK v7 — they show Google Play's in-app messages automatically, with .showInAppMessagesAutomatically(false) to opt out. See their blog post.

Proposed API

An opt-in (or opt-out, your call) configuration on AdaptyConfig:

Adapty.activate(
    this,
    AdaptyConfig.Builder("PUBLIC_SDK_KEY")
        .withInAppMessagesEnabled(true) // or default true with .withInAppMessagesEnabled(false) to disable
        .build()
)

The SDK would then call showInAppMessages() on a suitable lifecycle event (e.g. when the host Activity resumes), using the TRANSACTIONAL category. Google handles the once-per-day cadence internally.

Why this fits Adapty

  • It directly improves the metrics Adapty already optimizes for (recovered subscriptions, reduced involuntary churn).
  • The billing_issue_detected_at profile field already exposes the same state — adding the recovery UI piece closes the loop.
  • It's a few lines of code, no UI to design (Google renders the snackbar).

Happy to discuss the API shape if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions