Added View RUM metric view_long_task_rate to count the proportion of total Long Task duration within the View lifecycle, with a maximum value of 1.
Added crash RUM Error metrics foreground_crash_free_duration and background_crash_free_duration to distinguish foreground and background crash-free operation durations.
Added Resource network snapshot fields, including network_available, network_validated, network_downlink_kbps, network_uplink_kbps, and network_signal_strength.
SDK data synchronization now enables deflate compression by default, which can be disabled via FTSDKConfig.setCompressIntakeRequests(false).
Fixed version dependency constraints between ft-sdk and Session Replay modules, improving integration compatibility check accuracy.
Added Session Replay capability, supporting WebView Session Replay, DCloud WebView, and full snapshot keyframe collection for WebView containers.
Added Session Replay and RUM context association capability, allowing association between WebView containers and the context of loaded HTML content.
Added Session Replay error sampling capability and support for dynamic control of Session Replay via remote configuration.
Added Session Replay image resource upload capability, supplemented with parameter passthrough like userAgent, appVersion, and synchronization link adaptation.
Optimized Session Replay initialization, shard frame complementation, frame generation and consumption, delayed writing, disk write limiting, and other logic to improve recording and synchronization stability.
Fixed issues such as WebView data loss, abnormal handling in invisible scenarios, premature writing causing white screens, inability to synchronize with low-version OkHttp, and recording failures due to Bitmap recycling.
Fixed crash issues caused by calling related methods on some controls before layout completion, improving overall stability and compatibility.
Fixed an issue introduced in version 1.6.16: remote dynamic configuration not taking effect on first load.
Added TraceContext and TraceContext.Simple for custom Trace Header handling.
By overriding HeaderHandler.getTraceContext(Request), headers, traceId, and spanId can be provided at once,
fully compatible with existing getTraceHeader, getTraceID / getSpanID implementations.
Support for dynamically changing transmission addresses via FTSdk.setDatakitUrl(url), FTSdk.setDatawayUrl(datawayUrl, clientToken).
Added illegal character filtering for globalContext and attribute keys.
Expanded resource_type support range, adding image, media, font, CSS, JS, and native types.
Support for custom parsing and configuration of remote variables via FTSDKConfig.setRemoteConfigurationCallBack(FTRemoteConfigManager.FetchResult), FTSdk.updateRemoteConfig(int remoteConfigMiniUpdateInterval, FTRemoteConfigManager.FetchResult result). Custom parsing and configuration.
Added resource_http_protocol, resource_request_size, resource_connection_reuse fields to Resource.
Refined cold start time metrics, adding app_pre_application_init_time, app_application_init_time, and app_first_frame_init_time.
Added compatibility support for OkHttp versions 3.12 and above.
Fixed inaccurate Resource request start time issue.
Fixed occasional null pointer exceptions when obtaining Action and View during SDK shutdown.
Optimized error stack format, fixing line break errors in specific scenarios.
Added limited Long Task monitoring capability when the application is in the background.
Optimized Session refresh mechanism when the application is in the background.
Optimized nanosecond-level time calculation logic in Action, View, and Resource.
Used ContentProvider to optimize compatibility issues in high-load multi-process data collection scenarios.
Removed SDK AndroidManifest declaration for android.permission.READ_PHONE_STATE. Integrators need to add it themselves based on actual needs. Permission usage instructions can be found in the integration documentation.
Restricted data synchronization in child processes. Data collected by child processes will be reported by the main process.
Added FTRUMConfig.setActionTrackingHandler to support custom user action tracking. This handler allows developers to customize how user actions (app launch, clicks) are tracked in RUM data. Developers can modify action names, add custom attributes, or skip tracking specific actions.
Added FTRUMConfig.setViewActivityTrackingHandler to support custom Activity page tracking. This handler allows developers to customize how Activity pages are tracked in RUM data. Developers can modify page names, add custom attributes, or skip tracking specific Activities.
Added FTRUMConfig.setViewFragmentTrackingHandler to support custom Fragment page tracking. This handler allows developers to customize how Fragment pages are tracked in RUM data. Developers can modify page names, add custom attributes, or skip tracking specific Fragments.
Fixed issue where FTRUMGlobalManager.addAction lacked binding information like userid from bindUserData.
Added load_time data metric for Fragment in View.
Added FTRUMGlobalManager.updateTime for customizing the current view's load time.
Improved compatibility with OkHttp 3.12.x versions.
Tags added via FTRUMConfig.appendRUMGlobalContext can be updated during the session.
Added FTRUMConfig.setEnableTraceWebView to configure whether to enable WebView data collection via Android SDK.
Use FTRUMConfig.setAllowWebViewHost to control host addresses that need filtering.
Added ContentHandlerHelperEx.onExceptionWithFilter to filter local network errors.
Added FTSDKConfig.setRemoteConfiguration to support enabling remote conditional configuration.
Added FTSDKConfig.setRemoteConfigMiniUpdateInterval to set the minimum update interval after enabling remote control.
Added FTRUMConfig.setEnableTraceUserViewInFragment to support fragment view data collection, default is false.
Added FTSDKConfig.setLineDataModifier, FTSDKConfig.setDataModifier to support data write replacement and data desensitization.
Added FTRUMConfig.setSessionErrorSampleRate to support error sampling. When not sampled by setSamplingRate,
errors can trigger sampling collection of RUM data from 1 minute prior.
When FTSDKConfig.setEnableAccessAndroidID(false), use a local random uuid as device_uuid.
Optimized high-frequency log writing, data synchronization, and idle shutdown logic.
Added FTSDKConfig.setEnableOkhttpRequestTag to support adding unique ResourceID to okhttp requests,
solving the issue of incorrect trace_id and span_id displacement in high-concurrency identical requests. ft-plugin version 1.3.5 and above supports automatic ResourceID addition.
Fixed circular invocation issue when RUM configuration is initialized multiple times, interacting with other crash collection SDKs.
When navigating from a native page to a WebView page, use the native page name to populate view_referrer.
Fixed issue where IOException from network requests was re-thrown, altering the original exception type.
Added setProxy, setProxyAuthenticator, setDns to FTSDKConfig for configuring Proxy, ProxyAuthenticator, and Dns for OkHttp data synchronization network requests.
OkHttp data synchronization network requests support DNS IP round-robin connection for known hostNames.
Support for custom FTTraceInterceptor.HeaderHandler association with RUM data.
Support for modifying ASM-written FTTraceInterceptor.HeaderHandler content via FTRUMConfig.setOkHttpTraceHeaderHandler,
and modifying ASM-written FTResourceInterceptor.ContentHandlerHelper content via FTRUMConfig.setOkHttpResourceContentHandler.
Optimized crash collection capability, adapting to scenarios where system.exit triggered by certain OS prevents crash data collection.
Fixed occasional issue where tags were empty strings, causing data reporting failure.
Optimized ASM OkHttpListener EventListener coverage logic, supporting preservation of original project EventListener event parameter passing.
Optimized network status and type acquisition, supporting ethernet network type display.
Optimized frequent database closure issue when writing data in no-network state.
Fixed discrepancy between discarded log/RUM old data entry count and configured entry count.
Adapted TV device key events, removing non-TV device tags.
Support for limiting RUM data cache entry count upper limit via FTRUMConfig.setRumCacheLimitCount(int), default 100_000.
Support for limiting total cache size via FTSDKConfig enableLimitWithDbSize(long dbSize). After enabling,
FTLoggerConfig.setLogCacheLimitCount(int) and FTRUMConfig.setRumCacheLimitCount(int) will become ineffective.
Optimized Session refresh rules when the device is idle.
Fixed issue where custom startView called separately in RUM caused monitoring metric FTMetricsMTR thread not being recycled.
Support for adding dynamic attributes via FTSdk.appendGlobalContext(globalContext), FTSdk.appendRUMGlobalContext(globalContext),
FTSdk.appendLogGlobalContext(globalContext).
Support for clearing unreported cached data via FTSdk.clearAllData().
SDK setSyncSleepTime maximum limit extended to 5000 ms.
Optimized data storage and synchronization performance.
(Upgrading from older versions to 1.6.0 requires configuring FTSDKConfig.setNeedTransformOldCache for old data compatibility synchronization.)
Fixed issue where using ft-plugin and calling Log.w(String,Throwable) caused an exception.
Improved public API documentation for Session Replay configuration, privacy control, custom Mapper extensions, resource upload callbacks, etc., enhancing IDE hints and custom extension development experience during Java/Kotlin integration.
Added WebView Session Replay capability, supporting DCloud WebView and full snapshot keyframe collection for WebView containers.
Added Session Replay and RUM context association capability, allowing association between WebView containers and the context of loaded HTML content.
Added error sampling capability and support for dynamic control of Session Replay via remote configuration.
Added image resource upload capability, improved metadata processing for userAgent, appVersion, forceFullSnapshot, etc.
Optimized frame generation and consumption, shard frame complementation, WebView Replay data delayed writing, invisible WebView handling, and disk write limiting, improving stability and performance.
Fixed issues: WebView Replay data loss, premature writing causing white screens, synchronization failure with low-version OkHttp, recording failure due to Bitmap recycling, rumLinkKey null handling, and recording timeout in multi-image scenarios.
Fixed crash issue when recording AndroidView interop nodes, caused by low-version Session Replay Core missing MappingContext.getInteropViewCallback().
Added consumer ProGuard rules to preserve MappingContext AndroidView interop callback access methods required by Compose Replay.
Improved documentation for Compose Replay's Modifier privacy coverage, extension support, text truncation modes, and image Wireframe helper methods, enhancing IDE hints during Kotlin/Compose integration.
Added Jetpack Compose Session Replay support, enabling recording and playback for ComposeView and AndroidComposeView scenarios.
Supports semantic mapping and playback for common Compose components, including text, text input fields, buttons, images, sliders, Switch, Checkbox, RadioButton, Tab, and container nodes.
Supports Session Replay privacy coverage via Modifier in Compose, including node hiding, image privacy, text and input privacy, touch privacy.
Current Compose playback is based on semantic node mapping and does not guarantee pixel-perfect reproduction; Brush backgrounds are not yet supported, e.g., linear gradients, radial gradients will not be played back with original effects.