NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3259 most downloaded on pub.dev
The Coralogix SDK for Flutter is designed to support various Flutter targets by leveraging the numerous platforms supported by Coralogix's native SDKs.
Last release today
07 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 46 of 46 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
46 releases · first in 2024
Added optional accountId and accountName to UserMetadata.
Release Date: October 7, 2026
accountId and accountName to UserMetadata.Release Date: September 10, 2026
Release Date: September 10, 2026
One column per month.
Release Date: September 7, 2026
Release Date: September 7, 2026
captureScreenshot() now appears in the event stream on iOS — previously it captured a frame but reported nothing.New: interactions on masked content are reported as masked. A tap anywhere on a control wrapped in MaskedWidget — or on a control containing masked co
Release Date: August 12, 2026
MaskedWidget — or on a control containing masked content — reports interaction_context.is_masked_element: true and redacts its text to ***. Session Replay draws no tap marker over a masked control, so a recording can no longer reveal which key of a masked keypad was pressed.maskAllTexts, textsToMask, maskAllImages) hides those pixels in the recording and suppresses tap markers, but does not redact interaction text — matching the Android, iOS and web SDKs.beforeSend can read is_masked_element and drop the event or edit its interaction context.beforeSend no longer breaks Session Replay. Top-level event fields the plugin does not model — screenshot_context among them — were dropped in transit, which left recordings without a timeline and prevented playback. Unmodelled fields nested inside a context the plugin does model are still dropped.beforeSend users: fields the plugin does not model are forwarded exactly as the SDK sent them and are not exposed to the callback, so they cannot be edited or removed there — returning null to drop the whole event is the only way to withhold them. Events therefore carry fields that earlier versions silently discarded.getSessionReplayFolderPath throwing on Android instead of returning the path.beforeSend is configured and the SDK reports an event type this plugin version does not model — they are now delivered unchanged.Fix: network request durations are now reported correctly on iOS — previously every request instrumented by the Dart layer showed a duration of 1 ms.
Release Date: August 11, 2026
Native iOS SDK bumped to 2.14.0 and Android SDK to 2.21.1 — buffered telemetry is now flushed automatically when the app enters the background, so eve
Release Date: August 10, 2026
androidx.work transitively; apps that replace the default WorkManager initializer with on-demand initialization keep the immediate flush but skip the backstop job.Native iOS SDK bumped to 2.13.3 and Android SDK to 2.19.4. The updated native SDKs now promote snapshot context on setUserContext to the next eligible
Release Date: August 6, 2026
setUserContext to the next eligible exported span, ensuring user-context changes are captured in the session without requiring a manual snapshot trigger.New: `reportError` now accepts optional `labels` and `isCrash` — add per-event labels and distinguish caught vs. uncaught exceptions in a single call.
Release Date: August 2, 2026
reportError now accepts optional labels and isCrash — add per-event labels and distinguish caught vs. uncaught exceptions in a single call. Labels merge into the event's labels alongside session-level labels; isCrash: true marks unhandled exceptions for native SDK sampling/grouping. (On iOS, isCrash applies only to errors reported with a stack trace — the native message/data variants don't carry it.)reportError(error, …) now reports error.runtimeType (e.g. StateError, PlatformException) as the event's error type instead of the generic FlutterError, so errors group by type in the dashboard. String messages still report as FlutterError.stackTrace is passed, reportError(error) recovers the stack from error.stackTrace on Dart Error subtypes, promoting calls to the full code path (iOS/Android benefit from this for errorType context and data forwarding).CxFlutterPluginPlatform.reportError gained named parameters (errorType, isCrash, labels) — custom CxFlutterPluginPlatform subclasses must update their override. The public CxFlutterPlugin.reportError keeps its three-positional shape and stays source-compatible for app code.Bug fix (iOS): Session Replay no longer goes black while the screen is animating continuously (spinners, transitions); the recording now holds the las
Release Date: July 23, 2026
Bug fix (iOS): network requests instrumented with the Dio interceptor now report the same trace id sent in the traceparent header, so they link to the
Release Date: July 14, 2026
traceparent header, so they link to their backend traces (Android already did).New: `createNewSession()` — force-starts a fresh RUM session on demand (e.g. on user logout) without a full shutdown() + re-init, on both iOS and Andr
Release Date: July 5, 2026
createNewSession() — force-starts a fresh RUM session on demand (e.g. on user logout) without a full shutdown() + re-init, on both iOS and Android. Bridges the native SDKs' session-recreation API.createNewSession).Bug fix: Session Replay masking errors during route transitions, bottom sheets, and taps. Text could briefly appear unmasked — or a mask land at the w
Release Date: June 29, 2026
1/devicePixelRatio of the frame. It is now captured at the FlutterView's physical resolution and fills the frame. (iOS maps logical points 1:1 and was unaffected.)Bug fix: Android build failed for consumers on Kotlin 2.x (K2 compiler). An internal helper used an expression body containing early return null short
Release Date: June 21, 2026
return null short-circuits, which the K2 compiler (Kotlin 2.2+) rejects as a hard error (Returns are not allowed for functions with expression body), breaking :cx_flutter_plugin:compileDebugKotlin. Converted to a block body — logic is unchanged.mavenLocal() and a local-repo block from android/build.gradle. These were accidentally shipped; dependency resolution now relies on google() / mavenCentral() as intended.Bug fix: `reportError` now honours its public contract on both platforms. Previously, calling CxFlutterPlugin.reportError(message, data, stackTrace) w
Release Date: June 4, 2026
reportError now honours its public contract on both platforms. Previously, calling CxFlutterPlugin.reportError(message, data, stackTrace) with a non-empty stack trace silently dropped the data map — the parsed frames went to native but the custom attributes did not. The iOS and Android bridges now thread data through into the new customAttributes parameter on the native error decorators, so a single RUM error event carries both the parsed frames and the data attributes.reportError(... customAttributes:) overloads.customAttributes field on CoralogixErrorDecorator.Bug fix (follow-up): obfuscated `virt` addresses were wrong on iOS. The 0.4.2 fix computed virt = offset + (isolate_instructions − isolate_dso_base).
Release Date: May 19, 2026
virt addresses were wrong on iOS. The 0.4.2 fix computed virt = offset + (isolate_instructions − isolate_dso_base). On Android this coincidentally equals the ELF VMA of _kDartIsolateSnapshotInstructions (libapp.so is loaded with matching layout), but on iOS the Dart snapshots are linked into the Runner Mach-O at a different VMA — the result was off by ~1.3 MB and resolved to the wrong symbols. The parser now emits virt in the canonical dart symbolize form <symbol>+0x<offset> (e.g. _kDartIsolateSnapshotInstructions+0x2d01ef); the server reads the symbol's ELF VMA from the uploaded debug-info file and adds the offset. Server-side update required to accept the new format alongside legacy numeric virt during rollout.virt ADDR token between abs ADDR and the symbol suffix (iOS does not). The frame regex now allows this optional middle token._kDartIsolateSnapshotInstructions / _kDartVmSnapshotInstructions suffix (Flutter engine, OS frameworks) live in different DSOs and cannot be resolved against the app's symbols file — emitting virt values for them was producing addresses pointing at DATA sections. The parsed stack trace now carries dropped_frame_count so consumers can distinguish "all frames filtered" from "parser found nothing" when frames is empty (omitted from the map when zero).New: `excludeFromSampling` on `CXExporterOptions`. Lets the SDK keep emitting selected instrumentation categories even when the session is sampled out
Release Date: May 13, 2026
excludeFromSampling on CXExporterOptions. Lets the SDK keep emitting selected instrumentation categories even when the session is sampled out via sdkSampler. Supported categories: errors, logs, network, userInteractions, mobileVitals, customSpan, customMeasurement. Defaults to an empty list — the sampler gates everything as before. Mirrors the iOS and Android native APIs added in their 3.8.0 / 2.12.0 releases.CxFlutterPlugin.startTimeMeasure(name, {labels}) and CxFlutterPlugin.endTimeMeasure(name) bracket arbitrary spans of work; the native SDK reports the duration as a custom-measurement span (milliseconds). Pure bridge pass-through — no Dart-side state, native owns the in-flight registry. Empty / whitespace-only names and duplicate start for an in-flight name are ignored (first wins). Callers are responsible for pairing every start with exactly one end.Bug fix (iOS Session Replay scroll lag): Resolved by native iOS SDK upgrade. Long scroll sessions with Session Replay enabled no longer jank, particul
Release Date: May 11, 2026
virt addresses): Some production traces emitted an abs field that did not equal isolate_instructions + offset, so the previous abs − isolate_dso_base formula produced incorrect virtual addresses and the server-side symbolicator returned the wrong source mappings. The parser now computes virt = offset + (isolate_instructions − isolate_dso_base) from the per-frame _kDartIsolateSnapshotInstructions+0xNNN suffix — the authoritative source — and falls back to abs − isolate_dso_base only when the offset suffix or isolate_instructions header is missing.New (Android): `maskAllTexts` and `textsToMask` now work in Flutter. Flutter renders entirely inside FlutterSurfaceView, so the native Android SDK's V
Release Date: May 6, 2026
maskAllTexts and textsToMask now work in Flutter. Flutter renders entirely inside FlutterSurfaceView, so the native Android SDK's View-hierarchy traversal finds no TextViews. The Flutter layer now walks the live render tree on every frame capture and returns bounding rects for all visible RenderParagraph / RenderEditable nodes directly to the native flutterMaskRegionsProvider. Icon glyphs (Unicode Private Use Area), content scrolled behind the AppBar or outside any scroll viewport, and content on covered Navigator routes are all excluded automatically. iOS is unaffected — the native iOS SDK handles text masking itself.textsToMask accepts regex patterns. Each entry is compiled as a RegExp; plain strings like 'password' match any text containing that word. Invalid patterns are silently skipped rather than crashing SDK initialisation.RenderEditable) are always masked when textsToMask is active. Reading live text field content to filter against patterns would mean inspecting potentially sensitive data (passwords, PINs) to decide whether to mask it — so all editable inputs are masked unconditionally whenever any textsToMask pattern is configured.SessionReplayMasking.initialize() is now async and awaits the sentinel registerMaskRegion call before returning, eliminating a race where the very first captured frame could be unmasked.debugPrint warning is now emitted if the sentinel fails to register.New: Custom Spans public API. CxFlutterPlugin.getCustomTracer({ignoredInstruments}) returns a CoralogixCustomTracer when traceParentInHeader.enable is
Release Date: May 3, 2026
CxFlutterPlugin.getCustomTracer({ignoredInstruments}) returns a CoralogixCustomTracer when traceParentInHeader.enable is true. From there, tracer.startGlobalSpan(name, {labels}) creates a root CoralogixGlobalSpan exposing spanId/traceId; globalSpan.startCustomSpan(name, {labels}) creates child CoralogixCustomSpans; globalSpan.withContext(block) runs Dart work in a Zone whose async chain inherits the active span's id; and endSpan() closes spans on the native SDK. Mirrors the browser SDK contract — only one tracer per SDK lifecycle is allowed; subsequent getCustomTracer calls return the cached instance.CoralogixIgnoredInstrument enum (networkRequests, userInteractions, errors) — pass to getCustomTracer to opt specific Dart-side instrumentation out of inheriting the active custom span.CxHttpClient and CxDioInterceptor now read the active global span via Utils.resolveTraceId(), inject traceparent carrying the inherited traceId, and attach customTraceId/customSpanId to every network event. Bare http.get() / raw Dio still bypass — wrap in CxHttpClient / CxDioInterceptor to keep the trace linked.CXExporterOptions.tracesExporter callback. When provided, the native SDK streams completed OTLP-style trace batches over a new cx_flutter_plugin/onTracesExporter EventChannel. Caller is responsible for forwarding to a Coralogix OTLP endpoint. Additive — does not replace the normal RUM log pipeline.shutdown() now ends tracked spans on Android (was iOS-only); avoids dangling spans after Dart-side CxFlutterPlugin.shutdown().startCustomSpan now returns the real OTel spanId/traceId from the underlying span instead of a fabricated hex — cross-system trace correlation now works on Android the same as iOS.endSpan idempotence): Both platforms now succeed silently when a spanId is already untracked (e.g. ended by the 30s idle timer, by removeAll() on shutdown, or by a duplicate Dart-side call). Previously iOS threw unknown_span.getCustomTracer → startGlobalSpan → withContext + CxHttpClient → startCustomSpan → endSpan, including ignoredInstruments behavior and traceParentInHeader prerequisite.CXExporterOptions.tracesExporter and consuming OTLP-style batch payloads from the EventChannel bridge.CoralogixCustomTracer, CoralogixGlobalSpan, CoralogixCustomSpan, and CoralogixIgnoredInstrument so custom-spans API behavior and intent are explicit in generated docs.Bug fix (release mode errors sent as log): In release builds, caught exceptions produced empty stack trace frames, causing the iOS bridge to fall thro
Release Date: April 5, 2026
reportError(message:data:) which the native SDK recorded as a log event instead of an error. The bridge now always routes through the error path when a parsed stack trace is present.scripts/bump_version.sh to keep pubspec.yaml, lib/plugin_version.dart, and ios/cx_flutter_plugin.podspec in sync.ObfuscatedRelease build configuration to the example app for easy switching between symbolicated and obfuscated builds.Bug fix (obfuscated stack traces): Frame addresses were always empty when reporting obfuscated Dart errors. The stack trace parser now correctly match
Release Date: March 31, 2026
abs-only frame format (introduced in Dart 3.x) and computes virtual addresses (abs − isolate_dso_base) expected by both the iOS and Android native SDKs..env asset error when validating the example app. A stub .env file is now created before the validation step.Bug fix: fragments field in network events was always empty. Both CxDioInterceptor and CxHttpClient now correctly report the URL path (e.g. /some/path
Release Date: March 26, 2026
fragments field in network events was always empty. Both CxDioInterceptor and CxHttpClient now correctly report the URL path (e.g. /some/path) instead of the URI fragment.Obfuscated error stack traces: Obfuscated stack traces now propagate and are exported correctly via the iOS bridge key centralisation.
Release Date: March 26, 2026
userActions is enabled.CxDioInterceptor: New interceptor for Dio HTTP client. Add CxDioInterceptor() to your Dio instance to automatically capture network requests, generate
Release Date: March 23, 2026
CxDioInterceptor() 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.networkCaptureConfig option on CXExporterOptions. Supply a list of CxNetworkCaptureRule objects to control which headers and payloads are captured per URL. Rules are matched in order (first match wins); when no rules are configured, no headers or payloads are captured. Bodies over 1024 characters are dropped entirely.CxHttpClient and CxDioInterceptor now report status_text, request_headers, response_headers, request_payload, response_payload, and error_message. traceId/spanId are forwarded to the native Android SDK.beforeSend is now optional: When omitted, events are sent directly without a Dart-side round-trip, reducing platform channel overhead. Migration: if you relied on the implicit pass-through, set beforeSend: (event) => event explicitly.setUserInteraction dispatched to main thread: Fixes Main Thread Checker warning caused by UIKit access on the background method-channel queue.networkExtraConfig parsing: networkCaptureConfig rules are now parsed and forwarded to the native iOS SDK during initSdk.CoralogixRum.initialize, Session Replay init, and captureScreenshot run on the main looper. reportError and sendCxSpanData run on a dedicated background executor.CoralogixRum initialization is dispatched to the main queue from background handlers.Hybrid user interaction: When user enables userActions in options, Dart tracks click/scroll/swipe; iOS always receives userActions: false to avoid dup
userActions in options, Dart tracks click/scroll/swipe; iOS always receives userActions: false to avoid duplicate events.reportUserInteraction (native SDK 2.9.0); returns error when event_name is missing or when SDK is not initialized (iOS).source; DeviceContext operating_system/os_version, network_connection_type/network_connection_subtype, user_agent; ErrorContext exception_type; NetworkRequestContext request_headers/response_headers/request_payload/response_payload; InteractionContext target_element, element_classes, target_element_inner_text, scroll_direction with toJson() omitting nulls for beforeSend round-trip.Added Android support for allowedTracingUrls in TraceParentInHeader configurations Native Android SDK upgraded to 2.7.2 Native iOS SDK upgraded to 2.1
Added Android support for allowedTracingUrls in TraceParentInHeader configurations
Native Android SDK upgraded to 2.7.2
Native iOS SDK upgraded to 2.1.0
Added support for session replay
Added support for session replay
Added the AP3 domain as an option for initializing the SDK with
Added the AP3 domain as an option for initializing the SDK with
Breaking Change: Flutter SDK Requirement
Breaking Change: Flutter SDK Requirement
pubspec.yaml environment: flutter: '>=3.27.0')Color.withValues(alpha: ...) API, which replaced the deprecated Color.withOpacity() methodColor.withValues() for future compatibilityFix bug Native android SDK upgraded to 2.6.3
Release Date: Dec 10, 2025
Fix bug Native android SDK upgraded to 2.6.3
Fix bug Native iOS SDK upgraded to 1.4.0
Release Date: Nov 13, 2025
Fix bug Native iOS SDK upgraded to 1.4.0
Add sendCustomMeasurement Native iOS SDK upgraded to 1.2.6
Release Date: Sep 28, 2025
Add sendCustomMeasurement Native iOS SDK upgraded to 1.2.6
Native iOS SDK upgraded to 1.2.5
Release Date: Sep 21, 2025
Native iOS SDK upgraded to 1.2.5
Native iOS SDK upgraded to 1.1.2
Release Date: Aug 10, 2025
Native iOS SDK upgraded to 1.1.2
fix: Android plugin now respect setting the userActions interaction to false and thus actually turning it off Native Android SDK upgraded to 2.4.44
Release Date: July 24, 2025
Bug fixes Native iOS SDK upgraded to 1.0.24
Release Date: June 22, 2025
Bug fixes - beforeSend not sending instrumentation in android and iOS
Release Date: June 17, 2025
Native Android SDK upgraded to 2.4.41 Native iOS SDK upgraded to 1.0.23
Added Android support for the beforeSend operation
Release Date: May 28, 2025
beforeSend operationNative Android SDK upgraded to 2.4.4
Added Android support for the beforeSend callback Breaking changes:
Release Date: May 27, 2025
Added Android support for newly added methods:
Added Android support for the beforeSend callback Breaking changes:
Native iOS SDK upgraded to 1.0.22 Native Android SDK upgraded to 2.4.3
Release Date: May 8, 2025 Implemented the following: * Before Send * getLabels() * getSessionId() * isInitialized() * setApplicationContext() Native S
Release Date: May 8, 2025
Implemented the following:
Native SDK upgraded to 1.0.21
Fix Crash related to URLSessionInstrumentation. Navigation instrument was removed from CoralogixOptions Native SDK upgraded to 1.0.20
Release Date: April 24, 2025
Fix Crash related to URLSessionInstrumentation. Navigation instrument was removed from CoralogixOptions Native SDK upgraded to 1.0.20
Fix issue related to CustomDomainUrl was removed. Native SDK upgraded to 1.0.18
Release Date: April 8, 2025
Fix issue related to CustomDomainUrl was removed. Native SDK upgraded to 1.0.18
Release Date: February 10, 2025
Release Date: February 10, 2025
Fixed bug preventing data to be sent if no custom url was set on Android.
Release Date: December 15, 2024
Release Date: December 15, 2024
Android implementation added
Release Date: November 25, 2024
Release Date: November 25, 2024
Enhancements SDK Initialization Sampling: Introduced sdkSampler, allowing configuration of the SDK's initialization rate as a percentage (0-100%).
FPS Sampling Rate Configuration: Added mobileVitalsFPSSamplingRate to set the frequency of FPS sampling per hour, with a default of once every minute.
Instrumentation Control: Implemented instrumentations, enabling selective activation or deactivation of specific instruments during runtime. By default, all instrumentations are active.
IP Data Collection Toggle: Added collectIPData to control the collection of user IP addresses and geolocation data, defaulting to true.
Added Android support for allowedTracingUrls in TraceParentInHeader configurations Native Android SDK upgraded to 2.7.2 Native iOS SDK upgraded to 2.1
Added Android support for allowedTracingUrls in TraceParentInHeader configurations
Native Android SDK upgraded to 2.7.2
Native iOS SDK upgraded to 2.1.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →