Releases: Countly/countly-sdk-react-native-bridge
26.1.0-np
-
Added a new
Countly.sessionsinterface for manual session control:beginSession()updateSession()endSession()
-
Added a new
Countly.remoteConfiginterface with:update()updateForKeysOnly(keyNames)updateExceptKeys(keyNames)getValue(keyName)clearValues()
-
Added a new
Countly.viewsinterface with:startAutoStoppedView(viewName, segmentation?)startView(viewName, segmentation?)stopViewWithName(viewName, segmentation?)stopViewWithID(viewID, segmentation?)stopAllViews(segmentation?)pauseViewWithID(viewID)resumeViewWithID(viewID)addSegmentationToViewWithID(viewID, segmentation)addSegmentationToViewWithName(viewName, segmentation)setGlobalViewSegmentation(segmentation?)updateGlobalViewSegmentation(segmentation)
-
Deprecated root-level session methods in favor of
Countly.sessions:Countly.startSession()Countly.updateSession()Countly.endSession()
-
Deprecated root-level remote config methods in favor of
Countly.remoteConfig:Countly.remoteConfigUpdate(...)Countly.updateRemoteConfigForKeysOnly(...)Countly.updateRemoteConfigExceptKeys(...)Countly.getRemoteConfigValueForKey(...)Countly.getRemoteConfigValueForKeyP(...)Countly.remoteConfigClearValues()
-
Deprecated root-level view recording in favor of
Countly.views.startAutoStoppedView(...):Countly.recordView(...)
-
Deprecated legacy feedback shortcut helpers in favor of the newer direct present APIs:
Countly.feedback.showNPS(...)->Countly.feedback.presentNPS(...)Countly.feedback.showSurvey(...)->Countly.feedback.presentSurvey(...)Countly.feedback.showRating(...)->Countly.feedback.presentRating(...)
-
Added
Countly.remoteConfig.getValue(keyName)as the async replacement for the older root-level remote config getters. It returnsnullwhen a value is missing. -
Added
Countly.addCustomNetworkRequestHeaders(...)for runtime request header updates. -
Added
Countly.content.previewContent(contentId)for direct content previews. -
Added
Countly.webViewDisplayOptionconstants and.content.setWebViewDisplayOption(...)for controlling content and feedback presentation. -
Added direct
Countly.feedback.presentNPS(...),Countly.feedback.presentSurvey(...), andCountly.feedback.presentRating(...)helpers backed by the latest native feedback APIs. -
Added
Countly.deviceId.changeID(newDeviceID, merge)to the device ID interface for explicit merge control after removing the old root-levelCountly.changeDeviceId(...)API. -
Added init config options for manual session control, hybrid manual session mode, automatic view tracking, global view segmentation, custom network request headers, and disabling auto view restart.
enableManualSessionControl()enableManualSessionControlHybridMode()enableAutomaticViewTracking()setAutomaticViewTrackingExclusionList(automaticViewTrackingExclusionList)setGlobalViewSegmentation(globalViewSegmentation)addCustomNetworkRequestHeaders(customHeaderValues)disableViewRestartForManualRecording()
-
Mitigated an issue where the new remote config interface could reject on normal runtime conditions such as missing values, invalid input, or use before SDK initialization. These calls now log and return without crashing the app.
-
Mitigated an issue where
Countly.initWithConfig(...)could preserve an emptydeviceIDunder the wrong field name instead of clearing the init payload value. -
Mitigated an issue where
allowedIntentPackageNamescould be dropped from init config serialization unlessallowedIntentClassNameswas also provided. -
Mitigated an inconsistency where
Countly.deviceId.setID(Countly.TemporaryDeviceIDString)did not route temporary-device-ID mode through the dedicated native handling on Android, and now does so explicitly on both Android and iOS.- Removed
Countly.init(...). UseCountly.initWithConfig(countlyConfig). - Removed
Countly.hasBeenCalledOnStart(). No direct replacement. - Removed
Countly.sendEvent(...). UseCountly.events.recordEvent(...). - Removed
Countly.pushTokenType(...). UseCountlyConfig.setPushTokenType(...)andCountlyConfig.setPushNotificationChannelInformation(...). - Removed
Countly.configureIntentRedirectionCheck(...). UseCountlyConfig.configureIntentRedirectionCheck(...). - Removed
Countly.start()andCountly.stop(). No direct replacement; automatic session tracking is enabled by default. For manual control useCountly.sessions.beginSession(),Countly.sessions.updateSession(), andCountly.sessions.endSession(). - Removed
Countly.enableLogging()andCountly.disableLogging(). UseCountly.setLoggingEnabled(...). - Removed
Countly.setLocationInit(...). UseCountlyConfig.setLocation(...). - Removed
Countly.getCurrentDeviceId(). UseCountly.deviceId.getID(). - Removed
Countly.getDeviceIDType(). UseCountly.deviceId.getType(). - Removed
Countly.changeDeviceId(...). UseCountly.deviceId.setID(...)for automatic merge selection orCountly.deviceId.changeID(..., merge)for explicit merge control. - Removed
Countly.enableCrashReporting(). UseCountlyConfig.enableCrashReporting()withCountly.initWithConfig(...). - Removed
Countly.enableParameterTamperingProtection(...). UseCountlyConfig.enableParameterTamperingProtection(...). - Removed
Countly.startEvent(...),Countly.cancelEvent(...), andCountly.endEvent(...). UseCountly.events.startEvent(...),Countly.events.cancelEvent(...), andCountly.events.endEvent(...). - Removed
Countly.setRequiresConsent(...). UseCountlyConfig.setRequiresConsent(...). - Removed
Countly.giveConsentInit(...). UseCountlyConfig.giveConsent(...). - Removed
Countly.setStarRatingDialogTexts(...). UseCountlyConfig.setStarRatingDialogTexts(...). - Removed
Countly.getFeedbackWidgets(). UseCountly.feedback.getAvailableFeedbackWidgets(). - Removed
Countly.presentFeedbackWidgetObject(...). UseCountly.feedback.presentFeedbackWidget(...). - Removed
Countly.enableApm()andCountlyConfig.enableApm(). Use theCountlyConfig.apminterface, includingenableAppStartTimeTracking(),enableForegroundBackgroundTracking(), andenableManualAppLoadedTrigger()as needed. - Removed
Countly.enableAttribution(...)andCountly.recordAttributionID(...). UseCountly.recordIndirectAttribution(...). - Removed
CountlyConfig.pushTokenType(...). UseCountlyConfig.setPushTokenType(...)andCountlyConfig.setPushNotificationChannelInformation(...).
- Removed
-
Android specific changes:
- Added
disableGradualRequestCleaner()init config support. - Set the initial activity during SDK initialization to improve content and feedback presentation flows.
- Ensured Android feedback, survey, NPS, and rating presentation runs on the UI thread to avoid WebView/dialog crashes when showing widgets from the React Native bridge.
- Aligned the Android bridge with the current native SDK APIs for APM/crash config, preserved feedback widget version metadata for presentation, and allowed typed user-property values to pass through to the native user profile API.
- Added
-
iOS specific changes:
- Added support for the latest manual session handling, custom request header, content preview, and safe-area content display APIs from the native SDK.
- Aligned the user-profile bridge with the current
Countly.userAPIs for typed custom-property setters and forwarded custom user data duringCountly.setUserData(...)andCountly.userDataBulk.setUserProperties(...). - ! Minor Breaking change ! : on iOS, custom fields passed through
Countly.setUserData(...)andCountly.userDataBulk.setUserProperties(...)are now forwarded to the native SDK instead of being ignored by the bridge.
-
Updated the underlying Android SDK version to 26.1.2
-
Updated the underlying iOS SDK version to 26.1.1
26.1.0
-
Added a new
Countly.sessionsinterface for manual session control:beginSession()updateSession()endSession()
-
Added a new
Countly.remoteConfiginterface with:update()updateForKeysOnly(keyNames)updateExceptKeys(keyNames)getValue(keyName)clearValues()
-
Added a new
Countly.viewsinterface with:startAutoStoppedView(viewName, segmentation?)startView(viewName, segmentation?)stopViewWithName(viewName, segmentation?)stopViewWithID(viewID, segmentation?)stopAllViews(segmentation?)pauseViewWithID(viewID)resumeViewWithID(viewID)addSegmentationToViewWithID(viewID, segmentation)addSegmentationToViewWithName(viewName, segmentation)setGlobalViewSegmentation(segmentation?)updateGlobalViewSegmentation(segmentation)
-
Deprecated root-level session methods in favor of
Countly.sessions:Countly.startSession()Countly.updateSession()Countly.endSession()
-
Deprecated root-level remote config methods in favor of
Countly.remoteConfig:Countly.remoteConfigUpdate(...)Countly.updateRemoteConfigForKeysOnly(...)Countly.updateRemoteConfigExceptKeys(...)Countly.getRemoteConfigValueForKey(...)Countly.getRemoteConfigValueForKeyP(...)Countly.remoteConfigClearValues()
-
Deprecated root-level view recording in favor of
Countly.views.startAutoStoppedView(...):Countly.recordView(...)
-
Deprecated legacy feedback shortcut helpers in favor of the newer direct present APIs:
Countly.feedback.showNPS(...)->Countly.feedback.presentNPS(...)Countly.feedback.showSurvey(...)->Countly.feedback.presentSurvey(...)Countly.feedback.showRating(...)->Countly.feedback.presentRating(...)
-
Added
Countly.remoteConfig.getValue(keyName)as the async replacement for the older root-level remote config getters. It returnsnullwhen a value is missing. -
Added
Countly.addCustomNetworkRequestHeaders(...)for runtime request header updates. -
Added
Countly.content.previewContent(contentId)for direct content previews. -
Added
Countly.webViewDisplayOptionconstants and.content.setWebViewDisplayOption(...)for controlling content and feedback presentation. -
Added direct
Countly.feedback.presentNPS(...),Countly.feedback.presentSurvey(...), andCountly.feedback.presentRating(...)helpers backed by the latest native feedback APIs. -
Added
Countly.deviceId.changeID(newDeviceID, merge)to the device ID interface for explicit merge control after removing the old root-levelCountly.changeDeviceId(...)API. -
Added init config options for manual session control, hybrid manual session mode, automatic view tracking, global view segmentation, custom network request headers, and disabling auto view restart.
enableManualSessionControl()enableManualSessionControlHybridMode()enableAutomaticViewTracking()setAutomaticViewTrackingExclusionList(automaticViewTrackingExclusionList)setGlobalViewSegmentation(globalViewSegmentation)addCustomNetworkRequestHeaders(customHeaderValues)disableViewRestartForManualRecording()
-
Mitigated an issue where the new remote config interface could reject on normal runtime conditions such as missing values, invalid input, or use before SDK initialization. These calls now log and return without crashing the app.
-
Mitigated an issue where
Countly.initWithConfig(...)could preserve an emptydeviceIDunder the wrong field name instead of clearing the init payload value. -
Mitigated an issue where
allowedIntentPackageNamescould be dropped from init config serialization unlessallowedIntentClassNameswas also provided. -
Mitigated an inconsistency where
Countly.deviceId.setID(Countly.TemporaryDeviceIDString)did not route temporary-device-ID mode through the dedicated native handling on Android, and now does so explicitly on both Android and iOS.- Removed
Countly.init(...). UseCountly.initWithConfig(countlyConfig). - Removed
Countly.hasBeenCalledOnStart(). No direct replacement. - Removed
Countly.sendEvent(...). UseCountly.events.recordEvent(...). - Removed
Countly.pushTokenType(...). UseCountlyConfig.setPushTokenType(...)andCountlyConfig.setPushNotificationChannelInformation(...). - Removed
Countly.configureIntentRedirectionCheck(...). UseCountlyConfig.configureIntentRedirectionCheck(...). - Removed
Countly.start()andCountly.stop(). No direct replacement; automatic session tracking is enabled by default. For manual control useCountly.sessions.beginSession(),Countly.sessions.updateSession(), andCountly.sessions.endSession(). - Removed
Countly.enableLogging()andCountly.disableLogging(). UseCountly.setLoggingEnabled(...). - Removed
Countly.setLocationInit(...). UseCountlyConfig.setLocation(...). - Removed
Countly.getCurrentDeviceId(). UseCountly.deviceId.getID(). - Removed
Countly.getDeviceIDType(). UseCountly.deviceId.getType(). - Removed
Countly.changeDeviceId(...). UseCountly.deviceId.setID(...)for automatic merge selection orCountly.deviceId.changeID(..., merge)for explicit merge control. - Removed
Countly.enableCrashReporting(). UseCountlyConfig.enableCrashReporting()withCountly.initWithConfig(...). - Removed
Countly.enableParameterTamperingProtection(...). UseCountlyConfig.enableParameterTamperingProtection(...). - Removed
Countly.startEvent(...),Countly.cancelEvent(...), andCountly.endEvent(...). UseCountly.events.startEvent(...),Countly.events.cancelEvent(...), andCountly.events.endEvent(...). - Removed
Countly.setRequiresConsent(...). UseCountlyConfig.setRequiresConsent(...). - Removed
Countly.giveConsentInit(...). UseCountlyConfig.giveConsent(...). - Removed
Countly.setStarRatingDialogTexts(...). UseCountlyConfig.setStarRatingDialogTexts(...). - Removed
Countly.getFeedbackWidgets(). UseCountly.feedback.getAvailableFeedbackWidgets(). - Removed
Countly.presentFeedbackWidgetObject(...). UseCountly.feedback.presentFeedbackWidget(...). - Removed
Countly.enableApm()andCountlyConfig.enableApm(). Use theCountlyConfig.apminterface, includingenableAppStartTimeTracking(),enableForegroundBackgroundTracking(), andenableManualAppLoadedTrigger()as needed. - Removed
Countly.enableAttribution(...)andCountly.recordAttributionID(...). UseCountly.recordIndirectAttribution(...). - Removed
CountlyConfig.pushTokenType(...). UseCountlyConfig.setPushTokenType(...)andCountlyConfig.setPushNotificationChannelInformation(...).
- Removed
-
Android specific changes:
- Added
disableGradualRequestCleaner()init config support. - Set the initial activity during SDK initialization to improve content and feedback presentation flows.
- Ensured Android feedback, survey, NPS, and rating presentation runs on the UI thread to avoid WebView/dialog crashes when showing widgets from the React Native bridge.
- Aligned the Android bridge with the current native SDK APIs for APM/crash config, preserved feedback widget version metadata for presentation, and allowed typed user-property values to pass through to the native user profile API.
- Added
-
iOS specific changes:
- Added support for the latest manual session handling, custom request header, content preview, and safe-area content display APIs from the native SDK.
- Aligned the user-profile bridge with the current
Countly.userAPIs for typed custom-property setters and forwarded custom user data duringCountly.setUserData(...)andCountly.userDataBulk.setUserProperties(...). - ! Minor Breaking change ! : on iOS, custom fields passed through
Countly.setUserData(...)andCountly.userDataBulk.setUserProperties(...)are now forwarded to the native SDK instead of being ignored by the bridge.
-
Updated the underlying Android SDK version to 26.1.2
-
Updated the underlying iOS SDK version to 26.1.1
25.4.1-np
-
Improved Content display mechanics.
-
Added "setRequestTimeoutDuration" init config parameter to change request timeout duration in seconds.
-
Added a new function "recordMetrics(metricsOverride)" to send a manual metrics requests.
-
Added a new Consent option "metrics" for controlling "recordMetrics" method. (This has no effect on Session metrics.)
-
Added event listener calls for new architecture (thanks @j-q-in-berlin)
-
Mitigated an issue in SDK limits config class initialization (thanks @albertlaiuste)
-
Android specific changes:
- Improved disk size calculation in crash reports.
- Mitigated an issue that could have happened when navigating back from a Content.
- Mitigated a persistency issue with init configuration provided SBS and its initial state.
- Mitigated an issue where SBS could have been fetched twice.
-
iOS specific changes:
- Improved CPU architecture detection capabilities.
- Added the ability to record reserved events.
- Changed default log level from "Debug" to "Verbose".
- Mitigated an SBS issue while in temporary ID mode.
- Mitigated a possible Health Check network log recording issue.
-
Updated the underlying Android SDK version to 25.4.4
-
Updated the underlying iOS SDK version to 25.4.6
25.4.1
-
Improved Content display mechanics.
-
Added "setRequestTimeoutDuration" init config parameter to change request timeout duration in seconds.
-
Added a new function "recordMetrics(metricsOverride)" to send a manual metrics requests.
-
Added a new Consent option "metrics" for controlling "recordMetrics" method. (This has no effect on Session metrics.)
-
Added event listener calls for new architecture (thanks @j-q-in-berlin)
-
Mitigated an issue in SDK limits config class initialization (thanks @albertlaiuste)
-
Android specific changes:
- Improved disk size calculation in crash reports.
- Mitigated an issue that could have happened when navigating back from a Content.
- Mitigated a persistency issue with init configuration provided SBS and its initial state.
- Mitigated an issue where SBS could have been fetched twice.
-
iOS specific changes:
- Improved CPU architecture detection capabilities.
- Added the ability to record reserved events.
- Changed default log level from "Debug" to "Verbose".
- Mitigated an SBS issue while in temporary ID mode.
- Mitigated a possible Health Check network log recording issue.
-
Updated the underlying Android SDK version to 25.4.4
-
Updated the underlying iOS SDK version to 25.4.6
25.4.0-np
-
! Minor breaking change ! The SDK now exclusively uses random UUIDs for device id generation instead of platform specific OpenUDID or IDFV
-
! Minor breaking change ! Server Configuration is now enabled by default. Changes made on SDK Manager > SDK Configuration on your server will affect SDK behavior directly
-
Added
refreshContentZone()method for manual refresh of content zone -
Added
disableBackoffMechanism()init config method for disabling request backoff logic -
Added
disableSDKBehaviorSettingsUpdates()init config method for disabling server config sync requests -
Added
setSDKBehaviorSettings(settingsObject: object)init config method for providing server config settings -
Added New Architecture (Turbo Modules) support
-
Added fullscreen support for feedback widgets
-
Added support for SDK health checks in iOS
-
Added a built-in backoff mechanism when server responses are slow
-
Mitigated an issue that could occur while serializing events to improve stability, performance and memory usage in iOS
-
Mitigated an issue where the safe area resolution was not correctly calculated for the content zone on certain iOS devices
-
Updated the underlying Android SDK version to 25.4.2
-
Updated the underlying iOS SDK version to 25.4.3
25.4.0
-
! Minor breaking change ! The SDK now exclusively uses random UUIDs for device id generation instead of platform specific OpenUDID or IDFV
-
! Minor breaking change ! Server Configuration is now enabled by default. Changes made on SDK Manager > SDK Configuration on your server will affect SDK behavior directly
-
Added
refreshContentZone()method for manual refresh of content zone -
Added
disableBackoffMechanism()init config method for disabling request backoff logic -
Added
disableSDKBehaviorSettingsUpdates()init config method for disabling server config sync requests -
Added
setSDKBehaviorSettings(settingsObject: object)init config method for providing server config settings -
Added New Architecture (Turbo Modules) support
-
Added fullscreen support for feedback widgets
-
Added support for SDK health checks in iOS
-
Added a built-in backoff mechanism when server responses are slow
-
Mitigated an issue that caused PN message data collision if two message with same ID was received in Android
-
Mitigated an issue that could occur while serializing events to improve stability, performance and memory usage in iOS
-
Mitigated an issue where the safe area resolution was not correctly calculated for the content zone on certain iOS devices
-
Updated the underlying Android SDK version to 25.4.2
-
Updated the underlying iOS SDK version to 25.4.3
25.1.2-np
-
Mitigated an issue where the visibility tracking could have been enabled by default
-
Underlying Android SDK version is 25.1.1
-
Underlying iOS SDK version is 25.1.1
25.1.2
-
Mitigated an issue where the visibility tracking could have been enabled by default
-
Underlying Android SDK version is 25.1.1
-
Underlying iOS SDK version is 25.1.1
25.1.1-np
-
Improved content size management of content blocks.
-
Added init time config options:
.content.setZoneTimerIntervalto set the frequency of content update calls in seconds..content.setGlobalContentCallbackto provide a callback that is called when a content is closed.
-
Android Specific Changes:
- Improved the custom CertificateTrustManager to handle domain-specific configurations by supporting hostname-aware checkServerTrusted calls.
- Mitigated an issue where after closing a content, they were not being fetched again.
- Mitigated an issue where, the action bar was overlapping with the content display.
-
iOS Specific Changes:
- Added dynamic resizing functionality for the content zone
- Fixed an issue where the build UUID and executable name were missing from crash reports
-
Updated the underlying Android SDK version to 25.1.1
-
Updated the underlying iOS SDK version to 25.1.1
25.1.1
-
Improved content size management of content blocks.
-
Added init time config options:
.content.setZoneTimerIntervalto set the frequency of content update calls in seconds..content.setGlobalContentCallbackto provide a callback that is called when a content is closed.
-
Android Specific Changes:
- Improved the custom CertificateTrustManager to handle domain-specific configurations by supporting hostname-aware checkServerTrusted calls.
- Mitigated an issue where after closing a content, they were not being fetched again.
- Mitigated an issue where, the action bar was overlapping with the content display.
-
iOS Specific Changes:
- Added dynamic resizing functionality for the content zone
- Fixed an issue where the build UUID and executable name were missing from crash reports
-
Updated the underlying Android SDK version to 25.1.1
-
Updated the underlying iOS SDK version to 25.1.1