From a1fc76adb0e743a7047a8bc13308adde92f65e43 Mon Sep 17 00:00:00 2001 From: svc-devrev Date: Fri, 21 Aug 2026 06:26:21 +0000 Subject: [PATCH] [skip ci] Release v2.3.9 This PR contains the automated release updates for version 2.3.9. Changes: - Updated sample app - Updated documentation - Updated README, CHANGELOG, and MIGRATION guide --- CHANGELOG.md | 47 +++++++++++++++ README.md | 28 ++++++++- devrev-sdk-react-native-2.3.9.tgz | Bin 0 -> 51929 bytes sample/expo/package.json | 9 +++ sample/package.json | 2 +- sample/react-native/android/build.gradle | 26 +++++++- .../xcshareddata/swiftpm/Package.resolved | 4 +- sample/react-native/ios/Podfile | 6 -- sample/react-native/ios/Podfile.lock | 40 ++++++++++-- sample/react-native/package.json | 8 ++- .../src/screens/SessionAnalyticsScreen.tsx | 57 ++++++++++++++++++ .../src/screens/SupportChatScreen.tsx | 2 +- 12 files changed, 209 insertions(+), 20 deletions(-) create mode 100644 devrev-sdk-react-native-2.3.9.tgz diff --git a/CHANGELOG.md b/CHANGELOG.md index 58f54cc..ea87433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,53 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.3.9] - 2026-08-20 + +### Changed +- [Android] Reduced startup jank and ANRs during session recording. +- Improved logs traceability. + +## [2.3.8] - 2026-08-04 + +### Added +- Added an SDK version filter for session replay, allowing replay to be enabled or disabled for specific SDK versions from the dashboard. + +### Fixed +- [Android] Fixed masks on the base page being dropped while a dialog or modal bottom sheet was open. +- [Android] Fixed a main-thread deadlock when resolving external masks with Flutter. +- [Android] Fixed a crash in the screenshot capturer caused by a recycled bitmap on cancel. +- [Android] Fixed an issue with mask coordinate clipping. +- [iOS] Fixed a race condition that could affect network event counts during concurrent requests. + +## [2.3.7] - 2026-07-02 + +### Added +- Agent response streaming, article search filters, and conversation page header branding added in FeatureConfiguration. +- Prefill message support when creating support conversations. + +### Fixed +- [Android] Fixed a crash related to NPEs on activities. + +## [2.3.6] - 2026-06-24 + +### Changed +- [iOS] Improved memory usage during offline session replay uploads. +- Enhanced overall performance during screen navigations. + +### Fixed +- [Android] Fixed an issue related to rapid navigations. +- [Android] Fixed an ANR related to animated dialog captures. +- [Android] Fixed an issue related to keyboard scrolls on webviews. +- [Android] Fixed an issue related to dispatch window callback mutations. + +## [2.3.5] - 2026-06-12 + +### Fixed +- [iOS] Fixed unknown network type in session events by correctly identifying the cellular data service, radio generation, and Wi‑Fi/cellular transitions. +- [iOS] Fixed session replay snapshot quality and touch coordinate rendering in landscape orientation. +- [iOS] Fixed support chat conversation being cleared when a transient modal is dismissed. +- [iOS] Fixed trait collection initialization crash. + ## [2.3.4] - 2026-06-03 ### Fixed diff --git a/README.md b/README.md index f9c12c9..5bacb7b 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,8 @@ DevRev.configure('abcdefg12345', { supportWidgetTheme: { prefersSystemTheme: true, }, + enableSupportChatStreaming: true, + supportWidgetArticleSearchFilters: articleSearchFilters, }); ``` @@ -147,6 +149,8 @@ DevRev.updateFeatureConfiguration({ supportWidgetTheme: { prefersSystemTheme: true, }, + enableSupportChatStreaming: true, + supportWidgetArticleSearchFilters: articleSearchFilters, }); ``` @@ -161,6 +165,8 @@ DevRev.updateFeatureConfiguration({ | `prefersDialogMode` | `boolean` | `false` | Prefer dialog mode for the support UI (Android only). | | `alwaysUseRemoteConfig` | `boolean` | `true` | Always use remote config. | | `supportWidgetTheme` | `SupportWidgetTheme` | — | Controls the appearance of the in-app support widget, including dynamic theme behavior. | +| `enableSupportChatStreaming` | `boolean?` | `false` | When `true`, enables real-time AI agent response streaming in PLuG conversations (WebSocket streaming, optimistic UI, animated text). | +| `supportWidgetArticleSearchFilters` | `ArticleSearchFilters?` | — | Optional filters for PLuG article search (widget and CMDK). Applied automatically when the support widget is ready. | ##### Support widget theme options @@ -175,6 +181,10 @@ const customTheme = { bottom: '20px', side: '16px', }, + conversationPageOptions: { + headerText: 'Support', + subheaderText: 'We typically reply in a few minutes', + }, }; ``` @@ -184,6 +194,16 @@ const customTheme = { | `primaryTextColor` | `string?` | — | Hex color string (e.g. `'#000000'`, `'#1F2933'`) for primary text in the support widget. | | `accentColor` | `string?` | — | Hex color string (e.g. `'#F97316'`, `'#FF0000'`) applied to buttons and highlights. | | `spacing` | `{ [key: string]: string }?` | — | CSS-like spacing overrides (`bottom` and `side` keys are recognized). | +| `conversationPageOptions` | `ConversationPageOptions?` | — | Customizes the conversation page header branding. | + +##### Conversation page options + +`ConversationPageOptions` customizes the header strings shown on the support conversation page. Both fields are optional — when omitted, the server-configured defaults are used. + +| Property | Type | Default | Description | +|----------|------|---------|-------------| +| `headerText` | `string?` | — | Custom text for the conversation header. | +| `subheaderText` | `string?` | — | Custom text for the conversation subheader. Pass a single space (`' '`) to render a blank subheader. | ## Features @@ -365,7 +385,13 @@ DevRev.showSupport() You can initiate a new support conversation directly from your app. This method displays the support chat screen and simultaneously creates a new conversation. ```typescript -DevRev.createSupportConversation() +DevRev.createSupportConversation(prefillMessage?: string) +``` + +You can optionally pass a plain-text message to prefill the conversation input field: + +```typescript +DevRev.createSupportConversation('I need help with billing for order #12345') ``` ### In-app link handling diff --git a/devrev-sdk-react-native-2.3.9.tgz b/devrev-sdk-react-native-2.3.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3b7faa4af374f7bb28ce4775a8c80d67d7eef19b GIT binary patch literal 51929 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 Glmq}86nwA% literal 0 HcmV?d00001 diff --git a/sample/expo/package.json b/sample/expo/package.json index 3a7e389..0353fde 100644 --- a/sample/expo/package.json +++ b/sample/expo/package.json @@ -48,6 +48,15 @@ "@types/react": "~19.0.10", "typescript": "~5.8.3" }, + "resolutions": { + "@grpc/grpc-js": "^1.9.16", + "postcss": "^8.5.0", + "protobufjs": "^7.5.8", + "qs": "^6.15.2", + "shell-quote": "^1.8.4", + "uuid": "^9.0.0", + "ws": "^8.20.1" + }, "private": true, "expo": { "autolinking": { diff --git a/sample/package.json b/sample/package.json index 7f98b83..6b93236 100644 --- a/sample/package.json +++ b/sample/package.json @@ -10,7 +10,7 @@ "build:ios": "react-native build-ios --scheme DevRevSDKSample --mode Debug --extra-params \"-sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO\"" }, "dependencies": { - "@devrev/sdk-react-native": "^2.3.4", + "@devrev/sdk-react-native": "^2.3.9", "@notifee/react-native": "^9.1.3", "@react-native-community/cli-platform-ios": "^13.6.9", "@react-native-firebase/app": "^21.0.0", diff --git a/sample/react-native/android/build.gradle b/sample/react-native/android/build.gradle index f37f1ec..8dc0493 100644 --- a/sample/react-native/android/build.gradle +++ b/sample/react-native/android/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { classpath("com.android.tools.build:gradle:8.6.1") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0") classpath("com.google.gms:google-services:4.4.2") } } @@ -22,7 +22,7 @@ ext { compileSdkVersion = 35 targetSdkVersion = 35 ndkVersion = "26.1.10909125" - kotlinVersion = "2.0.21" + kotlinVersion = "2.1.0" } apply plugin: "com.facebook.react.rootproject" @@ -39,4 +39,26 @@ rootProject.allprojects { } } } + + configurations.all { + resolutionStrategy { + force "io.netty:netty-codec-http2:4.1.135.Final" + force "io.netty:netty-codec-http:4.1.135.Final" + force "io.netty:netty-codec:4.1.135.Final" + force "io.netty:netty-handler:4.1.135.Final" + force "io.netty:netty-handler-proxy:4.1.135.Final" + force "io.netty:netty-common:4.1.135.Final" + force "io.netty:netty-transport-native-unix-common:4.1.135.Final" + force "com.google.protobuf:protobuf-java:3.25.5" + force "commons-io:commons-io:2.14.0" + force "junit:junit:4.13.1" + force "org.jetbrains.kotlin:kotlin-stdlib:2.1.0" + force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0" + force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.0" + force "org.robolectric:robolectric:4.15" + force "org.assertj:assertj-core:3.27.7" + force "org.bouncycastle:bcprov-jdk18on:1.84" + force "com.google.android.gms:play-services-basement:18.0.2" + } + } } diff --git a/sample/react-native/ios/DevRevSDKSampleRN.xcworkspace/xcshareddata/swiftpm/Package.resolved b/sample/react-native/ios/DevRevSDKSampleRN.xcworkspace/xcshareddata/swiftpm/Package.resolved index c8f7252..715afd7 100644 --- a/sample/react-native/ios/DevRevSDKSampleRN.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/sample/react-native/ios/DevRevSDKSampleRN.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/devrev/devrev-sdk-ios.git", "state" : { - "revision" : "9d0c748067ed66906dc0a9388abdf2aa2a3b9de7", - "version" : "2.3.6" + "revision" : "1c2ce7a441affde1a57339e9af3e8831788c5d4f", + "version" : "2.3.8" } } ], diff --git a/sample/react-native/ios/Podfile b/sample/react-native/ios/Podfile index 7222b41..96a50fd 100644 --- a/sample/react-native/ios/Podfile +++ b/sample/react-native/ios/Podfile @@ -48,12 +48,6 @@ post_integrate do |installer| /#{root_uuid} \/\* DevRevSDK \*\/ = \{\n\t\t\tisa = XCSwiftPackageProductDependency;/, ) - post_install do |installer| - react_native_post_install( - installer, - config[:reactNativePath], - :mac_catalyst_enabled => false, - # :ccache_enabled => true if spm_collision && !content.include?('isa = PBXProject') content = content.gsub( "#{root_uuid} /* DevRevSDK */", diff --git a/sample/react-native/ios/Podfile.lock b/sample/react-native/ios/Podfile.lock index 975dbd9..ac9f2a7 100644 --- a/sample/react-native/ios/Podfile.lock +++ b/sample/react-native/ios/Podfile.lock @@ -2,7 +2,7 @@ PODS: - boost (1.84.0) - BVLinearGradient (2.8.3): - React-Core - - devrev-sdk-react-native (2.3.1): + - devrev-sdk-react-native (2.3.2): - DoubleConversion - glog - hermes-engine @@ -1999,7 +1999,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNSVG (15.15.4): + - RNPermissions (5.5.1): - DoubleConversion - glog - hermes-engine @@ -2022,9 +2022,33 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.15.4) - Yoga - - RNSVG/common (15.15.4): + - RNSVG (15.15.5): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNSVG/common (= 15.15.5) + - Yoga + - RNSVG/common (15.15.5): - DoubleConversion - glog - hermes-engine @@ -2141,6 +2165,7 @@ DEPENDENCIES: - "RNFBInstallations (from `../node_modules/@react-native-firebase/installations`)" - "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)" - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNPermissions (from `../node_modules/react-native-permissions`) - RNSVG (from `../node_modules/react-native-svg`) - VisionCamera (from `../node_modules/react-native-vision-camera`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -2324,6 +2349,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-firebase/messaging" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" + RNPermissions: + :path: "../node_modules/react-native-permissions" RNSVG: :path: "../node_modules/react-native-svg" VisionCamera: @@ -2334,7 +2361,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70 - devrev-sdk-react-native: c39d15eaac67cdb71efbf3b939baffd9a34fcf32 + devrev-sdk-react-native: 146e6600a96c7bdb545e45c8d9af0aadd5fdf0f2 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 FBLazyVector: b60fe06f0f15b7d7408f169442176e69e8eeacde @@ -2424,7 +2451,8 @@ SPEC CHECKSUMS: RNFBInstallations: 533a3f89922cf8da06147176127beb06f03a1ba3 RNFBMessaging: 8e747b6a477b4ee27b8cefde1e94a215b22bd860 RNGestureHandler: ee4fab31b7325a6090ccd19392800a5e0911a2d5 - RNSVG: 0917f41364761ab9f5f488a51c3d10428c3c8dd1 + RNPermissions: a1e9844aad4410e084c81ce16458cd6befbf86aa + RNSVG: 76243ae0219c97fc021489356341a1d044b08466 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 VisionCamera: 7187b3dac1ff3071234ead959ce311875748e14f Yoga: fce72270ebed754904bbe5e18bb05cda3c3075db diff --git a/sample/react-native/package.json b/sample/react-native/package.json index cc674ed..61622b1 100644 --- a/sample/react-native/package.json +++ b/sample/react-native/package.json @@ -73,7 +73,13 @@ } }, "resolutions": { - "protobufjs": ">=7.5.8" + "@grpc/grpc-js": "^1.9.16", + "postcss": "^8.5.0", + "protobufjs": "^7.5.8", + "qs": "^6.15.2", + "shell-quote": "^1.8.4", + "uuid": "^9.0.0", + "ws": "^8.20.1" }, "peerDependencies": { "@react-navigation/native": "^6.0.8", diff --git a/sample/react-native/src/screens/SessionAnalyticsScreen.tsx b/sample/react-native/src/screens/SessionAnalyticsScreen.tsx index fe18ff7..baff469 100644 --- a/sample/react-native/src/screens/SessionAnalyticsScreen.tsx +++ b/sample/react-native/src/screens/SessionAnalyticsScreen.tsx @@ -76,6 +76,41 @@ const OnDemandSessionButtons = [ }, ] as const; +const FeatureConfigurationButtons = [ + { + text: 'Enable Frame Capture', + onPress: () => + DevRev.updateFeatureConfiguration({ + enableFrameCapture: true, + autoStartRecording: true, + prefersDialogMode: false, + alwaysUseRemoteConfig: true, + supportWidgetTheme: { prefersSystemTheme: true }, + }), + }, + { + text: 'Disable Frame Capture', + onPress: () => + DevRev.updateFeatureConfiguration({ + enableFrameCapture: false, + autoStartRecording: true, + prefersDialogMode: false, + alwaysUseRemoteConfig: true, + supportWidgetTheme: { prefersSystemTheme: true }, + }), + }, +] as const; + +const CaptureErrorButtons = [ + { + text: 'Capture Error', + onPress: () => { + const error = new Error('Simulated handled error for testing'); + DevRev.captureError(error, 'test-error'); + }, + }, +] as const; + const WebViewButton = [ { text: 'Open Web View', @@ -212,6 +247,28 @@ const SessionAnalyticsScreen: React.FC<{ navigation: any }> = ({ placeholder="Manually Unmasked UI Item" /> + Feature Configuration + {FeatureConfigurationButtons.map((button, index) => ( + + ))} + + Error Capture + {CaptureErrorButtons.map((button, index) => ( + + ))} + On-Demand Sessions {OnDemandSessionButtons.map((button, index) => ( { text: 'Create Support Conversation', onPress: () => { console.log('Creating support conversation'); - DevRevSDK.createSupportConversation(); + DevRevSDK.createSupportConversation('Hi, I need help with my account'); }, }, ];