From 0cc345e337e924234c9047e6d569f4a284c2d063 Mon Sep 17 00:00:00 2001 From: test Date: Fri, 14 Aug 2026 15:06:05 +0900 Subject: [PATCH 1/2] docs(docs): add august release notes Document the compatibility, conformance, lifecycle, and release-integrity train with verified package versions and release links. --- .../docs/src/pages/docs/updates/releases.tsx | 230 ++++++++++++++++++ 1 file changed, 230 insertions(+) diff --git a/packages/docs/src/pages/docs/updates/releases.tsx b/packages/docs/src/pages/docs/updates/releases.tsx index 03e67510a..a4dcf751d 100644 --- a/packages/docs/src/pages/docs/updates/releases.tsx +++ b/packages/docs/src/pages/docs/updates/releases.tsx @@ -70,6 +70,19 @@ const storeVerificationIntegrityReleases = [ ['OpenIap.Maui 2.3.0', 'maui-iap-2.3.0'], ] as const; +const compatibilityConformanceReleases = [ + ['OpenIAP Spec 3.2.1', 'docs-3.2.1'], + ['openiap-apple 3.2.1', '3.2.1'], + ['openiap-google 3.3.1', 'google-3.3.1'], + ['react-native-iap 16.3.1', 'react-native-iap-16.3.1'], + ['expo-iap 5.3.1', 'expo-iap-5.3.1'], + ['flutter_inapp_purchase 10.3.1', 'flutter-iap-10.3.1'], + ['godot-iap 3.3.1', 'godot-iap-3.3.1'], + ['kmp-iap 3.3.1', 'kmp-iap-3.3.1'], + ['OpenIap.Maui 2.3.1', 'maui-iap-2.3.1'], + ['openiap-conformance 1.0.1', 'openiap-conformance-1.0.1'], +] as const; + const dependencyModernizationReleases = [ ['openiap-google 3.1.0', 'google-3.1.0'], ['react-native-iap 16.1.0', 'react-native-iap-16.1.0'], @@ -214,6 +227,223 @@ function Releases() { useScrollToHash(); const allNotes: Note[] = [ + // August 14, 2026 - Compatibility, conformance, and purchase safety + { + id: 'compatibility-conformance-purchase-safety-2026-08-14', + date: new Date('2026-08-14'), + element: ( +
+ + August 14, 2026 - Compatibility, conformance, and purchase safety + + +

+ SDKs now tolerate future response metadata without accepting + malformed purchase requests. This train also publishes the first + versioned OpenIAP behavior suite and fixes Expo iOS lifecycle + cleanup. +

+ +
Common changes
+ + +
+ Shared spec and native packages +
+ + +
Framework libraries
+ + +
Integration notes
+ + +
+
Package Releases
+
    + {compatibilityConformanceReleases.map(([label, tag]) => ( +
  • + + {label} + +
  • + ))} +
+
+
+ ), + }, + // August 12, 2026 - Store verification integrity and Amazon provenance { id: 'store-verification-integrity-amazon-provenance-2026-08-12', From bca1ac065b9ddee39b99376378f9e74a9a447907 Mon Sep 17 00:00:00 2001 From: test Date: Fri, 14 Aug 2026 15:12:07 +0900 Subject: [PATCH 2/2] refactor(docs): dedupe release metadata Derive release-note version labels and links from one typed metadata record per package. --- .../docs/src/pages/docs/updates/releases.tsx | 158 ++++++++++++------ 1 file changed, 110 insertions(+), 48 deletions(-) diff --git a/packages/docs/src/pages/docs/updates/releases.tsx b/packages/docs/src/pages/docs/updates/releases.tsx index a4dcf751d..9307e5a3b 100644 --- a/packages/docs/src/pages/docs/updates/releases.tsx +++ b/packages/docs/src/pages/docs/updates/releases.tsx @@ -24,6 +24,12 @@ interface Note { element: React.ReactNode; } +interface ReleaseMetadata { + name: string; + version: string; + tag: string; +} + const storeApiModernizationReleases = [ ['OpenIAP Spec 3.1.0', 'docs-3.1.0'], ['openiap-apple 3.1.0', '3.1.0'], @@ -70,18 +76,34 @@ const storeVerificationIntegrityReleases = [ ['OpenIap.Maui 2.3.0', 'maui-iap-2.3.0'], ] as const; -const compatibilityConformanceReleases = [ - ['OpenIAP Spec 3.2.1', 'docs-3.2.1'], - ['openiap-apple 3.2.1', '3.2.1'], - ['openiap-google 3.3.1', 'google-3.3.1'], - ['react-native-iap 16.3.1', 'react-native-iap-16.3.1'], - ['expo-iap 5.3.1', 'expo-iap-5.3.1'], - ['flutter_inapp_purchase 10.3.1', 'flutter-iap-10.3.1'], - ['godot-iap 3.3.1', 'godot-iap-3.3.1'], - ['kmp-iap 3.3.1', 'kmp-iap-3.3.1'], - ['OpenIap.Maui 2.3.1', 'maui-iap-2.3.1'], - ['openiap-conformance 1.0.1', 'openiap-conformance-1.0.1'], -] as const; +const compatibilityConformanceReleases = { + spec: { name: 'OpenIAP Spec', version: '3.2.1', tag: 'docs-3.2.1' }, + apple: { name: 'openiap-apple', version: '3.2.1', tag: '3.2.1' }, + google: { + name: 'openiap-google', + version: '3.3.1', + tag: 'google-3.3.1', + }, + reactNative: { + name: 'react-native-iap', + version: '16.3.1', + tag: 'react-native-iap-16.3.1', + }, + expo: { name: 'expo-iap', version: '5.3.1', tag: 'expo-iap-5.3.1' }, + flutter: { + name: 'flutter_inapp_purchase', + version: '10.3.1', + tag: 'flutter-iap-10.3.1', + }, + godot: { name: 'godot-iap', version: '3.3.1', tag: 'godot-iap-3.3.1' }, + kmp: { name: 'kmp-iap', version: '3.3.1', tag: 'kmp-iap-3.3.1' }, + maui: { name: 'OpenIap.Maui', version: '2.3.1', tag: 'maui-iap-2.3.1' }, + conformance: { + name: 'openiap-conformance', + version: '1.0.1', + tag: 'openiap-conformance-1.0.1', + }, +} as const satisfies Record; const dependencyModernizationReleases = [ ['openiap-google 3.1.0', 'google-3.1.0'], @@ -226,6 +248,10 @@ const iapkitSecurityTrainAliases = [ function Releases() { useScrollToHash(); + function getReleaseLabel(release: ReleaseMetadata): string { + return `${release.name} ${release.version}`; + } + const allNotes: Note[] = [ // August 14, 2026 - Compatibility, conformance, and purchase safety { @@ -326,19 +352,26 @@ function Releases() { }} >
  • - OpenIAP Spec 3.2.1 gives every purchase - verification result an isValid verdict and publishes - a capability-bound behavior contract. + + {getReleaseLabel(compatibilityConformanceReleases.spec)} + {' '} + gives every purchase verification result an isValid{' '} + verdict and publishes a capability-bound behavior contract.
  • - openiap-apple 3.2.1 normalizes StoreKit errors - and validates mutable purchase envelopes before store work begins. + + {getReleaseLabel(compatibilityConformanceReleases.apple)} + {' '} + normalizes StoreKit errors and validates mutable purchase + envelopes before store work begins.
  • - openiap-google 3.3.1 rejects invalid replacement - modes, malformed offers, and tokens that are absent from current - Play metadata. Pending Horizon subscriptions no longer grant an - active entitlement. + + {getReleaseLabel(compatibilityConformanceReleases.google)} + {' '} + rejects invalid replacement modes, malformed offers, and tokens + that are absent from current Play metadata. Pending Horizon + subscriptions no longer grant an active entitlement.
  • @@ -351,18 +384,36 @@ function Releases() { }} >
  • - react-native-iap 16.3.1,{' '} - expo-iap 5.3.1,{' '} - flutter_inapp_purchase 10.3.1,{' '} - godot-iap 3.3.1, and{' '} - kmp-iap 3.3.1 enforce the same query-only{' '} - all contract and fail-closed purchase inputs at their - public and raw native boundaries. + + {getReleaseLabel(compatibilityConformanceReleases.reactNative)} + + ,{' '} + + {getReleaseLabel(compatibilityConformanceReleases.expo)} + + ,{' '} + + {getReleaseLabel(compatibilityConformanceReleases.flutter)} + + ,{' '} + + {getReleaseLabel(compatibilityConformanceReleases.godot)} + + , and{' '} + + {getReleaseLabel(compatibilityConformanceReleases.kmp)} + {' '} + enforce the same query-only all contract and + fail-closed purchase inputs at their public and raw native + boundaries.
  • - expo-iap 5.3.1 serializes process-wide iOS - listener teardown and replacement initialization to prevent a - stale module from clearing a newer module's state ( + + {getReleaseLabel(compatibilityConformanceReleases.expo)} + {' '} + serializes process-wide iOS listener teardown and replacement + initialization to prevent a stale module from clearing a newer + module's state (
  • - godot-iap 3.3.1 can export a fresh Android source - template without an editor-generated build-version file, and{' '} - OpenIap.Maui 2.3.1 emits diagnostics when it - drops unreadable optional IAPKit rows or objects. + + {getReleaseLabel(compatibilityConformanceReleases.godot)} + {' '} + can export a fresh Android source template without an + editor-generated build-version file, and{' '} + + {getReleaseLabel(compatibilityConformanceReleases.maui)} + {' '} + emits diagnostics when it drops unreadable optional IAPKit rows or + objects.
  • @@ -394,8 +451,11 @@ function Releases() { OpenIAP 4.0.
  • - openiap-conformance@1.0.1 publishes behavior suite{' '} - 1.0.0 for OpenIAP Spec 3.2.1. The + + {`${compatibilityConformanceReleases.conformance.name}@${compatibilityConformanceReleases.conformance.version}`} + {' '} + publishes behavior suite 1.0.0 for OpenIAP Spec{' '} + {compatibilityConformanceReleases.spec.version}. The package patch fixes CLI and provenance publishing metadata without changing verdicts.
  • @@ -427,17 +487,19 @@ function Releases() { fontSize: '0.9rem', }} > - {compatibilityConformanceReleases.map(([label, tag]) => ( -
  • - - {label} - -
  • - ))} + {Object.values(compatibilityConformanceReleases).map( + (release) => ( +
  • + + {getReleaseLabel(release)} + +
  • + ) + )}