Changelog¶
1.6.7 (2026/08/19)¶
- Added RUM Resource collection support for WebSocket handshake requests. New data fields:
resource_type=websocket,resource_websocket_collection_level=handshake, andresource_websocket_handshake_state(success,rejected,failed). - Added
FTRumConfig.issueDataProviderto attach validated custom fields and historical context to automatically collected Crash and ANR RUM Errors. - Added macOS Session Replay recording support, covering common AppKit views and controls.
- Added automatic collection of macOS app launch Actions, and unified the default macOS
serviceand Logsourcetags. - Session Replay resource inspection and upload now support associating RUM context: use
FTSessionReplayConfig.enableLinkRUMKeysto select the RUM globalContext fields to pass through, ensuring that 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
loading_timemeasurement for automatically collected UIKit and SwiftUI RUM Views, excluding idle time during pre-rendering and pre-loading phases.
1.6.6 (2026/07/15)¶
- Migration Change: The CocoaPods and Swift Package Manager distribution products have been renamed from the
FTMobileSDKseries to theTrueWatchSDKseries. UseTrueWatchSDK,TrueWatchWidgetExtension, andTrueWatchSessionReplay. The CocoaPods aliasesTrueWatchSDK/ExtensionandTrueWatchSDK/FTSessionReplayremain available. For upgrading existing projects, refer to the Migration Guide. - Added an experimental Session Replay heatmap association capability, which can be enabled via
FTSessionReplayConfig.enableHeatmap. This capability only associates with automatically collected UIKit Actions; some UIKit Actions may not support Heatmap. SwiftUI Actions do not support automatic collection, so they cannot be associated with the heatmap through this capability. - Added the system
compressionandzlibheader files. - Improved URLSession Resource stability by retaining request and trace data during asynchronous processing and limiting the cached response body size to reduce OOM risk.
- 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
VACUUMwhen the app enters the background and retrying full-thread backtrace collection. - Fixed a potential array out-of-bounds crash caused by invalid enum values.
1.6.5 (2026/06/09)¶
- Added
FTSessionReplayConfig.enableSwiftUIto explicitly enable SwiftUI recording for Session Replay. It is disabled by default. - Added support for custom
sourcevalues when uploading iOS Session Replay Segments, to accommodate Flutter Session Replay scenarios. - Fixed a Session Replay crash caused by dynamic
UIColorresolution, and optimized background snapshot handling and SwiftUI recording stability. - Optimized Session Replay data cache handling after sampling state changes, fixed the issue where recording did not start after error sampling took effect, and improved recording continuity and stability.
- Optimized upload scheduling and retry handling for Session Replay, RUM, and Log.
- Optimized Session Replay rendering correctness and performance, including node flattening, snapshot processing queue priority, View Tree privacy override inheritance, and unsupported placeholder clipping.
- Fixed RUM View time and upload package consistency issues by preserving event timestamps and deduplicating View data before package ID generation.
1.6.4 (2026/05/21)¶
- Added Session Replay support for SwiftUI views.
- Added RUM SwiftUI view tracking and manual tap Action tracking support.
- Added the
app_launch_typefield to cold start Actions to distinguish between foreground and background launches. - Added blacklist filtering capability, allowing Log and RUM data to be filtered before being written to the local cache. Rules can be configured in-app via
FTMobileConfig.dataFiltersor automatically fetched from the blacklist in the Guance Workspace; both methods take effect simultaneously. This capability is enabled by default. SDK-side filtering can be disabled viaFTMobileConfig.enableDataFilter = NO. Filter rules are executed afterlineDataModifier. - Optimized upload Worker shutdown isolation, upload callback synchronization, and RUM upload behavior to avoid duplicate uploads, expired retry loops, and upload execution conflicts, and to skip duplicate View data during upload.
- 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 scenarios involving nil, empty values, and user information updates.
1.6.3 (2026/04/30)¶
- Added
view_long_task_rateto measure the page jank rate of RUM Views. - Added the
network_availablefield to RUM Resource data to record the network availability snapshot when the resource starts. - Added crash-free duration fields derived from app state statistics to RUM crash data:
foreground_crash_free_durationandbackground_crash_free_duration. - Session Replay resource upload now supports associating RUM Keys.
- Enabled request compression for data upload by default.
- Fixed a race condition with NSDate in the Long Task detector.
- Fixed WKWebView bridge locking and repeated enabling issues, improving WebView RUM / Session Replay stability.
- Fixed the issue where local CSS injection could fail when Session Replay processes WebView node data.
1.6.2 (2026/04/17)¶
- Added Session Replay capability with WebView Session Replay support.
- Added the ability to associate Session Replay with RUM context, linking WebView containers with the context of loaded HTML content.
- Added Session Replay error sampling capability and support for dynamically controlling Session Replay through remote configuration.
- Added Session Replay image resource upload capability.
- Session Replay supports privacy configuration for touches, text and input, and images via
touchPrivacy,textAndInputPrivacy, andimagePrivacy, and supports view-level privacy overrides for individual UIViews viasessionReplayPrivacyOverrides.
1.5.21 (2026/04/15)¶
- Added the
setDatakitURL:andsetDatawayURL:clientToken:methods to support dynamically updating the reporting endpoint at runtime. - Adjusted the minimum deployment version to iOS 12+ and macOS 10.14+.
- Fixed the issue where View association failed when calling
addAction:. - Optimized the Log-RUM association logic and added the missing
action_idfield. - Fixed the RemoteConfig fetch interval logic; the SDK now uses the last local request timestamp to validate the fetch interval at startup.
- Fixed the issue where dynamically modifying the sample rate did not take effect.
1.5.20 (2026/02/26)¶
- Fixed concurrent read/write issues in
FTPresetPropertyto prevent crashes caused by dictionary corruption and duplicate releases. - Enabled WAL mode for SQLite in the SDK.
- Replaced the deprecated
SCNetworkReachabilitywithNWPathMonitor. - Removed usage of the deprecated API
UIScreen.mainScreen. - Fixed the
FTMobileConfig.dataModifierhandling logic so that it covers all data entries.
1.5.19 (2026/01/09)¶
- Extended
resource_typewith new types: image, media, font, CSS, JS, and native. - Added
resource_idto network errors to associate them with the corresponding resource data. - Added support for custom parsing and configuration of remote variables through callbacks of
FTMobileConfig.remoteConfigFetchCompletionBlockor the+updateRemoteConfigWithMiniUpdateInterval:completion:method. - Added the
resource_http_protocol,resource_request_size, andresource_connection_reusefields to Resource data. - Refined cold start and warm start timing metrics with new fields:
app_pre_runtime_init_time,app_runtime_init_time,app_uikit_init_time,app_application_init_time, andapp_first_frame_init_time. - Fixed data loss caused by missing RUM Views.
- Enhanced crash and ANR stack collection to support capturing full-thread information, and added support for setting crash monitoring types via
FTRumConfig.crashMonitoring.
1.5.18 (2025/08/08)¶
- Added support for filtering RUM View/Action collection and customizing View/Action names via
FTRumConfig.viewTrackingHandlerandFTRumConfig.actionTrackingHandler. - Added the
-updateViewLoadingTime:method to update the loading time for the currently active RUM View. - Fixed the missing
sdk_namefield in log data. - Fixed UserScripts conflicts in WebView data collection.
- Fixed thread safety issues in the SDK shutdown operation.
- Fixed a crash caused by modifying the main thread name during Long Task monitoring.
- Added the
FTRumConfig.h/.mfiles to splitFTRumConfiginto a separate file fromFTMobileConfig.h.
1.5.17 (2025/06/11)¶
-
Added
FTRUMConfig.enableTraceWebViewto configure whether to enable WebView data collection through the SDK. UseFTRUMConfig.allowWebViewHostto control which host addresses are filtered. -
Added
FTRumConfig.sessionTaskErrorFilterto filter local network errors. -
Added
FTMobileConfig.remoteConfigurationto enable remote conditional configuration, andFTMobileConfig.remoteConfigMiniUpdateIntervalto set the minimum update interval after remote control is enabled.
1.5.16 (2025/05/16)¶
- Added
FTMobileConfig.lineDataModifierandFTMobileConfig.dataModifierto support data replacement during write and data masking. - Added
FTRUMConfig.sessionErrorSampleRateto support error sampling. When a session is not sampled bysampleRate, RUM data from up to one minute before an error can be sampled and collected when the error occurs. - Logger now supports filtering custom log levels via
logLevelFilter. - When navigating from a native page to a WebView page,
view_referreris now populated with the native page name.
1.5.15 (2025/04/14)¶
- Fixed compilation errors with Swift Package Manager.
1.5.14 (2025/03/07)¶
- Added RUM Resource data fields
resource_first_byte_time,resource_dns_time,resource_download_time,resource_connect_time,resource_ssl_time, andresource_redirect_timeto support enhanced display of Resource timings in TrueWatch and timeline alignment in the APM Flame Graph. - Enabled
FTMobileConfig.enableDataIntegerCompatibleby default. - Added support for disabling URLSession Method Swizzling in the SDK via the macro definition
FT_DISABLE_SWIZZLING_RESOURCE. - Optimized data synchronization and added failed-request retry logic.
1.5.13 (2025/02/27)¶
- Optimized page collection logic to prevent special views from causing missing RUM View collection.
1.5.12 (2025/02/10)¶
- Adjusted the file storage path configuration to fix the database creation failure in tvOS environments.
- Updated the default
serviceand logsourcefor tvOS environments todf_rum_tvosanddf_rum_tvos_log, respectively. - Fixed inaccurate
durationcalculation in RUM Action events.
1.5.11 (2025/02/05)¶
- Optimized RUM Resource collection to prevent the SDK from collecting its own internal requests when automatic Resource collection is enabled for RUM.
- Fixed the failure of SkyWalking-type distributed tracing in Widget Extension.
1.5.10 (2025/01/21)¶
- Added support for intercepting Requests via
FTTraceConfig.traceInterceptorfor custom Trace, and for adding custom properties to RUM Resources viaFTRumConfig.resourcePropertyProvider. - Fixed exceptions caused by multi-threaded access when dynamically adding global properties.
- Optimized the data passed in from WebView.
1.5.9 (2025/01/08)¶
- Added support for intercepting
URLRequestvia theFTURLSessionDelegate.traceInterceptorblock to perform custom distributed tracing and modify the spanId and traceId in the trace. - RUM Resource now supports collecting network requests made through the Swift async/await URLSession API.
- Fixed incorrect View association for Long Task and ANR.
1.5.8 (2024/12/23)¶
- Added tvOS support.
- Added support for limiting the maximum number of cached RUM entries via
FTRUMConfig.rumCacheLimitCount, and for setting the discard strategy viaFTRUMConfig.rumDiscardType. - Added support for limiting the total cache size via
FTMobileConfig.enableLimitWithDbSize. When enabled,FTLoggerConfig.logCacheLimitCountandFTRUMConfig.rumCacheLimitCountno longer take effect. You can set the database discard strategy viaFTMobileConfig.dbDiscardTypeand the database cache size limit viaFTMobileConfig.dbCacheLimit.
1.5.7 (2024/12/04)¶
- Added support for setting the freeze detection threshold via
FTRUMConfig.freezeDurationMs. - Optimized the SDK's
shutDownmethod to avoid jank or WatchDog crashes caused by synchronous waiting on the main thread.
1.5.6 (2024/11/13)¶
- Added support for configuring deflate compression of synchronized data via
FTMobileConfig.compressIntakeRequests. - Added the
addAction:actionType:propertyandstartAction:actionType:property:methods to RUM and optimized RUM Action collection logic. - Fixed a crash caused by the deprecated NSFileHandle API.
1.5.5 (2024/11/06)¶
- Fixed a crash caused by array index out of bounds in
FTResourceMetricsModel.
1.5.4 (2024/10/18)¶
- Added dynamic setting methods for global, Log, and RUM globalContext properties.
- Added a data clearing method that deletes all data that has not yet been uploaded to the server.
- Adjusted the maximum supported synchronization interval to 5000 milliseconds.
1.5.3 (2024/10/09)¶
- Fixed a memory access error crash caused by incorrect property modifiers during Long Task and ANR collection.
- Replaced method signature verification assertions in
FTSwizzlerwith internal warning logs. - Optimized the decimal precision of collected data.
1.5.2 (2024/08/21)¶
- Fixed the missing
#include <arm/_mcontext.h>header file when compiling with Xcode 16. - When automatically collecting RUM Resources, filters out Resources fetched directly from the local cache or with an unknown fetch type to prevent duplicate collection.
- Fixed the loadingTime calculation logic for UITabBarController subviews.
1.5.1 (2024/08/02)¶
- Fixed the line protocol data escaping algorithm to resolve data synchronization failures caused by newline characters.
- Optimized error messages for errors with type
network_error, using unified English descriptions for network request error codes. - Optimized data synchronization logic and fixed a crash caused by multi-threaded access to a released
uploadDelayTimer. - Fixed a crash caused by encoding errors when converting between Objective-C and C strings during crash information collection.
1.5.0 (2024/06/03)¶
- Added remote IP address resolution for RUM Resource network requests.
- Added a line protocol Integer data compatibility mode to handle web data type conflicts.
- Added a custom status method for Logs.
- Optimized log data writing and data synchronization.
- Applied format processing to NSDictionary parameters passed into the SDK to prevent data loss caused by JSON conversion failures.
1.4.14 (2024/05/29)¶
- Fixed a memory access error crash caused by accessing a deallocated Class object in
FTSwizzler. - Fixed data consistency and operation conflict issues that could arise when NSDictionary parameters passed to the SDK are actually mutable objects.
1.4.13 (2024/05/15)¶
- Optimized RUM Long Task and ANR collection, fixed inaccurate Long Task stack trace collection, and added support for collecting fatal freezes.
- Fixed a crash in
FTSwizzlercaused by concurrent multi-threaded operations on NSMutableSet. - Fixed the missing version information in the info.plist of the packaged SDK Framework.
- Fixed the failure to collect Resource performance metrics when a custom NSURLSession has no delegate set.
- Optimized the SDK's internal log-to-file functionality and added a method to specify the file path.
1.4.12 (2024/04/26)¶
- Fixed a memory leak caused by calling the SDK shutdown method
shutDown. - Fixed a crash caused by conflicts with other libraries during RUM Resource collection.
- Fixed the issue where the UncaughtExceptionHandler was not passed through during crash collection.
- Fixed data anomalies caused by initializing the SDK multiple times.
1.4.11(2024/03/28)¶
- Added support for configuring data synchronization parameters: entries per request, synchronization interval, and log cache entry count.
- Added a method to write internal logs to files.
- Fixed errors in retrieving RUM data associated with logs.
- Optimized time-consuming operations.
- Fixed a crash caused by the WebView jsBridge by changing the WebView reference to a weak reference.