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 +16 -0
- package/ios/ExpoIap.podspec +6 -1
- package/package.json +1 -1
- package/plugin/build/withIAP.js +0 -10
- package/plugin/src/withIAP.ts +0 -13
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
|
package/ios/ExpoIap.podspec
CHANGED
|
@@ -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
|
-
|
|
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
package/plugin/build/withIAP.js
CHANGED
|
@@ -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) => {
|
package/plugin/src/withIAP.ts
CHANGED
|
@@ -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
|
|