Repository navigation
Releases: InappifyLabs/flutter-sdk
Release list
Flutter SDK 0.2.7
Android now pins Kotlin v0.2.7, with Myket preparation/dispatch tracking, terminal proven pre-dispatch failures, and protection against late payment screens after timeout or close.
Pending Android purchases are reconciled after ten minutes while foreground and connected. Recovery preserves uncertain evidence and existing store/Direct fulfillment; it never starts a replacement payment or infers failure from empty inventory or elapsed time. Host applications must separately scope purchase journals by product; upgrading this SDK does not apply application patches.
Bazaar/Myket trial preflight requires the compatible backend purchase route's DONE/NEEDSTORE contract and native_purchase_attempts.is_trial_check migration before upgrading clients. iOS/Web payment behavior and the independent Web provider 0.2.0 remain unchanged.
Includes the updated official inappify-sdk agent skill and references. Install/update the whole skills/inappify-sdk folder. The Android store-specific packaging and JitPack artifact URL correction remain included.
Flutter SDK 0.2.6
Published inappify_sdk 0.2.6 on pub.dev, coordinated with Kotlin v0.2.6.
Set inappifyStore=myket or inappifyStore=bazaar in android/gradle.properties to include only that store billing implementation, dependencies and manifest components. allStores remains the default; direct includes neither native store. The plugin includes the required JitPack variant URL correction. Runtime API keys must still match the selected channel.
Updates the bundled inappify-sdk agent skill with version 0.2.6, store packaging, the older-version manifest workaround and direct Kotlin JitPack guidance.
Verified 408 Flutter tests, example test, analyzer, version metadata, zero-warning publish validation, and direct public JitPack compilation/manifest merging for Myket and Bazaar. iOS runtime and CocoaPods release metadata are aligned at 0.2.6. Real store purchases/device validation were not performed.
Guide: https://github.com/InappifyLabs/flutter-sdk/blob/v0.2.6/doc/ANDROID_STORES.md
Package: https://pub.dev/packages/inappify_sdk/versions/0.2.6
v0.2.5
Android now pins Kotlin v0.2.4, fixing size-related Myket payment-screen failures with compact purchase metadata while preserving full recovery and server purchase bindings. Older receipts and existing pending attempts remain supported.
Safe Myket callback codes and exception/stage categories are retained in native history. Oversized new contexts fail before billing. Bazaar, Direct, iOS/Web behavior and the channel protocol remain unchanged.
The bundled inappify-sdk skill is updated for Flutter 0.2.5 / Kotlin v0.2.4, including safe diagnostics, metadata-size failures, legacy receipt recovery and exactly-once fulfillment.
Validation: 408 SDK tests, 40 Chrome tests against Web provider 0.2.0, 49 Android bridge tests, example test, Android example/library build and Web build; static analysis completed without errors or warnings (existing informational diagnostics remain). Kotlin v0.2.4 passed 643 tests, CI and an independent public JitPack Debug/R8 build. A live Myket screen was opened and cancelled without payment; no paid end-to-end transaction or live Bazaar payment was performed. iOS simulator compilation requires macOS and was not performed on this Windows host.
Flutter SDK 0.2.4
Android now uses Kotlin SDK v0.2.3 for server-authoritative Myket recovery. Old, already-granted receipts can finish consumption without another entitlement extension or inventory grant. Flutter's public purchase/recovery APIs and native channel protocol v1 remain unchanged.
Subscriptions consume only after committed access; consumables consume only after confirmed delivery; recorded non-consumable purchases never consume. Bazaar, Direct, iOS and Web retain their existing behavior. Deploy the matching V2 commerce backend before upgrading clients.
The official skills/inappify-sdk integration skill is included with this release and the pub.dev package, with updated version references, legacy receipt recovery rules and safe failure diagnostics. Separately installed skill copies must be updated independently of the Flutter dependency.
Validation: 408 Flutter tests, Android bridge tests and the Android release example passed. GitHub CI passed for this tag, including Chrome provider tests, example tests, Web compilation, Android compilation and bridge tests against the published Kotlin dependency. Analysis has 62 existing informational lints and no errors or warnings. Kotlin's 633-test suite and release checks passed. Production deployment, live Myket purchases and an iOS simulator build were not performed in this Windows release session.
Install from pub.dev: inappify_sdk: ^0.2.4. Android resolves com.github.InappifyLabs:kotlin-sdk:v0.2.3.
Flutter SDK 0.2.3
Android now uses Kotlin SDK v0.2.2 to support manually renewed Myket timed subscriptions. Normal consumables and lifetime products keep their existing fulfillment behavior; Flutter purchase/recovery APIs and channel protocol v1 remain unchanged.
Configuration: use a consumable SKU in Myket, the matching SUBSCRIPTION product in Inappify, and the desired Offering package duration. Native Android consumes the receipt only after server verification and a committed entitlement grant. There is no automatic renewal and no host consumable-delivery callback for timed subscriptions.
Deploy the matching V2 commerce backend before upgrading clients: purchase/replay and verification-status responses must include requiresConsumption: true plus committed payment/event IDs. Missing authorization preserves the receipt for retry. Bazaar, Direct, iOS and Web retain their existing flows; this release does not add iOS/Web marketplace billing.
Validation: 408 Flutter tests passed. The Android release example built against the coordinated Kotlin artifact. Analysis has existing informational lints and no errors/warnings. Kotlin/backend regression suites passed. Real-device Myket purchases and production deployment have not been verified.
Install from pub.dev after publication: inappify_sdk: ^0.2.3.
Flutter SDK 0.2.2 — Web sync and CustomerInfo policies
Flutter Web now delegates syncAttributesAndOfferingsIfNeeded() to the existing
JavaScript session and forwards all four CustomerInfo fetch policies. Flutter's
default is explicitly CACHED_OR_FETCHED; cache-only reads do not wait for HTTP.
- Preserve the provider's five-call rolling 60-second allowance, same-session
cache fallback, failed-admission counting and retry timing. - Keep network failures as failures while retaining the last valid snapshot and
any successful customer refresh preceding an offerings failure. - Mirror background updates with ordered snapshots and protect newer customer
state from superseded or previous-account responses. - Retain sanitized provider error codes (
CACHE_MISS,RATE_LIMITED_NO_CACHE)
and numericretryAfterMillis, without copying raw error details. - Require
@inappifylabs/web-sdk0.2.0 or newer; probe actual combined-sync support.
Android remains pinned to Kotlin v0.2.1. Native purchase/cache/recovery behavior
and existing public method signatures are unchanged. - Update Web integration docs and the official agent skill for Flutter 0.2.2.
Validation: 408 Flutter SDK tests, 40 Chrome tests against the integrity-verified
published Web SDK 0.2.0 provider, and the example test pass. Dart analysis reports
no errors or warnings (existing informational lints remain). Browser tests use
controlled transport and clock inputs, with no live purchases or customer writes.
v0.2.1
Add persistent Android purchase-attempt tracking, iOS attribute/Offering synchronization, and Web discounts for a selected Offering.
- Expose typed
purchaseUpdates,event.purchaseAttempt,getPurchaseAttemptandgetPurchaseAttemptsfor correlated Android purchase and recovery outcomes, including Direct payments and app restart. - Implement iOS
syncAttributesAndOfferingsIfNeededthrough the existing attribute queue, storage, snapshots and events. Match Android's five-admission rolling-minute limit and current-session cache fallback. - Add optional named
offeringIdentifiertogetDiscountedPaymentLinksandgetDiscountedPaymentLinksResult. Web forwards the exact selection, rejects blank selectors and mismatched returned Offerings, and preserves its catalog. Android/iOS retain their code-only discount-link behavior. - Pin Android to Kotlin SDK
v0.2.1; align Flutter, iOS and runtime metadata at0.2.1. - Preserve existing purchase, cache, delivery and recovery contracts.
Validation: 398 Flutter SDK tests passed. Full static analysis passed with existing informational lints. Native validation is recorded in SDK CI.
Install: inappify_sdk: ^0.2.1.
Direct payment-attempt reconciliation also requires the coordinated Go/Laravel backend changes and migration described in the Kotlin release notes.
Inappify Flutter SDK 0.2.0
Version 0.2.0 aligns the Flutter facade and Android bridge with Kotlin SDK v0.2.0. This release contains breaking API changes; update integrations using the API reference.
- Configure with an API key and optional customer identifier; use
logIn,logOutand Map-based attributes. - Select current, placement-specific or named offerings and refresh with
syncAttributesAndOfferingsIfNeeded. - Purchase with Package-based parameters and use the four CustomerInfo fetch policies with
entitlements.allandentitlements.active. - Keep recovery internal and automatic. Rename manual reconciliation to
syncStorePurchasesandrestoreStorePurchases. - Add global log levels, custom handlers and native log forwarding without exposing credentials or raw HTTP bodies.
- Preserve the native purchase, durable delivery and cache/journal behavior. Add an optional local native repository for development with separate Gradle toolchains.
Android pins Kotlin SDK v0.2.0. The independent JavaScript provider version is unchanged.
Validation includes the Flutter test suite, static analysis, Android bridge tests and GitHub example build checks. A local Android Release APK was also built and its signature verified. Compilation does not certify live store transactions or backend deployment.
v0.1.1
Mobile login now uses the configured session without asking the host app to pass its public key again.
await InappifySdk.loginResult(appUserIdentifier: userId);Migration: remove the named apiKey: argument from login, loginResult and InappifyLoginRequest. Configure still requires the app public key. Web authentication continues to use Identity Tickets or OTP.
Android now pins Kotlin SDK v0.1.1 and calls its keyless login constructor. Flutter, the Dart/iOS runtime and CocoaPods metadata are aligned at 0.1.1. The separate JavaScript provider baseline remains @inappifylabs/web-sdk@0.1.0-beta.3.
dependencies:
inappify_sdk: ^0.1.1Validation: all 347 Flutter SDK tests pass locally; static analysis reports no errors or warnings (existing informational diagnostics remain). Release metadata and pub.dev package validation pass. GitHub Actions validates Flutter/example tests, Web compilation, Android compilation and native bridge checks. Live store/device payments and iOS compilation were not re-tested for this release.
Inappify Flutter SDK 0.1.0
First stable release of the Inappify Flutter SDK.
- Flutter package and Dart/iOS mobile SDK version:
0.1.0 - Android dependency:
com.github.InappifyLabs:kotlin-sdk:v0.1.0 - iOS uses the Dart V2 Direct implementation; Web uses the independently loaded JavaScript provider.
- Preserves the existing public API, platform capabilities and payment behavior.
Available on pub.dev as inappify_sdk 0.1.0. Install with inappify_sdk: ^0.1.0. The original Git tag v0.1.0 remains available. The remote paywall renderer remains display-only for payment actions; host applications must connect their purchase UI. See the platform guides for reconciliation, fulfillment and lifecycle requirements.
Validation: automated suites were not rerun for this metadata release. The pinned Kotlin v0.1.0 artifact was successfully built and published by JitPack before this Flutter release.
The pub.dev package includes the Apache-2.0 license and publication documentation from commit 95cc719. These documentation and licensing updates are on main; the original release tag has not been moved. Runtime behavior and the Kotlin dependency are unchanged.