Skip to content

feat: O11Y-969 - Add runtime control for Session Replay capture #355

Merged
abelonogov-ld merged 11 commits intomainfrom
agrognetti/O11Y-920
Jan 27, 2026
Merged

feat: O11Y-969 - Add runtime control for Session Replay capture #355
abelonogov-ld merged 11 commits intomainfrom
agrognetti/O11Y-920

Conversation

@agrognetti
Copy link
Copy Markdown
Contributor

@agrognetti agrognetti commented Jan 23, 2026

Summary

  • add LDReplay singleton and enabled option
  • block capture/export and cache identify while disabled
  • update sample app and docs for delayed start toggle

How did you test this change?

Unit tests


Note

Introduces runtime on/off control for Session Replay and supports delayed start.

  • Adds LDReplay singleton (start/stop/flush) and wires it via SessionReplay.provideInstrumentations()
  • Extends ReplayOptions with enabled flag and gates collectors/capture in ReplayInstrumentation using isEnabled
  • Caches identify while disabled and flushes latest on start; SessionReplayExporter now has sendIdentifyAndCache and cacheIdentify
  • Updates e2e app: Session Replay toggle UI using LDReplay, refactors main screen; enables replay in BaseApplication
  • Docs: README adds "Delay Start" section with examples
  • Tests: new unit tests for LDReplay and exporter identify caching

Written by Cursor Bugbot for commit 1dbdc92. This will update automatically on new commits. Configure here.

- Add maskWebViews support in PrivacyProfile; cover native Android WebView and third-party WebView variants
- Update MaskCollector traversal to reach AndroidView WebViews
- Add XML/Compose test activities and custom views
- Update README/tests
- add LDReplay singleton and enabled option
- block capture/export and cache identify while disabled
- update sample app and docs for delayed start toggle
- Add unit tests in SessionReplayExporterTest to verify identify payload caching and sending.
- Create LDReplayTest to ensure LDReplay delegates start and stop calls to the underlying ReplayControl.
@agrognetti agrognetti requested a review from a team as a code owner January 23, 2026 22:18
Flush pending identify payloads when replay is enabled.
Add LDReplay flush API
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

@abelonogov-ld abelonogov-ld merged commit 1d4398e into main Jan 27, 2026
24 checks passed
@abelonogov-ld abelonogov-ld deleted the agrognetti/O11Y-920 branch January 27, 2026 16:34
Vadman97 added a commit that referenced this pull request Jan 28, 2026
🤖 I have created a release *beep* *boop*
  ---


  <details><summary>go: 1.0.0</summary>

##
[1.0.0](go/v0.4.0...go/v1.0.0)
(2026-01-28)


  ### Features

