From 73b4995cef40242b03e57d522ae658e2f1b7b62a Mon Sep 17 00:00:00 2001 From: svc-devrev Date: Thu, 2 Jul 2026 13:35:09 +0000 Subject: [PATCH] [skip ci] Release v2.3.7 This PR contains the automated release updates for version 2.3.7. Changes: - Updated sample app - Updated documentation - Updated README, CHANGELOG, and MIGRATION guide --- CHANGELOG.md | 29 +++++++++ README.md | 28 ++++++++- devrev-sdk-react-native-2.3.7.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, 191 insertions(+), 20 deletions(-) create mode 100644 devrev-sdk-react-native-2.3.7.tgz diff --git a/CHANGELOG.md b/CHANGELOG.md index 58f54cc..d7cff69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,35 @@ 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.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.7.tgz b/devrev-sdk-react-native-2.3.7.tgz new file mode 100644 index 0000000000000000000000000000000000000000..96836da178abf420d569f75b9daa7e76989872fe GIT binary patch literal 51929 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 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'); }, }, ];