feat: align plugin with SDK v6 GA (iOS 6.0.0, Android 6.0.1, Flutter 6.0.0) - #25
Merged
Conversation
|
| Filename | Overview |
|---|---|
| purchasely/commands/migrate.md | Updates the target version but leaves the command hint inconsistent with its five-platform scope. |
| CLAUDE.md | Adds an exhaustive release process while leaving an older, conflicting manifest checklist in place. |
| purchasely/references/android/api-reference.md | Adds Android 6.0.1 APIs and behavior, including an incomplete theme initialization example. |
| purchasely/references/android/migration-v6.md | Updates Android dependency, toolchain, interceptor, synchronization, and removed-API guidance. |
| purchasely/references/sdk-versions.md | Centralizes the distinct GA and release-candidate versions for all supported platforms. |
| purchasely/references/concepts/12-month-commitment.md | Adds guidance for Apple commitment plans, Google installments, pricing tags, and webhook events. |
| purchasely/references/concepts/web-checkout.md | Adds Stripe Payment Link action, targeting, interception, and event guidance. |
| purchasely/references/concepts/rendering-engine.md | Documents native rendering, decoding, image caching, Lottie integration, and known limitations. |
Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 3
purchasely/commands/migrate.md:3
**Migration Hint Excludes Supported Targets**
The command now supports five platforms, but this hint still accepts only Android and iOS and uses Android's `6.0.1` as the shared target. Flutter, React Native, and Cordova users are excluded, while non-Android users are directed to a version that does not match the platform-specific pins documented by this PR.
```suggestion
argument-hint: "[platform: android|ios|flutter|react-native|cordova] [from:5.x] [to:6.x]"
```
### Issue 2 of 3
CLAUDE.md:20-21
**Release Checklists Still Conflict**
This section declares the nine-manifest list exhaustive, but the earlier release rule at line 11 still instructs maintainers to bump only `.claude-plugin/plugin.json` and `package.json`. Following that first checklist can still publish mismatched Cursor, marketplace, nested plugin, and Gemini versions.
### Issue 3 of 3
purchasely/references/android/api-reference.md:40
**Theme Example Is Not Runnable**
The newly documented `themeMode` call uses `...` instead of the Android parameter type or a valid enum value. A developer copying this initialization example gets a compile error and the surrounding text does not provide enough information to construct the required argument.
Reviews (1): Last reviewed commit: "docs(changelog): record v6 GA alignment ..." | Re-trigger Greptile
macminisupport
approved these changes
Jul 23, 2026
…ance Bump all five skills to the real v6 GA pins (iOS 6.0.0, Android 6.0.1, Flutter 6.0.0, React Native/Cordova 6.0.0-rc.3), correct the React Native allowDeeplink default (true everywhere, no RN exception), clarify that returning SUCCESS from the purchase/restore interceptor already auto-synchronizes (no manual synchronize() call needed inside it), and update removed-API attributions (iOS showController / displaySubscriptionCancellationInstruction, Android subscriptionsFragment, stale rc-era interceptAction import). Also updates the /purchasely:migrate command's argument-hint example to a real GA version. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Update the per-platform references (android, ios, flutter, cordova, react-native, sdk-versions.md) to the real v6 GA pins: native iOS 6.0.0 (SPM primary, CocoaPods ~> 6.0), native Android 6.0.1 (rc.1 -> rc.2 -> rc.3 -> 6.0.1, never a 6.0.0 tag), Flutter 6.0.0 stable on pub.dev (embeds iOS 6.0.0 / Android core 6.0.1), React Native and Cordova 6.0.0-rc.3. Also corrects factual issues found during the bump: Kotlin 2.3.21 toolchain, themeMode() available on the Android DSL/Builder since 6.0.1, iOS 13.4+ framed as inherited from 5.x (not a v6 change), removed-API attribution (iOS never had presentSubscriptions(), Android's setDefaultPresentationDismissHandler never had a ResultHandler variant), and PLY-prefixed Flutter Dart types in code samples. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e guidance Update the shared concept and troubleshooting references for v6 GA: make clear that synchronize() inside the purchase/restore interceptor is redundant (SUCCESS already auto-synchronizes) and reserve manual calls for out-of-interceptor purchases (BYOS, custom sell screens); remove the React Native allowDeeplink false-by-default exception (defaults to true on every v6 platform); fix a dead anchor in debug-mode.md; switch Flutter code samples to PLY-prefixed Dart types; and add new known-issues/troubleshooting entries surfaced during the v6 GA audit (Lottie silent failure, stuck purchase spinner, Flutter display() hang, Indonesian locale pre-6.0.1, PRESENTATION_VIEWED eviction pre-rc.3, iPad campaign-close freeze, iOS 18.4/18.5 DEBUG image-cache bypass, video autoplay bug). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three new reference pages, indexed in concepts/README.md:
- rendering-engine.md: how a Screen actually renders (iOS UIKit
component tree + tolerant Safe<T> decoding, Android Views/fat-AAR,
image cache, Lottie bridge) and known rendering bugs.
- 12-month-commitment.md: Apple "Monthly with 12-Month Commitment",
Google native installment subscriptions, {{MONTHLY_AMOUNT}} pricing
tags, INSTALLMENT_* webhooks.
- web-checkout.md: Stripe Payment Links via the webCheckout action,
audience targeting, WEB_CHECKOUT_* events.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… files - CLAUDE.md: add a "Release process" section (release directly on main, no PR; exhaustive manifest-bump list including the previously missed gemini-extension.json; bare-SemVer tags; default to minor/patch bumps). - README.md, AGENTS.md, GEMINI.md, purchasely/hooks/intro.md: list all five platforms (native iOS, native Android, Flutter, React Native, Cordova) as in scope for purchasely-migrate instead of just three. - README.md: bump the Supported Platforms table to the v6 GA pins and document the full manifest-bump list in the release checklist. - gemini-extension.json: bump version to 2.0.0-rc.6 to match every other manifest (was stale at 1.1.0). - CONTRIBUTING.md: swap a doc-example API call. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PR #24 (merged to main) and PR #25 each added a concept doc for the same subject: monthly-commitment.md (Apple advance commitment, iOS-only) and 12-month-commitment.md (cross-platform Apple + Google installments). Merge everything from 12-month-commitment.md into monthly-commitment.md — Google Play native installment subscriptions, cross-platform scope (SDK 6.0+ on iOS/Flutter/RN/Cordova) for the Apple commitment fields, Screen Composer pricing tags, interceptor fields (params.billingPlanType / plan.commitmentInfo), INSTALLMENT_PAID/INSTALLMENT_REFUNDED webhooks, and commitment_* attributes. Corrects the now-false "iOS only" applies-to line (the Apple advance-commitment purchase mechanism stays iOS-only; the concept itself covers both stores) and delete the duplicate file. Updates every remaining reference: concepts/README.md (resolved during the rebase), CHANGELOG.md, ios/api-reference.md, concepts/web-checkout.md, and purchasely-sdk-expert/SKILL.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kherembourg
force-pushed
the
feat/v6-ga-alignment
branch
from
July 23, 2026 09:20
2542b8a to
67930e7
Compare
- migrate.md: argument-hint now lists all 5 supported platforms (android|ios|flutter|react-native|cordova) with a neutral `to:6.x` instead of Android's `6.0.1`, which incorrectly implied a single shared target version across platforms. - CLAUDE.md: CHANGELOG-section release rule no longer duplicates a stale 2-manifest list; it now points to the Release process section's exhaustive 9-manifest checklist as the single source of truth. - android/api-reference.md: themeMode() examples use a real PLYThemeMode.SYSTEM value (plus its import) instead of `...`, and the method table documents the enum values/default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Audit source: Purchasely repos
iOS(develop),Android(main),Flutter(main),Documentation(v6.0 branch), plus published npm/pub.dev/CocoaPods/Maven metadata.Version pins → GA
6.0.0(stable GA) — SPM primary (from: "6.0.0"), CocoaPods~> 6.0.6.0.1(stable GA) — chronologyrc.1 → rc.2 → rc.3 → 6.0.1, no6.0.0tag was ever cut.6.0.0(stable on pub.dev) — embeds native iOS6.0.0+ Android core6.0.1.6.0.0-rc.3(npmlatest).6.0.0-rc.3(npm dist-tagnext;latestis still5.7.3).Factual fixes
synchronize()is never called from inside the purchase/restore interceptor — returningSUCCESSalready auto-synchronizes in Observer mode; manual calls are reserved for purchases handled outside the interceptor (BYOS, custom sell screens).allowDeeplinkdefaults totrueon every v6 platform — removed the last remaining "RN defaults to false" exceptions (purchasely-reviewSKILL.md andcampaigns.mdanti-patterns still had them).presentSubscriptions()(v5 entry point wasshowController/PLYUIControllerType); Android's real removal issubscriptionsFragment();displaySubscriptionCancellationInstruction()is removed, not a no-op.setDefaultPresentationDismissHandlernever had aResultHandlervariant (Android always used that name; only iOS renamed to it in v6).2.3.21;themeMode()documented as available on both the Android DSL and Builder since6.0.1.13.4+deployment target reframed as inherited from the 5.x SDK, not a v6 change.New references
references/concepts/rendering-engine.md— iOS UIKit component tree + tolerantSafe<T>decoding, Android Views/fat-AAR, image cache, Lottie bridge, known rendering bugs.references/concepts/12-month-commitment.md— Apple "Monthly with 12-Month Commitment", Google native installments,{{MONTHLY_AMOUNT}}pricing tags,INSTALLMENT_*webhooks.references/concepts/web-checkout.md— Stripe Payment Links via thewebCheckoutaction, audience targeting,WEB_CHECKOUT_*events.New debug/review material
purchasely-debug/support-known-issues.md: Lottie silent failure, stuck purchase spinner, Flutterdisplay()hang, Indonesian locale pre-6.0.1,PRESENTATION_VIEWEDeviction pre-rc.3, iPad campaign-close freeze, iOS 18.4/18.5 DEBUG image-cache bypass, video autoplay bug.interceptActionimport, Androidclose()-closes-all semantics,oneSignalPlayerIdremoval,allowCampaignsdefault flip.Repo hygiene
gemini-extension.jsonversion aligned with every other manifest (was stuck at1.1.0).purchasely-migratecoverage corrected to all 5 platforms inREADME.md,AGENTS.md,GEMINI.md, andhooks/intro.md(previously listed only 3).CLAUDE.md(direct-to-main releases, exhaustive manifest-bump checklist, bare-SemVer tags).npx --yes skills add . --listconfirmed:Found 5 skills.Test plan
rg-equivalent sweep for stale6.0.0-rc.1/6.0.0-rc.2active pins — none remain outside legitimate chronology/historical mentions and CHANGELOG.allowDeeplinkfalse-by-default exceptions.presentSubscriptions()mentions all correctly scoped to Flutter/RN/Cordova (or explicit "iOS never had this").synchronize()call sites — none inside an interceptor without a "do not call here" caveat.setDefaultPresentationResultHandler,readyToOpenDeeplink,setPaywallActionsInterceptor,io.purchasely.ext.interceptAction) all properly labeled as v5/legacy/detection patterns.sdk-versions.md/ 5SKILL.mdfiles / rootREADME.mdcross-checked for consistent pins.concepts/README.md, and contain no wrapper-required language.npx --yes skills add . --list→Found 5 skills.CHANGELOG.md[Unreleased]reconciled against the actual diff.🤖 Generated with Claude Code