Skip to content

Release 11.9.0 - #465

Merged
SpertsyanKM merged 11 commits into
mainfrom
release/11.9.0
Jul 21, 2026
Merged

Release 11.9.0#465
SpertsyanKM merged 11 commits into
mainfrom
release/11.9.0

Conversation

@SpertsyanKM

Copy link
Copy Markdown
Contributor

Release PR

What's New

— Added a separate purchaseOptionId field on Product and ProductStoreDetails for Google Play one-time products (basePlanId now stays dedicated to subscription base plans).
— Deprecated the Offerings API. Manage paywall products with Remote Configs instead.

SpertsyanKM and others added 11 commits July 17, 2026 15:50
Offerings are a legacy Qonversion feature superseded by Remote Configs.
Annotate the public `offerings()` method on both the `Qonversion` interface
and its `QonversionInternal` implementation with `@Deprecated` (Dart does not
inherit the annotation) and repoint the dartdoc link to the migration guide.

Behavior is unchanged; this only surfaces analyzer deprecation warnings and
points integrators to the Remote Configs migration guide. DTOs (QOfferings,
QOffering), version, CHANGELOG and pubspec are untouched.

Migration guide:
https://documentation.qonversion.io/docs/migrate-offerings-to-remote-configs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review follow-up: the interface dartdoc link label still read "Offerings"
while the URL already points to the migration guide. Renamed the label to
"Migrate Offerings to Remote Configs" for label/target consistency.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Offerings are being sunset in favor of Remote Configs. The sample app now
sources the product list solely from Qonversion.getSharedInstance().products().

- Delete offerings_screen.dart and its route/import in main.dart
- Remove offerings state (field, getter, setter) from app_state.dart
- Remove the Offerings menu entry from main_screen.dart

See: https://documentation.qonversion.io/docs/migrate-offerings-to-remote-configs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ample

chore(example): remove legacy Offerings flow from sample app
Add a dedicated purchaseOptionId field for one-time products, parsed from the bridge
map, mirroring basePlanId. basePlanId now carries the subscription base plan only
(null for one-time); purchaseOptionId carries the one-time purchase option (null for
subscriptions). Requires the sandwich/native version that emits purchaseOptionId.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Carry the split down to product.storeDetails for consistency with product: add a
purchaseOptionId field parsed from the bridge map, mirroring basePlanId (null for
one-time on the native side).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…onId)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…optionid-as-a-separate-sdk-field-split-from

DEV-1215: expose purchaseOptionId on Product
@SpertsyanKM SpertsyanKM added autocreated one-click-release Pull requests handled by the one-click release automation labels Jul 21, 2026
@SpertsyanKM
SpertsyanKM merged commit 3a1cde8 into main Jul 21, 2026
2 checks passed
@SpertsyanKM
SpertsyanKM deleted the release/11.9.0 branch July 21, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autocreated one-click-release Pull requests handled by the one-click release automation

Development

Successfully merging this pull request may close these issues.

3 participants