Added RUM Resource collection support for WebSocket handshake requests. New data fields: resource_type=websocket, resource_websocket_collection_level=handshake, and resource_websocket_handshake_state (success, rejected, failed).
Added FTRumConfig.issueDataProvider to attach validated custom fields and historical context to automatically collected Crash and ANR RUM Error events.
Added macOS Session Replay recording support, covering common AppKit views and controls.
Added automatic macOS app launch Action collection, and unified the macOS default service and Log source labels.
Session Replay resource check and upload now support associating with RUM context: use FTSessionReplayConfig.enableLinkRUMKeys to select which RUM globalContext fields to pass, ensuring the same resource is correctly routed, independently retained, and deduplicated under different associated contexts.
Optimized RUM lifecycle handling for fallback views, app launch, first-frame tracking, delayed initial Actions, and session expiration scenarios.
Optimized the loading_time measurement for automatically collected UIKit and SwiftUI RUM Views, excluding idle time during pre-rendering and pre-loading stages.
Breaking Change: The CocoaPods and Swift Package Manager distribution products have been renamed from the FTMobileSDK family to the TrueWatchSDK family. Use TrueWatchSDK, TrueWatchWidgetExtension, and TrueWatchSessionReplay. CocoaPods aliases TrueWatchSDK/Extension and TrueWatchSDK/FTSessionReplay remain available. For upgrading existing projects, refer to the Migration Guide.
Added experimental Session Replay heatmap correlation capability, which can be enabled via FTSessionReplayConfig.enableHeatmap. This feature only correlates with automatically collected UIKit Actions; some UIKit Actions may not support Heatmap. SwiftUI Actions are not automatically collected and therefore cannot be correlated with heatmaps through this capability.
Added system compression and zlib header files.
Optimized URLSession Resource stability by preserving request and trace data during asynchronous processing and limiting the cached response body size to reduce OOM risks.
Fixed issues with RUM CPU calculation, app launch, app state, session timeout, crash context, and active View context handling.
Improved ANR reliability by avoiding SQLite VACUUM when the app enters the background and retrying full-thread backtrace collection.
Fixed a potential array out-of-bounds crash caused by invalid enum values.
Added FTSessionReplayConfig.enableSwiftUI to explicitly enable Session Replay SwiftUI recording, disabled by default.
Added support for customizing the source value when uploading iOS Session Replay Segments, to accommodate 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 handling after sample rate changes, fixed the issue where recording did not start after erroneous sampling took effect, improving recording continuity and stability.
Optimized Session Replay, RUM, and Log upload scheduling and retry handling.
Optimized Session Replay rendering correctness and performance, including node flattening, snapshot processing queue priority, View Tree privacy override inheritance, and unsupported placeholder trimming.
Fixed RUM View time and upload package consistency issues by preserving event timestamps and deduplicating View data before package ID generation.
Added RUM SwiftUI view tracking and manual click Action tracking support.
Added the app_launch_type field to cold start Actions to distinguish between foreground and background launches.
Added FTMobileConfig.enableDataFilter and FTMobileConfig.dataFilters to enable SDK-side DataFilter and configure local blacklist rules. DataFilter rules are executed after lineDataModifier and before local cache writes.
Optimized upload Worker shutdown isolation, upload callback synchronization, and RUM upload behavior to avoid duplicate uploads, expired retry loops, upload execution conflicts, and skip duplicate View data during uploads.
Replaced RUM placeholder View handling with fallback View resolution to improve View tracking consistency when the original View is unavailable.
Optimized handling of preset property Tags in nil, empty, and user info update scenarios.
Session Replay supports configuring touch, text and input, and image privacy settings via touchPrivacy, textAndInputPrivacy, and imagePrivacy, and supports view-level privacy overrides for individual UIViews via sessionReplayPrivacyOverrides.
Extended resource_type with new types: image, media, font, CSS, JS, native.
Added resource_id to network errors to correlate with the corresponding resource data.
Added support for custom parsing and configuration of remote variables via the FTMobileConfig.remoteConfigFetchCompletionBlock or +updateRemoteConfigWithMiniUpdateInterval:completion: callback methods. See Remote Config Code Sample.
Added resource_http_protocol, resource_request_size, and resource_connection_reuse fields to Resources.
Refined cold start and warm start timing metrics by 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 trace capabilities by supporting full-thread information collection, and added support for configuring crash monitoring types via FTRumConfig.crashMonitoring.
Added FTRUMConfig.enableTraceWebView to enable WebView data collection via the SDK, and FTRUMConfig.allowWebViewHost to filter host addresses.
Added FTRumConfig.sessionTaskErrorFilter to filter local network errors.
Added FTMobileConfig.remoteConfiguration to enable remote configuration, and FTMobileConfig.remoteConfigMiniUpdateInterval to set the minimum update interval after enabling remote control.
Added FTMobileConfig.lineDataModifier and FTMobileConfig.dataModifier to support data rewrite and data masking.
Added FTRUMConfig.sessionErrorSampleRate to support error sampling. When not sampled by sampleRate, error occurrence triggers sampling of RUM data from 1 minute before.
Logger now 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, resource_redirect_time. These fields enable enhanced Resource duration display on TrueWatch and alignment with the APM Flame Graph timeline.
Enabled FTMobileConfig.enableDataIntegerCompatible by default.
Added support for disabling URLSession Method Swizzling inside the SDK via the macro FT_DISABLE_SWIZZLING_RESOURCE.
Optimized data synchronization by adding failed retransmission logic.
Added support for intercepting Requests for custom tracing via FTTraceConfig.traceInterceptor, and adding custom properties to RUM Resources via FTRumConfig.resourcePropertyProvider.
Fixed an exception when dynamically adding global properties under multi-threaded access.
Added support for intercepting URLRequest via the FTURLSessionDelegate.traceInterceptor block for custom tracing and modifying spanId/traceId in the trace.
RUM Resources now support collecting network requests initiated via the Swift async/await URLSession API.
Fixed 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 policy via FTRUMConfig.rumDiscardType.
Added support for limiting total cache size via FTMobileConfig.enableLimitWithDbSize. When enabled, FTLoggerConfig.logCacheLimitCount and FTRUMConfig.rumCacheLimitCount become inactive. Added support for setting the DB discard policy via FTMobileConfig.dbDiscardType and the DB cache limit size via FTMobileConfig.dbCacheLimit.
Fixed a missing #include <arm/_mcontext.h> header file compilation error in Xcode 16.
When auto-collecting RUM-Resource, resources obtained directly from local cache or with unknown acquisition types are now filtered out to prevent duplicate collection.
Fixed the loadingTime calculation logic for UITabBarController sub-views.