# RUM Flutter SDK release notes

May 19, 2026

Flutter SDK 0.5.1

- Fixed obfuscated `virt` addresses that were wrong on iOS (a follow-up to the 0.4.2 fix). The parser now emits `virt` in the canonical `dart symbolize` form `<symbol>+0x<offset>`, which the server resolves against the uploaded debug-info file. This format requires a corresponding server-side update during rollout. (BUGV2-6011 follow-up)
- Fixed an Android parser bug that dropped every frame: the frame regex now allows the extra `virt ADDR` token that Android's Dart runtime emits between `abs ADDR` and the symbol suffix.
- Behavioral change: engine and framework frames (those without a `_kDartIsolateSnapshotInstructions` / `_kDartVmSnapshotInstructions` suffix) are now skipped at parse time, because they can't be resolved against the app's symbols file. The parsed stack trace now carries a `dropped_frame_count` field (omitted when zero). **[Learn more](https://coralogix.com/docs/user-guides/rum/sdk-features/source-maps-flutter/index.md)**

May 13, 2026

Flutter SDK 0.5.0

- New `excludeFromSampling` option on `CXExporterOptions` (CX-40205) keeps selected instrumentation categories emitting even when the session is sampled out via `sdkSampler`. Supported categories: `errors`, `logs`, `network`, `userInteractions`, `mobileVitals`, `customSpan`, and `customMeasurement`. Defaults to an empty list, so the sampler gates everything as before.
- New Time Measurement API (CX-40514): `startTimeMeasure(name, {labels})` and `endTimeMeasure(name)` bracket a span of work, which the native SDK reports as a `custom-measurement` span in milliseconds. Pair every `start` with exactly one `end`. **[Learn more](https://coralogix.com/docs/user-guides/rum/sdk-features/customized-timing/#manual-timer)**
- Native iOS SDK upgraded to 2.6.4.

May 11, 2026

Flutter SDK 0.4.2

- Fixed iOS Session Replay scroll lag (via a native iOS SDK upgrade), particularly on screens with mixed-script (RTL / CJK) text.
- Fixed obfuscated stack trace `virt` addresses: the parser now computes `virt` from the per-frame `_kDartIsolateSnapshotInstructions+0xNNN` offset suffix, falling back to the previous formula only when that suffix or the `isolate_instructions` header is missing. (BUGV2-6011)
- Native iOS SDK upgraded to 2.6.3, Android to 2.12.0.

May 6, 2026

Flutter SDK 0.4.1

- Android text masking (`maskAllTexts` and `textsToMask`) now works in Flutter. Because Flutter renders inside a single `FlutterSurfaceView`, the Flutter layer now walks the live render tree on each frame capture and returns mask regions for visible text to the native Android SDK; off-screen, scrolled-away, and covered content is excluded automatically. iOS is unaffected — it handles text masking natively. **[Learn more](https://coralogix.com/docs/user-guides/rum/product-features/session-replay/flutter/#mask-specific-widgets)**
- `textsToMask` now accepts regex patterns (each entry is compiled as a `RegExp`; plain strings match any text containing the word). Invalid patterns are skipped rather than crashing SDK initialization.
- Text fields (`RenderEditable`) are always masked whenever any `textsToMask` pattern is configured, so sensitive input is never inspected to decide whether to mask it.
- Fixed a sentinel registration race so the first captured frame can no longer be unmasked, and registration failures are now logged.

May 3, 2026

Flutter SDK 0.4.0

- New Custom Spans public API (CX-36096). `getCustomTracer({ignoredInstruments})` returns a `CoralogixCustomTracer` when `traceParentInHeader.enable` is `true`; from there, `startGlobalSpan()` creates a root span, `startCustomSpan()` creates child spans, `withContext()` runs Dart work in a Zone that inherits the active span, and `endSpan()` closes spans. Only one tracer is allowed per SDK lifecycle. **[Learn more](https://coralogix.com/docs/user-guides/rum/sdk-features/custom-spans/index.md)**
- New `CoralogixIgnoredInstrument` enum (`networkRequests`, `userInteractions`, `errors`) opts specific Dart-side instrumentation out of inheriting the active custom span.
- `CxHttpClient` and `CxDioInterceptor` now automatically inherit the active custom span, inject a `traceparent` header, and attach `customTraceId` / `customSpanId` to network events. Bare `http` and raw Dio calls still bypass this — wrap them in `CxHttpClient` / `CxDioInterceptor` to keep the trace linked.
- New `CXExporterOptions.tracesExporter` callback streams completed OTLP-style trace batches over an EventChannel for you to forward to a Coralogix OTLP endpoint. It is additive and does not replace the normal RUM log pipeline. **[Learn more](https://coralogix.com/docs/user-guides/rum/sdk-features/trace-exporter/index.md)**
- Fixed an iOS scroll freeze with session recording, the Android span lifecycle on `shutdown()`, and Android child span IDs (now real OTel `spanId` / `traceId`). `endSpan()` is now idempotent on both platforms (iOS previously threw `unknown_span`).
- Native iOS SDK upgraded to 2.6.2, Android to 2.11.1.

Apr 5, 2026

Flutter SDK 0.3.3

- Fixed release-mode caught exceptions being recorded as logs instead of errors; the iOS bridge now routes through the error path whenever a parsed stack trace is present.
- Fixed empty release-mode stack frames: column numbers are now optional, since Dart AOT (release) stack traces omit them.
- Added a `scripts/bump_version.sh` script to keep version numbers in sync across `pubspec.yaml`, `lib/plugin_version.dart`, and the iOS podspec.
- Added an `ObfuscatedRelease` build configuration to the example app.

Mar 31, 2026

Flutter SDK 0.3.2

- Fixed empty frame addresses when reporting obfuscated Dart errors: the parser now matches the Dart 3.x `abs`-only frame format and computes virtual addresses (`abs − isolate_dso_base`).
- Fixed a release CI failure caused by a missing `.env` asset during example-app validation. (BUGV2-5531)

Mar 26, 2026

Flutter SDK 0.3.1

- Fixed the always-empty `fragments` field in network events: `CxDioInterceptor` and `CxHttpClient` now report the URL path (for example, `/some/path`) instead of the URI fragment. (BUGV2-5509)

Mar 26, 2026

Flutter SDK 0.3.0

- Obfuscated error stack traces now propagate and export correctly through the iOS bridge.
- Fixed iOS scroll lag from interaction tracking: the swipe-context widget-tree walk now runs once at pointer-down and is cached, instead of running on every pointer-up or cancel.

Mar 23, 2026

Flutter SDK 0.2.0

- New `CxDioInterceptor` for the Dio HTTP client: add it to your `Dio` instance to automatically capture network requests, generate RUM spans, and inject W3C `traceparent` headers — no migration from your existing networking layer required.
- New `networkCaptureConfig` option on `CXExporterOptions`: supply a list of `CxNetworkCaptureRule` objects to control which headers and payloads are captured per URL. Rules match in order (first match wins), nothing is captured when no rules are configured, and bodies over 1024 characters are dropped.
- Expanded network context: `CxHttpClient` and `CxDioInterceptor` now report `status_text`, request and response headers and payloads, and `error_message`.
- `beforeSend` is now optional. **Migration:** if you relied on the implicit pass-through, set `beforeSend: (event) => event` explicitly.
- Performance and threading improvements: iOS `setUserInteraction` is now dispatched to the main thread, and Android and iOS move initialization and background work onto appropriate queues.
- Native iOS SDK upgraded to 2.3.3, Android to 2.9.3.

Mar 10, 2026

Flutter SDK 0.1.1

- Hybrid user interaction tracking: when `userActions` is enabled, Dart tracks click, scroll, and swipe events while iOS receives `userActions: false` to avoid duplicates.
- `setUserInteraction` now forwards interaction payloads to the native iOS and Android SDKs, and returns an error when `event_name` is missing or the SDK is not initialized.
- Context types were aligned with the native SDKs across event, device, error, network request, and interaction contexts, with `toJson()` omitting nulls for the `beforeSend` round-trip.
- Native iOS SDK 2.2.0, Android 2.9.0.

Feb 16, 2026

Flutter SDK 0.1.0

- Added Android support for `allowedTracingUrls` in `TraceParentInHeader` configurations.
- Native Android SDK upgraded to 2.7.2, iOS to 2.1.0.

Feb 8, 2026

Flutter SDK 0.0.21

- Added Session Replay support. **[Learn more](https://coralogix.com/docs/user-guides/rum/product-features/session-replay/flutter/index.md)**

Jan 25, 2026

Flutter SDK 0.0.20

- Added the AP3 domain as an option for initializing the SDK.

Jan 21, 2026

Flutter SDK 0.0.19

- **Breaking change:** the package now requires Flutter 3.27.0 or later, which is needed to support the modern `Color.withValues()` API that replaced the deprecated `Color.withOpacity()` method.
- Native iOS SDK upgraded to 1.5.3, plus a bug fix.

Dec 10, 2025

Flutter SDK 0.0.18

- Bug fix (BUGV2-1468).
- Native Android SDK upgraded to 2.6.3.

Nov 13, 2025

Flutter SDK 0.0.17

- Bug fix (BUGV2-1474).
- Native iOS SDK upgraded to 1.4.0.

Sep 28, 2025

Flutter SDK 0.0.16

- Added `sendCustomMeasurement`. **[Learn more](https://coralogix.com/docs/user-guides/rum/sdk-features/custom-measurements/index.md)**
- Native iOS SDK upgraded to 1.2.6.

Sep 21, 2025

Flutter SDK 0.0.15

- Native iOS SDK upgraded to 1.2.5.

Aug 10, 2025

Flutter SDK 0.0.14

- Native iOS SDK upgraded to 1.1.2.

Jul 24, 2025

Flutter SDK 0.0.13

- The Android plugin now respects setting `userActions` to `false`, so user interaction tracking can actually be turned off.
- Native Android SDK upgraded to 2.4.44.

2025

Flutter SDK 0.0.12

- Added `proxyUrl` support.
- Added `traceParentInHeader` (iOS only).
- Native iOS SDK upgraded to 1.0.26.

Jun 22, 2025

Flutter SDK 0.0.11

- Bug fixes.
- Native iOS SDK upgraded to 1.0.24.

Jun 17, 2025

Flutter SDK 0.0.10

- Fixed `beforeSend` not sending instrumentation on Android and iOS.
- Fixed an Android crash.
- Native Android SDK upgraded to 2.4.41, iOS to 1.0.23.

May 28, 2025

Flutter SDK 0.0.9

- Added Android support for the `beforeSend` operation, plus bug fixes and improvements.
- Native Android SDK upgraded to 2.4.4.

May 27, 2025

Flutter SDK 0.0.8

- **Breaking change:** the `CxExporterOptions` `beforeSend` callback is now asynchronous.
- Added Android support for `getLabels()`, `getSessionId()`, `isInitialized()`, `setApplicationContext()`, and the `beforeSend` callback.
- Disabled swizzling for iOS (NetworkOnly).
- Native iOS SDK upgraded to 1.0.22, Android to 2.4.3.

May 8, 2025

Flutter SDK 0.0.7

- Implemented `beforeSend`, `getLabels()`, `getSessionId()`, `isInitialized()`, and `setApplicationContext()`.
- Native SDK upgraded to 1.0.21.

Apr 24, 2025

Flutter SDK 0.0.6

- Fixed a crash related to `URLSessionInstrumentation`.
- Removed the Navigation instrument from `CoralogixOptions`.
- Native SDK upgraded to 1.0.20.

Apr 8, 2025

Flutter SDK 0.0.5

- Removed `CustomDomainUrl`.
- Native SDK upgraded to 1.0.18.

Feb 10, 2025

Flutter SDK 0.0.4

- Fixed a bug that prevented data from being sent on Android when no custom URL was set.

Dec 15, 2024

Flutter SDK 0.0.3

- Added the Android implementation.

Nov 25, 2024

Flutter SDK 0.0.2

- Added `sdkSampler` to set the SDK initialization rate as a percentage (0–100%).
- Added `mobileVitalsFPSSamplingRate` to set the FPS sampling frequency per hour (default once a minute).
- Added `instrumentations` to selectively activate or deactivate specific instruments at runtime (all active by default).
- Added `collectIPData` to toggle collection of user IP and geolocation data (default `true`).

Jul 18, 2024

Flutter SDK 0.0.1

- Added Android support for `allowedTracingUrls` in `TraceParentInHeader` configurations.
- Native Android SDK 2.7.2, iOS SDK 2.1.0.
