Migration Changes: The distribution products of CocoaPods and Swift Package Manager have been renamed from the FTMobileSDK series to the TrueWatchSDK series. Please use TrueWatchSDK, TrueWatchWidgetExtension and TrueWatchSessionReplay. The CocoaPods aliases TrueWatchSDK/Extension and TrueWatchSDK/FTSessionReplay are still available. For upgrading existing projects, please refer to the Migration Guide.
Added experimental Session Replay heatmap correlation capability, which can be enabled via FTSessionReplayConfig.enableHeatmap. This capability only correlates automatically collected UIKit Actions. Some UIKit Actions may not support Heatmap; SwiftUI Actions do not support automatic collection, so they cannot be correlated with heatmaps through this capability.
Added system compression and zlib header files.
Optimized URLSession Resource stability, retaining request and trace data in asynchronous processing, and limiting the cached response body size to reduce OOM risks.
Fixed issues with RUM CPU calculation, application launch, application status, Session timeout, crash context, and active View context processing.
Improved ANR reliability, avoiding executing SQLite VACUUM when the application enters the background, and retrying full thread backtracking collection.
Fixed potential array out-of-bounds crash caused by invalid enum values.
Added FTSessionReplayConfig.enableSwiftUI to explicitly enable SwiftUI recording capability for Session Replay, disabled by default.
Added support for custom source value when uploading iOS Session Replay Segments, to adapt to Flutter Session Replay scenarios.
Fixed a Session Replay crash caused by dynamic UIColor parsing, and optimized background snapshot handling and SwiftUI recording stability.
Optimized Session Replay data cache processing after sampling state changes, fixed the issue where recording did not start after erroneous sampling took effect, improving recording continuity and stability.
Optimized upload scheduling and retry handling for Session Replay, RUM, and Logs.
Optimized Session Replay rendering correctness and performance, including node flattening, snapshot processing queue priority, View Tree privacy override inheritance, and unsupported placeholder cropping.
Fixed the consistency issue between RUM View time and upload package, by retaining event time and deduplicating View data before package ID generation.
Added RUM SwiftUI view tracking and manual click Action tracking support.
Added app_launch_type field to cold start Actions, to distinguish between foreground launch and background launch.
Added FTMobileConfig.enableDataFilter and FTMobileConfig.dataFilters to enable DataFilter on the SDK side and configure local blacklist rules. DataFilter rules are executed after lineDataModifier and before local cache writing.
Optimized upload worker shutdown isolation, upload callback synchronization, and RUM upload behavior, avoiding duplicate uploads, expired retry loops, upload execution conflicts, and skipping duplicate View data during upload.
Replaced RUM placeholder View processing with fallback View resolution, improving View tracking consistency when the original View is unavailable.
Optimized handling of preset property Tags in nil, empty value, and user information update scenarios.
Session Replay supports configuring touch, text and input, and image privacy settings via touchPrivacy, textAndInputPrivacy, imagePrivacy, and also supports setting view-level privacy overrides for a single UIView via sessionReplayPrivacyOverrides.
Added resource_id to network errors, for correlating corresponding resource data.
Supported custom parsing and configuration of remote variables via FTMobileConfig.remoteConfigFetchCompletionBlock or +updateRemoteConfigWithMiniUpdateInterval:completion: method callbacks.
Added resource_http_protocol, resource_request_size, and resource_connection_reuse fields to Resources.
Refined cold start and warm start time metrics, adding app_pre_runtime_init_time, app_runtime_init_time, app_uikit_init_time, app_application_init_time, and app_first_frame_init_time.
Fixed data loss caused by missing RUM Views.
Enhanced crash and ANR stack capabilities, supporting full thread information collection, and supporting setting crash monitoring types via FTRumConfig.crashMonitoring.
Added support for filtering RUM View/Action collection and customizing View/Action names via FTRumConfig.viewTrackingHandler and FTRumConfig.actionTrackingHandler.
Added method -updateViewLoadingTime: to update the loading time for the currently active RUM View.
Fixed the missing sdk_name field in log data.
Fixed UserScripts conflicts in WebView data collection.
Fixed thread safety issues in SDK shutdown operations.
Fixed a crash caused by modifying the main thread's name during Long task monitoring.
Added FTRumConfig.h/.m files, splitting FTRumConfig from FTMobileConfig.h into separate files.
Added FTRUMConfig.enableTraceWebView to configure whether to enable SDK collection of webview data, and FTRUMConfig.allowWebViewHost to control which host addresses to filter.
Added FTRumConfig.sessionTaskErrorFilter to filter local network errors.
Added FTMobileConfig.remoteConfiguration to support enabling remote configuration features, and FTMobileConfig.remoteConfigMiniUpdateInterval to set the minimum update interval after enabling remote control.
Added FTMobileConfig.lineDataModifier and FTMobileConfig.dataModifier to support data replacement during writing, enabling data masking.
Added FTRUMConfig.sessionErrorSampleRate to support error sampling. When not sampled by sampleRate, errors can trigger sampling of RUM data from 1 minute prior.
Logger supports filtering custom log levels via logLevelFilter.
When navigating from a native page to a WebView page, the native page name is used to populate view_referrer.
Added RUM Resource data fields resource_first_byte_time, resource_dns_time, resource_download_time, resource_connect_time, resource_ssl_time, and resource_redirect_time. These enhance Resource duration display in TrueWatch and align the timeline with the APM flame graph.
Enabled FTMobileConfig.enableDataIntegerCompatible by default.
Added support for disabling URLSession Method Swizzling within the SDK via the macro FT_DISABLE_SWIZZLING_RESOURCE.
Optimized data synchronization, adding failure retransmission logic.
Added support for intercepting Requests for custom tracing via FTTraceConfig.traceInterceptor, and adding custom properties to RUM Resources via FTRumConfig.resourcePropertyProvider.
Fixed exceptions caused by multi-threaded access to the method for dynamically adding global properties.
Added support for intercepting URLRequest via FTURLSessionDelegate.traceInterceptor block for custom trace tracking, and modifying spanId and traceId in the trace.
RUM Resource supports collecting network requests initiated via swift async/await URLSession APIs.
Fixed the issue of incorrect View association for LongTask and ANR.
Added support for limiting the maximum number of RUM cache entries via FTRUMConfig.rumCacheLimitCount, and setting the discard strategy via FTRUMConfig.rumDiscardType.
Added support for limiting total cache size via FTMobileConfig.enableLimitWithDbSize. When enabled, FTLoggerConfig.logCacheLimitCount and FTRUMConfig.rumCacheLimitCount become ineffective. Supports setting database discard strategy via FTMobileConfig.dbDiscardType and database cache limit via FTMobileConfig.dbCacheLimit.
Fixed the missing #include <arm/_mcontext.h> header file issue when compiling with Xcode 16.
When automatically collecting RUM-Resources, resources obtained directly from local cache or with unknown fetch types are filtered out to prevent duplicate collection.
Fixed the loadingTime calculation logic for UITabBarController child views.