Migration Notes & Changelog
This guide helps you upgrade from Gameball React Native SDK v3 to v4.0.0, and migrate from v2 to v3.What’s New in v4.0.0
New Features in v4.0.0
- In-App Messaging: mount
<GameballInAppMessages />once, thenstartInAppMessaging()displays the slide-up, modal, and full-screen campaigns you create in the Gameball dashboard, andstopInAppMessaging()stops it on logout. Nothing runs until you callstartInAppMessaging, so upgrading without it changes nothing. See In-App Messaging - In-App Messaging Hooks:
beforeDisplay,onAction,onNavigate,openUrl, andrequestPushPermission, plusonInAppMessage(listener)andsetOverlayOpen(open) - Purchase Logging:
logPurchase()sends apurchaseevent to Gameball that campaigns can target and filter on - Optional Peer Dependency: when your app has
react-native-safe-area-context, in-app messages sit exactly clear of the notch and the home indicator
Migrate v3.x → v4.0.0 (Breaking)
- Set
minSdkVersionto 24 inandroid/build.gradle. - Set the iOS deployment target to 15.0 in
ios/Podfile(platform :ios, '15.0') and in Xcode, then runpod install. - Update to
react-native-gameball@^4.0.0. - Coming from v3.1.x or earlier, install the peer dependencies the SDK has required since v3.3.1. The Install Peer Dependencies step below lists them.
- (Optional) Adopt in-app messaging. See In-App Messaging.
- (Optional) If you build
purchaseevents yourself, replace them withlogPurchaserather than sending both.
Coming from v3.1.x? v4.0.0 also includes v3.3.1, which brought the React Native SDK level with the other SDKs’ 3.3.x releases: widget events and dismissal (
widgetEventCallback and hideProfile()), external link handling (externalLinkCallback), per-call and global widget language (lang and setLanguage), and push notification click tracking (handlePushClick). initializeCustomer now always registers customers, with isGuest ignored, and changeLanguage is deprecated in favor of setLanguage. See the release history.What’s New in v3.1.2
Widget Loading Fix & Custom Modal — v3.1.2 fixes a widget loading delay caused by
srcdoc iframe blocking and replaces the profile widget’s modal with a custom animated implementation.- Fixed widget loading delay caused by
about:blankiframe origin not being whitelisted - Widget WebView now reloads on re-open to ensure fresh content
- Replaced
react-native-modalin profile widget with a customAnimatedslide-up modal - Lazy WebView rendering — widget is not rendered until first open, improving initial load performance
- Existing v3.1.1/v3.1.0/v3.0.0 code continues to work without changes
What’s New in v3.1.1
Guest Mode & Easier Widget Init — v3.1.1 makes
ShowProfileRequest non-throwing and allows customerId to be optional so you can launch the profile widget in guest mode.customerIdoptional on profile widget (guest mode supported)- Existing v3.1.0/v3.0.0 code continues to work without changes
What’s New in v3.1.0
Session Token Authentication — v3.1.0 introduces optional Session Token authentication for enhanced security with automatic v4.1 endpoint routing.
New Features in v3.1.0
- Session Token Support: Optional token-based authentication
- Automatic Endpoint Versioning: Routes to v4.1 API when token is present
- Per-Request Token Override: Override global token on individual API calls
- Global Token Management: Token updates globally when passed to any method
- Backward Compatible: All existing code works unchanged
TypeScript Support
Full TypeScript support with type definitions and interfaces
Async/Await
Modern async/await support alongside callback pattern
Better Error Handling
Improved error messages and validation
Simplified API
Cleaner API design with consistent patterns
Breaking Changes
1. SDK Initialization
v2:2. Customer Registration
v2:3. Event Tracking
v2:4. Show Profile Widget
v2:5. Key Naming Changes
Migration Steps
From v3.x to v4.0.0
1
Raise Platform Minimums
Set Also set
minSdkVersion to 24 in android/build.gradle, and the iOS deployment target to 15.0:IPHONEOS_DEPLOYMENT_TARGET to 15.0 for your app target in Xcode.2
Update Dependency
Update your
package.json to use SDK v4.0.0:3
Install Peer Dependencies
Coming from v3.1.x or earlier, install the peer dependencies the SDK requires:Run
npm install or yarn install, then cd ios && pod install.4
(Optional) Adopt In-App Messaging
Mount
<GameballInAppMessages /> once near the root of your app, call startInAppMessaging() once the customer is known, and call stopInAppMessaging() on logout. See In-App Messaging.5
Test
Verify that
initializeCustomer, sendEvent, and showProfile behave as before on both iOS and Android. Unable to resolve module react-native-webview or a similar error means a peer dependency is missing.From v3.1.1 to v3.1.2 (No Breaking Changes)
v3.1.2 is a patch release (widget loading fix + custom modal). Update the dependency version; no code changes required.
1
Update Dependency
Update your Run
package.json to use SDK v3.1.2:npm install or yarn install, then cd ios && pod install.2
Test
Test your integration. All existing code should work unchanged. The profile widget no longer uses
react-native-modal internally, but the dependency is still required by in-app notifications.From v3.1.0 to v3.1.1 (No Breaking Changes)
v3.1.1 is a patch release (guest mode support). Update the dependency version; no code changes required.
1
Update Dependency
Update your Run
package.json to use SDK v3.1.1:npm install or yarn install, then cd ios && pod install.2
Test Guest Mode (Optional)
If you plan to use guest mode, verify that
showProfile works without a customerId.3
Test
Test your integration. All existing code should work unchanged.
From v3.0.0 to v3.1.x (No Breaking Changes)
v3.1.x is fully backward compatible. Simply update the dependency version. Session Token is optional.
1
Update Dependency
Update your Run
package.json to use SDK v3.1.2:npm install or yarn install, then cd ios && pod install.2
(Optional) Add Session Token
If enhanced security is needed, add session token to your configuration:Important: In React Native SDK, the
sessionToken parameter updates the global token when passed to any method.3
Test
Test your integration. All existing code should work unchanged.
From v2.x to v3.1.2
1
Update Dependency
Update your Run
package.json to use SDK v3.1.2:npm install or yarn install, then cd ios && pod install.2
Update Imports
Update all Gameball imports to use
react-native-gameball:3
Update Initialization
Replace SDK initialization with the new config object pattern.
4
Update Customer Registration
Replace
registerPlayer with initializeCustomer using the new request structure.5
Update Event Tracking
Update event structure to use
events object with nested properties.6
Update Profile Widget
Replace
GameballWidget component with showProfile method calls.7
Add Type Definitions
If using TypeScript, add type annotations to leverage full type safety.
8
Test on Both Platforms
Test all Gameball functionality on both iOS and Android to ensure the migration is successful.
Compatibility
- React Native: 0.70+
- Node.js: 18+
- TypeScript: 4.0+ (optional)
- iOS: iOS 15.0+ as of v4.0.0
- Android: API level 24+ (Android 7.0) as of v4.0.0
Additional Resources
- Check the SDK repository’s CHANGELOG.md for detailed version history
- Review MIGRATION.md in the repository for more migration details
- View RELEASE_NOTES.md for v4.0.0 release details
- Visit Gameball Docs for the latest documentation