diff --git a/.github/workflows/release-flutter.yml b/.github/workflows/release-flutter.yml index c23cbd52c..22c082eea 100644 --- a/.github/workflows/release-flutter.yml +++ b/.github/workflows/release-flutter.yml @@ -111,6 +111,13 @@ jobs: with: xcode-version: ${{ env.XCODE_VERSION }} + - name: Select CocoaPods fallback + run: | + perl -0pi -e \ + 's/enable-swift-package-manager: true/enable-swift-package-manager: false/' \ + example/pubspec.yaml + grep -Fq "enable-swift-package-manager: false" example/pubspec.yaml + - name: Install dependencies run: flutter pub get @@ -124,7 +131,9 @@ jobs: - name: Install CocoaPods dependencies working-directory: libraries/flutter_inapp_purchase/example/ios - run: pod install --repo-update + run: | + pod install --repo-update + grep -Eq '^[[:space:]]+- openiap ' Podfile.lock - name: Build iOS working-directory: libraries/flutter_inapp_purchase/example/ios @@ -138,8 +147,32 @@ jobs: CODE_SIGNING_ALLOWED=NO \ COMPILER_INDEX_STORE_ENABLE=NO + validate-apple-swiftpm: + needs: [release-branch] + runs-on: xcode-27 + timeout-minutes: 60 + defaults: + run: + working-directory: libraries/flutter_inapp_purchase + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + fetch-depth: 1 + persist-credentials: false + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + flutter-version: "3.44.0" + cache: true + + - name: Build Apple examples with SwiftPM + run: bash scripts/verify-apple-swiftpm-consumer-build.sh + deploy: - needs: [validate-android, validate-ios] + needs: [validate-android, validate-ios, validate-apple-swiftpm] permissions: contents: write id-token: write diff --git a/packages/docs/public/llms-full.txt b/packages/docs/public/llms-full.txt index f1f13b85d..1f7f7843e 100644 --- a/packages/docs/public/llms-full.txt +++ b/packages/docs/public/llms-full.txt @@ -3,7 +3,7 @@ > OpenIAP: Unified in-app purchase specification for iOS & Android > Documentation: https://openiap.dev > Quick Reference: https://openiap.dev/llms.txt -> Generated: 2026-07-30T11:44:25.606Z +> Generated: 2026-07-30T18:42:59.387Z ## Table of Contents 1. Installation @@ -31,22 +31,22 @@ cd ios && pod install ### Swift (iOS/macOS) ```swift // Swift Package Manager -.package(url: "https://github.com/hyodotdev/openiap.git", from: "2.4.4") +.package(url: "https://github.com/hyodotdev/openiap.git", from: "3.0.0") // CocoaPods -pod 'openiap', '~> 2.4.4' +pod 'openiap', '~> 3.0.0' ``` ### Kotlin (Android) ```kotlin // Gradle (build.gradle.kts) -implementation("io.github.hyochan.openiap:openiap-google:2.5.2") +implementation("io.github.hyochan.openiap:openiap-google:3.0.0") // For Meta Horizon OS -implementation("io.github.hyochan.openiap:openiap-google-horizon:2.5.2") +implementation("io.github.hyochan.openiap:openiap-google-horizon:3.0.0") // For Fire OS (Amazon Appstore) -implementation("io.github.hyochan.openiap:openiap-google-amazon:2.5.2") +implementation("io.github.hyochan.openiap:openiap-google-amazon:3.0.0") ``` ### Flutter diff --git a/packages/docs/public/llms.txt b/packages/docs/public/llms.txt index 865135a45..6a9a9ba5a 100644 --- a/packages/docs/public/llms.txt +++ b/packages/docs/public/llms.txt @@ -3,7 +3,7 @@ > OpenIAP: Unified in-app purchase specification for iOS & Android > Documentation: https://openiap.dev > Full Reference: https://openiap.dev/llms-full.txt -> Generated: 2026-07-30T11:44:25.606Z +> Generated: 2026-07-30T18:42:59.387Z ## Installation @@ -19,14 +19,14 @@ npm install react-native-iap ### Native ```swift // Swift Package Manager -.package(url: "https://github.com/hyodotdev/openiap.git", from: "2.4.4") +.package(url: "https://github.com/hyodotdev/openiap.git", from: "3.0.0") ``` ```kotlin // Gradle -implementation("io.github.hyochan.openiap:openiap-google:2.5.2") -implementation("io.github.hyochan.openiap:openiap-google-horizon:2.5.2") -implementation("io.github.hyochan.openiap:openiap-google-amazon:2.5.2") +implementation("io.github.hyochan.openiap:openiap-google:3.0.0") +implementation("io.github.hyochan.openiap:openiap-google-horizon:3.0.0") +implementation("io.github.hyochan.openiap:openiap-google-amazon:3.0.0") ``` ```bash diff --git a/packages/docs/src/generated/version-metadata.json b/packages/docs/src/generated/version-metadata.json index 93ec7ef7f..601273f9a 100644 --- a/packages/docs/src/generated/version-metadata.json +++ b/packages/docs/src/generated/version-metadata.json @@ -1,7 +1,7 @@ { "_generatedBy": "scripts/sync-versions.sh", - "expoPackageVersion": "4.7.2", - "reactNativePackageVersion": "15.6.2", + "expoPackageVersion": "5.0.0", + "reactNativePackageVersion": "16.0.0", "flutterPackageVersion": "9.6.2", "godotPackageVersion": "2.6.2", "kmpPackageVersion": "2.7.2", diff --git a/scripts/audit-non-godot-parity.mjs b/scripts/audit-non-godot-parity.mjs index 71d00eba1..e281eb4b9 100644 --- a/scripts/audit-non-godot-parity.mjs +++ b/scripts/audit-non-godot-parity.mjs @@ -6545,16 +6545,38 @@ function checkXcode27StoreKitCoverage() { `${workflowPath} Xcode 27 scene lifecycle build`, ); } + for (const workflowPath of [ + ".github/workflows/ci-flutter-inapp-purchase.yml", + ".github/workflows/release-flutter.yml", + ]) { + expectIncludes( + workflowPath, + [ + 'flutter-version: "3.44.0"', + "bash scripts/verify-apple-swiftpm-consumer-build.sh", + ], + `${workflowPath} Flutter Xcode 27 SwiftPM example build`, + ); + } expectIncludes( ".github/workflows/ci-flutter-inapp-purchase.yml", [ - 'flutter-version: "3.44.0"', - "bash scripts/verify-apple-swiftpm-consumer-build.sh", "packages/apple/Sources/**", "packages/apple/Package.swift", "openiap-versions.json", ], - "Flutter Xcode 27 SwiftPM example build", + "Flutter Xcode 27 SwiftPM trigger coverage", + ); + expectIncludes( + ".github/workflows/release-flutter.yml", + [ + "Select CocoaPods fallback", + "enable-swift-package-manager: false", + "grep -Eq '^[[:space:]]+- openiap ' Podfile.lock", + "validate-apple-swiftpm", + "needs: [validate-android, validate-ios, validate-apple-swiftpm]", + ], + "Flutter release Apple dependency-manager coverage", ); expectIncludes( "libraries/flutter_inapp_purchase/example/pubspec.yaml", @@ -6565,7 +6587,7 @@ function checkXcode27StoreKitCoverage() { "libraries/flutter_inapp_purchase/scripts/verify-apple-swiftpm-consumer-build.sh", [ 'xcode_version_output="$(xcodebuild -version)"', - 'xcode_version="${xcode_version_output%%$\'\\n\'*}"', + "xcode_version=\"${xcode_version_output%%$'\\n'*}\"", '[[ "$xcode_version" != "Xcode 27"* ]]', "flutter build ios --config-only --simulator", "flutter build macos --config-only", diff --git a/scripts/release-branch-policy.test.mjs b/scripts/release-branch-policy.test.mjs index 3fa8ffb36..e19683b72 100644 --- a/scripts/release-branch-policy.test.mjs +++ b/scripts/release-branch-policy.test.mjs @@ -25,7 +25,7 @@ const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const releaseWorkflows = { apple: { filename: "release-apple.yml", guardedJobs: 1 }, expo: { filename: "release-expo.yml", guardedJobs: 2 }, - flutter: { filename: "release-flutter.yml", guardedJobs: 2 }, + flutter: { filename: "release-flutter.yml", guardedJobs: 3 }, godot: { filename: "release-godot.yml", guardedJobs: 2 }, google: { filename: "release-google.yml", guardedJobs: 1 }, kmp: { filename: "release-kmp.yml", guardedJobs: 2 },