Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.13] - 2026-11-11

### Added
- Added an abort recording API to discard the current session recording without uploading it.

### Fixed
- [Android] Fixed ANRs on Android 10 and 11 caused by gesture detection during session recording.
- [Android] Fixed an issue with screenshot capture that could cause instability in session replays.
- [Android] Improved handling of low-memory conditions when saving screenshots during session recording.
- [iOS] Fixed an issue where session videos failed to upload when the app was killed rapidly.
- [iOS] Fixed an issue where auto-masking settings were not properly applied when toggled on or off through remote settings.

## [2.3.12] - 2026-10-22

### Fixed
- [Android] Fixed an issue where dialogs were not captured correctly in session replays.
- [iOS] Fixed lag during session recording when screens are within navigation flows.
- [iOS] Fixed an intermittent "session not found" error when uploading a killed or terminated session.

## [2.3.11] - 2026-10-07

### Added
- [Android] - Added support for session recording on Android 17
- [iOS] - Session Replay now masks the on-screen keyboard area to avoid capturing sensitive input.

### Fixed
- [Android] A user whose account was deleted on the backend is now re-identified automatically instead of failing subsequent requests.
- [iOS] Fixed a crash related to flushing of log entries.

## [2.3.10] - 2026-09-03

### Added
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,9 @@ The DevRev SDK allows you to send custom analytic events by using a properties m
DevRev.trackEvent(name: string, properties?: { [key: string]: string })
```

> [!NOTE]
> Event names must match the regular expression `^[a-zA-Z0-9_-]+$` — use only letters, digits, underscores, and hyphens. Names containing other characters are rejected. Keep event names and properties small: large payloads bloat the device's local memory and can lead to missed recordings.

### Session analytics

The DevRev SDK offers session analytics features to help you understand how users interact with your app.
Expand Down Expand Up @@ -464,6 +467,7 @@ The session recording feature includes the following methods to control the reco
|--------------------------------------------------------------------|-----------------------------------------------------------|
|`DevRev.startRecording()` | Starts the session recording. |
|`DevRev.stopRecording()` | Stops the session recording and uploads it to the portal. |
|`DevRev.abortRecording(autoStartOnNextLaunch = false)` | Ends the session recording and discards it without uploading. With `autoStartOnNextLaunch = true`, the next hot launch starts recording again. |
|`DevRev.pauseRecording()` | Pauses the ongoing session recording. |
|`DevRev.resumeRecording()` | Resumes a paused session recording. |
|`DevRev.processAllOnDemandSessions()` | Stops the ongoing user recording and sends all on-demand sessions along with the current recording. |
Expand Down
Binary file added artifacts/devrev-sdk-react-native-2.3.13.tgz
Binary file not shown.
5 changes: 5 additions & 0 deletions sample/expo/screens/SessionAnalyticsScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ const SessionMonitoringButtons = [
const SessionRecordingButtons = [
{ text: 'Start Recording', onPress: DevRev.startRecording },
{ text: 'Stop Recording', onPress: DevRev.stopRecording },
{ text: 'Abort Recording', onPress: () => DevRev.abortRecording() },
{
text: 'Abort Recording (Auto-Start On)',
onPress: () => DevRev.abortRecording(true),
},
{ text: 'Pause Recording', onPress: DevRev.pauseRecording },
{ text: 'Resume Recording', onPress: DevRev.resumeRecording },
{
Expand Down
2 changes: 1 addition & 1 deletion sample/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.10",
"@devrev/sdk-react-native": "^2.3.13",
"@notifee/react-native": "^9.1.3",
"@react-native-community/cli-platform-ios": "^13.6.9",
"@react-native-firebase/app": "^21.0.0",
Expand Down
5 changes: 5 additions & 0 deletions sample/react-native/src/screens/SessionAnalyticsScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ const SessionMonitoringButtons = [
const SessionRecordingButtons = [
{ text: 'Start Recording', onPress: DevRev.startRecording },
{ text: 'Stop Recording', onPress: DevRev.stopRecording },
{ text: 'Abort Recording', onPress: () => DevRev.abortRecording() },
{
text: 'Abort Recording (Auto-Start On)',
onPress: () => DevRev.abortRecording(true),
},
{ text: 'Pause Recording', onPress: DevRev.pauseRecording },
{ text: 'Resume Recording', onPress: DevRev.resumeRecording },
{
Expand Down
Loading