cx_flutter_plugin 0.4.1
cx_flutter_plugin: ^0.4.1 copied to clipboard
The Coralogix SDK for Flutter is designed to support various Flutter targets by leveraging the numerous platforms supported by Coralogix's native SDKs.
Changelog #
0.4.1 #
Release Date: May 6, 2026
- New (Android):
maskAllTextsandtextsToMasknow work in Flutter. Flutter renders entirely insideFlutterSurfaceView, 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 visibleRenderParagraph/RenderEditablenodes directly to the nativeflutterMaskRegionsProvider. 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. textsToMaskaccepts regex patterns. Each entry is compiled as aRegExp; plain strings like'password'match any text containing that word. Invalid patterns are silently skipped rather than crashing SDK initialisation.- Text fields (
RenderEditable) are always masked whentextsToMaskis 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 anytextsToMaskpattern is configured. - Bug fix: sentinel registration race.
SessionReplayMasking.initialize()is nowasyncandawaits the sentinelregisterMaskRegioncall before returning, eliminating a race where the very first captured frame could be unmasked. - Sentinel registration failure now logged. Previously swallowed silently; a
debugPrintwarning is now emitted if the sentinel fails to register.
0.4.0 #
Release Date: May 3, 2026
- New: Custom Spans public API (CX-36096).
CxFlutterPlugin.getCustomTracer({ignoredInstruments})returns aCoralogixCustomTracerwhentraceParentInHeader.enableistrue. From there,tracer.startGlobalSpan(name, {labels})creates a rootCoralogixGlobalSpanexposingspanId/traceId;globalSpan.startCustomSpan(name, {labels})creates childCoralogixCustomSpans;globalSpan.withContext(block)runs Dart work in a Zone whose async chain inherits the active span's id; andendSpan()closes spans on the native SDK. Mirrors the browser SDK contract — only one tracer per SDK lifecycle is allowed; subsequentgetCustomTracercalls return the cached instance. - New:
CoralogixIgnoredInstrumentenum (networkRequests,userInteractions,errors) — pass togetCustomTracerto opt specific Dart-side instrumentation out of inheriting the active custom span. - HTTP/Dio inherit the active custom span automatically.
CxHttpClientandCxDioInterceptornow read the active global span viaUtils.resolveTraceId(), injecttraceparentcarrying the inherited traceId, and attachcustomTraceId/customSpanIdto every network event. Barehttp.get()/ raw Dio still bypass — wrap inCxHttpClient/CxDioInterceptorto keep the trace linked. - New:
CXExporterOptions.tracesExportercallback. When provided, the native SDK streams completed OTLP-style trace batches over a newcx_flutter_plugin/onTracesExporterEventChannel. Caller is responsible for forwarding to a Coralogix OTLP endpoint. Additive — does not replace the normal RUM log pipeline. - Bug fix (iOS scroll freeze with session recording): Resolved by native iOS SDK upgrade.
- Bug fix (Android custom span lifecycle parity):
shutdown()now ends tracked spans on Android (was iOS-only); avoids dangling spans after Dart-sideCxFlutterPlugin.shutdown(). - Bug fix (Android child span ids):
startCustomSpannow returns the real OTelspanId/traceIdfrom the underlying span instead of a fabricated hex — cross-system trace correlation now works on Android the same as iOS. - Bug fix (
endSpanidempotence): Both platforms now succeed silently when a spanId is already untracked (e.g. ended by the 30s idle timer, byremoveAll()on shutdown, or by a duplicate Dart-side call). Previously iOS threwunknown_span. - Docs (Custom Spans): Added a full README usage guide for
getCustomTracer→startGlobalSpan→withContext+CxHttpClient→startCustomSpan→endSpan, includingignoredInstrumentsbehavior andtraceParentInHeaderprerequisite. - Docs (Traces Exporter): Added README guidance for configuring
CXExporterOptions.tracesExporterand consuming OTLP-style batch payloads from the EventChannel bridge. - Dartdoc coverage (public API): Expanded docs for
CoralogixCustomTracer,CoralogixGlobalSpan,CoralogixCustomSpan, andCoralogixIgnoredInstrumentso custom-spans API behavior and intent are explicit in generated docs. - Native iOS SDK upgraded to 2.6.2 (Coralogix, CoralogixInternal, SessionReplay).
- Native Android SDK upgraded to 2.11.1.
0.3.3 #
Release Date: April 5, 2026
- Bug fix (release mode errors sent as log): In release builds, caught exceptions produced empty stack trace frames, causing the iOS bridge to fall through to
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. - Bug fix (release mode stack frames empty): The symbolicated frame regex required a column number, but Dart AOT (release) stack traces omit it. The parser now treats column numbers as optional so frames are populated correctly in release builds.
- version bump script: Added
scripts/bump_version.shto keeppubspec.yaml,lib/plugin_version.dart, andios/cx_flutter_plugin.podspecin sync. - Xcode ObfuscatedRelease configuration: Added
ObfuscatedReleasebuild configuration to the example app for easy switching between symbolicated and obfuscated builds.
0.3.2 #
Release Date: March 31, 2026
- Bug fix (obfuscated stack traces): Frame addresses were always empty when reporting obfuscated Dart errors. The stack trace parser now correctly matches the Dart VM's
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. - Bug fix (publish workflow): Release CI failed with a missing
.envasset error when validating the example app. A stub.envfile is now created before the validation step. (BUGV2-5531)
0.3.1 #
Release Date: March 26, 2026
- Bug fix:
fragmentsfield in network events was always empty. BothCxDioInterceptorandCxHttpClientnow correctly report the URL path (e.g./some/path) instead of the URI fragment. (BUGV2-5509)
0.3.0 #
Release Date: March 26, 2026
- Obfuscated error stack traces: Obfuscated stack traces now propagate and are exported correctly via the iOS bridge key centralisation.
- Performance (iOS): Fixed scroll lag caused by interaction tracking. The swipe-context widget tree walk is now performed once at pointer-down and cached, instead of running on every pointer-up/cancel. This eliminates main-thread jank during fast list scrolling when
userActionsis enabled.
0.2.0 #
Release Date: March 23, 2026
- CxDioInterceptor: New interceptor for Dio HTTP client. Add
CxDioInterceptor()to yourDioinstance to automatically capture network requests, generate RUM spans, and inject W3Ctraceparentheaders — no migration from your existing networking layer required. - NetworkCaptureRule: New
networkCaptureConfigoption onCXExporterOptions. Supply a list ofCxNetworkCaptureRuleobjects 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. - Expanded network context: Both
CxHttpClientandCxDioInterceptornow reportstatus_text,request_headers,response_headers,request_payload,response_payload, anderror_message.traceId/spanIdare forwarded to the native Android SDK. beforeSendis 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, setbeforeSend: (event) => eventexplicitly.- iOS
setUserInteractiondispatched to main thread: FixesMain Thread Checkerwarning caused by UIKit access on the background method-channel queue. - iOS
networkExtraConfigparsing:networkCaptureConfigrules are now parsed and forwarded to the native iOS SDK duringinitSdk. - Performance (Android):
CoralogixRum.initialize, Session Replay init, andcaptureScreenshotrun on the main looper.reportErrorandsendCxSpanDatarun on a dedicated background executor. - Performance (iOS): Method channel uses a background task queue when available.
CoralogixRuminitialization is dispatched to the main queue from background handlers. - Native iOS SDK upgraded to 2.3.3
- Native Android SDK upgraded to 2.9.3
0.1.1 #
- Hybrid user interaction: When user enables
userActionsin options, Dart tracks click/scroll/swipe; iOS always receivesuserActions: falseto avoid duplicate events. - setUserInteraction: iOS forwards interaction payload to native SDK (2.2.0). Android forwards via
reportUserInteraction(native SDK 2.9.0); returns error whenevent_nameis missing or when SDK is not initialized (iOS). - Context types aligned with native: EventContext
source; DeviceContextoperating_system/os_version,network_connection_type/network_connection_subtype,user_agent; ErrorContextexception_type; NetworkRequestContextrequest_headers/response_headers/request_payload/response_payload; InteractionContexttarget_element,element_classes,target_element_inner_text,scroll_directionwithtoJson()omitting nulls for beforeSend round-trip. - Native iOS SDK 2.2.0; native Android SDK 2.9.0.
- Android: compileSdk 36 (plugin and example).
0.1.0 #
Added Android support for allowedTracingUrls in TraceParentInHeader configurations
Native Android SDK upgraded to 2.7.2
Native iOS SDK upgraded to 2.1.0
0.0.21 #
Added support for session replay
0.0.20 #
Added the AP3 domain as an option for initializing the SDK with
0.0.19 #
Breaking Change: Flutter SDK Requirement
- The package now requires Flutter >=3.27.0 (as specified in
pubspec.yamlenvironment:flutter: '>=3.27.0') - This requirement is necessary to support the modern
Color.withValues(alpha: ...)API, which replaced the deprecatedColor.withOpacity()method - The example app has been updated to use
Color.withValues()for future compatibility - Native iOS SDK upgraded to 1.5.3
- Bug fix: https://github.com/coralogix/cx-flutter-plugin/issues/37#issue-3715310863 Release Date: Jan 21, 2026
0.0.18 #
Release Date: Dec 10, 2025
Fix bug BUGV2-1468 Native android SDK upgraded to 2.6.3
0.0.17 #
Release Date: Nov 13, 2025
Fix bug BUGV2-1474 Native iOS SDK upgraded to 1.4.0
0.0.16 #
Release Date: Sep 28, 2025
Add sendCustomMeasurement Native iOS SDK upgraded to 1.2.6
0.0.15 #
Release Date: Sep 21, 2025
Native iOS SDK upgraded to 1.2.5
0.0.14 #
Release Date: Aug 10, 2025
Native iOS SDK upgraded to 1.1.2
0.0.13 #
Release Date: July 24, 2025
- 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
0.0.12 #
Release Date: unknown
- New Feature add support for proxyUrl
- New Feature traceParentInHeader (iOS Only) Native iOS SDK upgraded to 1.0.26
0.0.11 #
Release Date: June 22, 2025
- Bug fixes Native iOS SDK upgraded to 1.0.24
0.0.10 #
Release Date: June 17, 2025
- Bug fixes - beforeSend not sending instrumentation in android and iOS
- Crash fix on Android
Native Android SDK upgraded to 2.4.41 Native iOS SDK upgraded to 1.0.23
0.0.9 #
Release Date: May 28, 2025
- Added Android support for the
beforeSendoperation - Bug fixes and improvements
Native Android SDK upgraded to 2.4.4
0.0.8 #
Release Date: May 27, 2025
Added Android support for newly added methods:
- getLabels()
- getSessionId()
- isInitialized()
- setApplicationContext()
- Disable swizzling for iOS (NetworkOnly)
Added Android support for the beforeSend callback Breaking changes:
- The 'CxExporterOptions' class 'beforeSend' callback is now asynchronous.
Native iOS SDK upgraded to 1.0.22 Native Android SDK upgraded to 2.4.3
0.0.7 #
Release Date: May 8, 2025
Implemented the following:
- Before Send
- getLabels()
- getSessionId()
- isInitialized()
- setApplicationContext()
Native SDK upgraded to 1.0.21
0.0.6 #
Release Date: April 24, 2025
Fix Crash related to URLSessionInstrumentation. Navigation instrument was removed from CoralogixOptions Native SDK upgraded to 1.0.20
0.0.5 #
Release Date: April 8, 2025
Fix issue related to CustomDomainUrl was removed. Native SDK upgraded to 1.0.18
0.0.4 #
Release Date: February 10, 2025
Fixed bug preventing data to be sent if no custom url was set on Android.
0.0.3 #
Release Date: December 15, 2024
Android implementation added
0.0.2 #
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.
0.0.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