* Add configuration to allow adjusting the batch and queue sizes for
logs and spans.
([abecbb6](abecbb6))
* Add export samplers.
([#143](#143))
([76fd41e](76fd41e))
* Add query for sampling config.
([#140](#140))
([6800fb1](6800fb1))
* Add trace based sampling for go plugin.
([#170](#170))
([dacbe76](dacbe76))
* Adjust the default export and queue batch sizes for logs and spans to
match the otel defaults.
([abecbb6](abecbb6))
* Basic go plugin implementation.
([#139](#139))
([48badda](48badda))
* Client-side event sampling custom sampler.
([#142](#142))
([82df812](82df812))
* Sample out children of spans that have been sampled out.
([#155](#155))
([a2d1d6e](a2d1d6e))
* Support Go observability initialization independent of plugins.
([#230](#230))
([ddd6d4b](ddd6d4b))


  ### Bug Fixes

* Fix an issue where logging configuration could over-match for log
records without a message or severity.
([#261](#261))
([500a6bf](500a6bf))
* Fix prealloc lint warning by preallocating slice capacity for error
attributes.
* **go:** configure default logger provider
([#192](#192))
([b97854d](b97854d))
  </details>

  <details><summary>launchdarkly-observability-dotnet: 1.0.0</summary>

##
[1.0.0](launchdarkly-observability-dotnet-0.3.0...launchdarkly-observability-dotnet-1.0.0)
(2026-01-28)


  ### Features

* Add basic config for dotnet plugin.
([#167](#167))
([3203e82](3203e82))
* Add custom sampler for dotnet.
([#175](#175))
([de74b20](de74b20))
* Add export/processor samplers.
([#178](#178))
([2431886](2431886))
* Add graphql query to get sampling config.
([#181](#181))
([ee51f80](ee51f80))
* Add initial plugin for dotnet.
([#173](#173))
([564536d](564536d))
* Add singleton for dotnet.
([#185](#185))
([c32cf1c](c32cf1c))
* Add support for environment variable configuration.
([#205](#205))
([5e3b1e1](5e3b1e1))
* Add support for non-core ASP.Net.
([#199](#199))
([b215109](b215109))
* Allow custom configuration of otel.
([#187](#187))
([54e7214](54e7214))
* Extend logging configuration. Format logs by default.
([#242](#242))
([2003517](2003517))


  ### Bug Fixes

* Make attributes optional for RecordLog.
([#202](#202))
([806ce08](806ce08))
  </details>

  <details><summary>launchdarkly-observability-python: 1.0.0</summary>

##
[1.0.0](launchdarkly-observability-python-0.1.1...launchdarkly-observability-python-1.0.0)
(2026-01-28)


  ### Features

* Add observability plugin support.
([#109](#109))
([7bc32bb](7bc32bb))
* Add sampling exporters.
([#99](#99))
([86a4612](86a4612))


  ### Bug Fixes

* Create span when no active span for error.
([#191](#191))
([0341b0f](0341b0f))
  </details>

  <details><summary>observability-node: 1.0.0</summary>

##
[1.0.0](observability-node-0.3.1...observability-node-1.0.0)
(2026-01-28)


  ### Features

* Update instrumentation configuration for ease of use.
([#112](#112))
([011032f](011032f))


  ### Bug Fixes

* Fix an issue where logging configuration could over-match for log
records without a message or severity.
([#261](#261))
([500a6bf](500a6bf))
  </details>

  <details><summary>observability: 1.0.0</summary>

##
[1.0.0](observability-0.5.2...observability-1.0.0)
(2026-01-28)


  ### Features

* publish umd for browser environments
([#334](#334))
([3e90673](3e90673))
* Version Packages
([#136](#136))
([c271dc8](c271dc8))
  </details>

  <details><summary>session-replay: 1.0.0</summary>

##
[1.0.0](session-replay-0.5.2...session-replay-1.0.0)
(2026-01-28)


  ### Features

* publish umd for browser environments
([#334](#334))
([3e90673](3e90673))
* Version Packages
([#136](#136))
([c271dc8](c271dc8))
  </details>

  <details><summary>launchdarkly-observability-android: 0.25.0</summary>

##
[0.25.0](launchdarkly-observability-android-0.24.0...launchdarkly-observability-android-0.25.0)
(2026-01-28)


  ### Features

* O11Y-969 - Add runtime control for Session Replay capture
([#355](#355))
([1d4398e](1d4398e))
  </details>

  ---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Mostly version/changelog updates generated by release tooling; the
only code change is a minor Go allocation tweak in error recording with
minimal behavioral risk.
> 
> **Overview**
> Publishes new release versions across the monorepo, marking the Go,
.NET, Node, Python, Browser Observability, and `session-replay` SDKs as
**1.0.0 stable**, and bumping Android to **0.25.0** (Release Please
changelog + manifest/version file updates).
> 
> Includes one small Go runtime change: `recordSpanError` now
preallocates the attribute slice capacity before appending exception
fields and tags (lint/perf-only, no behavior change intended).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f343da8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Vadim Korolik <vkorolik@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants