feat: Support Traces, Logs, Metrics in mobile dotnet 0.5.0#428
Merged
Conversation
* main: feat: Optional Jet Compose (#402) feat: Android Incremental Image Diff compression (#390) chore: add CLAUDE.md (#398) chore: release main (#400) fix: correct react native session replay build step (#399) chore: release main (#396) fix: Android span e2e tests (#397) fix: improve network response capture (#379) # Conflicts: # sdk/@launchdarkly/mobile-dotnet/.vscode/tasks.json
* main: chore: release main (#401)
(cherry picked from commit 9901600)
* andrey/hooks: comment identify stuff fat working working can launch
Vadman97
approved these changes
Mar 26, 2026
# Conflicts: # sdk/@launchdarkly/mobile-dotnet/observability/bridge/LDViewExtensions.cs # sdk/@launchdarkly/mobile-dotnet/observability/observe/api/LDViewExtensions.cs # sdk/@launchdarkly/mobile-dotnet/observability/replay/api/LDViewExtensions.cs # sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/client/InstrumentationManager.kt # sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/client/ObservabilityClient.kt # sdk/@launchdarkly/observability-android/lib/src/main/kotlin/com/launchdarkly/observability/plugin/Observability.kt # sdk/@launchdarkly/observability-android/lib/src/test/kotlin/com/launchdarkly/observability/sdk/AttributeConverterTest.kt
…ude local client SDK
…ability-sdk into andrey/dotnet-traces
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Merged
abelonogov-ld
pushed a commit
that referenced
this pull request
Mar 27, 2026
🤖 I have created a release *beep* *boop* --- <details><summary>launchdarkly-observability-android: 0.33.0</summary> ## [0.33.0](launchdarkly-observability-android-0.32.0...launchdarkly-observability-android-0.33.0) (2026-03-27) ### Features * Support Traces, Logs, Metrics in mobile dotnet 0.5.0 ([#428](#428)) ([8e9483a](8e9483a)) </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** > Low risk release bookkeeping only: bumps `sdk/@launchdarkly/observability-android` version and updates the changelog/manifest with no functional code changes shown in this diff. > > **Overview** > Updates the release metadata for `sdk/@launchdarkly/observability-android` to `0.33.0` by bumping the version in `.release-please-manifest.json` and `gradle.properties`. > > Adds the `0.33.0` entry to `sdk/@launchdarkly/observability-android/CHANGELOG.md` describing the new feature included in this release. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1567e02. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Summary: This PR adds distributed tracing support to the .NET MAUI and Android SDKs, refactors the plugin initialization architecture, expands the LDObserve public API with full Android implementation, and significantly improves the README documentation.
Architecture Overview
The tracing pipeline works as follows:
C# side: LDObserve.StartActiveSpan() creates .NET Activity objects via an OpenTelemetry TracerProvider (LDTracer singleton)
Export: LDTraceExporter catches completed spans and forwards them to TraceBuilderAdapter
Bridge: TraceBuilderAdapter calls the native tracer (iOS ObjcTracer / Android KotlinTracer) to re-create the span natively with the same trace/span/parent IDs and timestamps
Android ID mapping: Since OTel Java auto-generates new IDs, KotlinTracer stashes the C#-supplied IDs as __bridge.trace_id / __bridge.span_id attributes, and SamplingTraceExporter.applyBridgeIdOverrides() swaps them in before export
How did you test this change?
Are there any deployment considerations?
Note
High Risk
Medium-to-high risk: introduces new cross-language tracing pipeline (OpenTelemetry exporter + native span recreation/ID overrides) and refactors plugin initialization and hook wiring across Android/iOS, which can affect telemetry correctness and startup sequencing.
Overview
Adds full Observability support to the .NET MAUI SDK:
LDObservenow records logs/errors/metrics on Android as well as iOS, and introduces a new OpenTelemetry-based tracing path (LDTracer+LDTraceExporter) that forwards completed .NET spans to native tracers on iOS/Android.Refactors native plugin startup and hook wiring: replaces
NativePluginConnectorwithPluginOrchestrator, splits observability vs session-replay hook export (NativeObservabilityHookExporter/NativeSessionReplayHookExporter), and updates native bridges (new AndroidLDObserveBridgeAdapter, new Kotlin bridge package/classes, iOS binding additions) to expose hook proxies + tracer builders.Updates packaging/docs/samples: bumps mobile-dotnet version to
0.5.0, addsOpenTelemetryand newerLaunchDarkly.ClientSdkdeps, enables Android metrics by default, updates README from “Session Replay” to “Observability”, and expands the MAUI sample with new trace/log demos and aDialogsPageplus extra UI dependencies.Written by Cursor Bugbot for commit 65bf8e3. This will update automatically on new commits. Configure here.