expo-iap 2.8.3-rc.1 → 2.8.3-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CLAUDE.md CHANGED
@@ -3,17 +3,30 @@
3
3
  ## Release Notes
4
4
 
5
5
  ### v2.8.1 (2025-08-19)
6
+
6
7
  - Added `platform` field to all types for runtime type discrimination
7
8
  - Moved common fields to shared base types (`ids`, `debugDescription`)
8
9
  - Fixed iOS native code to populate missing subscription fields
9
10
  - No breaking changes, but deprecated fields will be removed in v2.9.0
10
11
 
11
12
  ### v2.8.0 (2025-08-18)
13
+
12
14
  - **Breaking**: iOS field naming convention changed (e.g., `quantityIos` → `quantityIOS`)
13
15
  - All iOS-related field names ending with "Ios" now end with "IOS"
14
16
 
15
17
  ## Expo-Specific Guidelines
16
18
 
19
+ ### iOS Pod Configuration
20
+
21
+ **CRITICAL WARNING**: Never modify the iOS platform version in `ios/ExpoIap.podspec`
22
+
23
+ - The iOS platform version MUST remain at `13.4` even though the code requires iOS 15.0+
24
+ - Changing to `15.0` causes expo prebuild to exclude the module in older Expo versions (known bug)
25
+ - See issue: [#168](https://github.com/hyochan/expo-iap/issues/168)
26
+ - This is kept at `13.4` for compatibility across all Expo versions
27
+ - The actual iOS 15.0+ requirement is enforced at build time
28
+ - Users must ensure their app target is set to iOS 15.0 or higher
29
+
17
30
  ### Pre-Commit Checks
18
31
 
19
32
  Before committing any changes:
@@ -30,6 +43,7 @@ Before committing any changes:
30
43
  ### Platform-Specific Naming Conventions
31
44
 
32
45
  #### Field Naming
46
+
33
47
  - **iOS-related fields**: Use `IOS` suffix (e.g., `displayNameIOS`, `discountsIOS`, `introductoryPriceIOS`)
34
48
  - **Exception**: When an acronym appears at the end of a field name, use uppercase (e.g., `quantityIOS`, `appBundleIdIOS`, not `quantityIos`)
35
49
  - Platform-specific fields: `currencyCodeIOS`, `currencySymbolIOS`, `countryCodeIOS`
@@ -41,6 +55,7 @@ Before committing any changes:
41
55
  - Use these for data that exists on both platforms without platform-specific variations
42
56
 
43
57
  #### Type Naming
58
+
44
59
  - **iOS types**: Use `IOS` suffix (e.g., `PurchaseIOS`, `ProductIOS`)
45
60
  - **Android types**: Use descriptive prefixes to identify subtypes:
46
61
  - ✅ Good: `ProductAndroidOneTimePurchaseOfferDetail`, `ProductSubscriptionAndroidOfferDetails`, `PurchaseAndroidState`
@@ -48,6 +63,7 @@ Before committing any changes:
48
63
  - **General IAP types**: Use `Iap` prefix (e.g., `IapPurchase`, not `IAPPurchase`)
49
64
 
50
65
  #### General Rules
66
+
51
67
  - **ID fields**: Use `Id` instead of `ID` (e.g., `productId`, `transactionId`, not `productID`, `transactionID`)
52
68
  - **Consistent naming**: This applies to functions, types, and file names
53
69
  - **Deprecation**: Fields without platform suffixes will be removed in v2.9.0
@@ -10,7 +10,12 @@ Pod::Spec.new do |s|
10
10
  s.license = package['license']
11
11
  s.author = package['author']
12
12
  s.homepage = package['homepage']
13
- s.platforms = { :ios => '15.0', :tvos => '15.0' }
13
+ # WARNING: DO NOT MODIFY iOS platform version from 13.4
14
+ # Changing this to 15.0 causes expo prebuild to exclude the module in older Expo versions (known bug)
15
+ # See: https://github.com/hyochan/expo-iap/issues/168
16
+ # Even though the code requires iOS 15.0+ for StoreKit 2, keep this at 13.4 for compatibility across all Expo versions
17
+ # The actual iOS 15.0+ requirement is enforced at build time
18
+ s.platforms = { :ios => '13.4', :tvos => '15.0' }
14
19
  s.swift_version = '5.4'
15
20
  s.source = { git: 'https://github.com/hyochan/expo-iap' }
16
21
  s.static_framework = true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-iap",
3
- "version": "2.8.3-rc.1",
3
+ "version": "2.8.3-rc.2",
4
4
  "description": "In App Purchase module in Expo",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -45,16 +45,6 @@ const withIapIOS = (config) => {
45
45
  }
46
46
  return config;
47
47
  });
48
- // Add StoreKit configuration for development (optional)
49
- config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
50
- // This is optional - adds StoreKit configuration for testing
51
- // Users can override this with their own configuration file
52
- if (!config.modResults.SKStoreProductParameterITunesItemIdentifier) {
53
- // This is just a placeholder, users should set their actual app ID
54
- config.modResults.SKStoreProductParameterITunesItemIdentifier = '';
55
- }
56
- return config;
57
- });
58
48
  return config;
59
49
  };
60
50
  const withIapAndroid = (config) => {
@@ -5,7 +5,6 @@ import {
5
5
  withAndroidManifest,
6
6
  withAppBuildGradle,
7
7
  withEntitlementsPlist,
8
- withInfoPlist,
9
8
  } from 'expo/config-plugins';
10
9
 
11
10
  const pkg = require('../../package.json');
@@ -70,18 +69,6 @@ const withIapIOS: ConfigPlugin = (config) => {
70
69
  return config;
71
70
  });
72
71
 
73
- // Add StoreKit configuration for development (optional)
74
- config = withInfoPlist(config, (config) => {
75
- // This is optional - adds StoreKit configuration for testing
76
- // Users can override this with their own configuration file
77
- if (!config.modResults.SKStoreProductParameterITunesItemIdentifier) {
78
- // This is just a placeholder, users should set their actual app ID
79
- config.modResults.SKStoreProductParameterITunesItemIdentifier = '';
80
- }
81
-
82
- return config;
83
- });
84
-
85
72
  return config;
86
73
  };
87
74