Skip to content

Changelog


1.6.7 (2026/08/19)

  1. 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).
  2. Added FTRumConfig.issueDataProvider to attach validated custom fields and historical context to automatically collected Crash and ANR RUM Error events.
  3. Added macOS Session Replay recording support, covering common AppKit views and controls.
  4. Added automatic macOS app launch Action collection, and unified the macOS default service and Log source labels.
  5. 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.
  6. Optimized RUM lifecycle handling for fallback views, app launch, first-frame tracking, delayed initial Actions, and session expiration scenarios.
  7. Optimized the loading_time measurement for automatically collected UIKit and SwiftUI RUM Views, excluding idle time during pre-rendering and pre-loading stages.

1.6.6 (2026/07/15)

  1. 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.
  2. 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.
  3. Added system compression and zlib header files.
  4. Optimized URLSession Resource stability by preserving request and trace data during asynchronous processing and limiting the cached response body size to reduce OOM risks.
  5. Fixed issues with RUM CPU calculation, app launch, app state, session timeout, crash context, and active View context handling.
  6. Improved ANR reliability by avoiding SQLite VACUUM when the app enters the background and retrying full-thread backtrace collection.
  7. Fixed a potential array out-of-bounds crash caused by invalid enum values.

1.6.5 (2026/06/09)

  1. Added FTSessionReplayConfig.enableSwiftUI to explicitly enable Session Replay SwiftUI recording, disabled by default.
  2. Added support for customizing the source value when uploading iOS Session Replay Segments, to accommodate Flutter Session Replay scenarios.
  3. Fixed a Session Replay crash caused by dynamic UIColor parsing, and optimized background snapshot handling and SwiftUI recording stability.
  4. 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.
  5. Optimized Session Replay, RUM, and Log upload scheduling and retry handling.
  6. Optimized Session Replay rendering correctness and performance, including node flattening, snapshot processing queue priority, View Tree privacy override inheritance, and unsupported placeholder trimming.
  7. 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)

  1. Added Session Replay support for SwiftUI views.
  2. Added RUM SwiftUI view tracking and manual click Action tracking support.
  3. Added the app_launch_type field to cold start Actions to distinguish between foreground and background launches.
  4. 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.
  5. 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.
  6. Replaced RUM placeholder View handling with fallback View resolution to improve View tracking consistency when the original View is unavailable.
  7. Optimized handling of preset property Tags in nil, empty, and user info update scenarios.

1.6.3 (2026/04/30)

  1. Added view_long_task_rate to measure the page jank rate of RUM Views.
  2. Added the network_available field to RUM Resource data to record the network availability snapshot at the start of the resource.
  3. Added crash duration fields to RUM crash data from app state statistics: foreground_crash_free_duration and background_crash_free_duration.
  4. Added support for associating RUM Keys with Session Replay resource uploads.
  5. Enabled data upload request compression by default.
  6. Fixed a race condition with NSDate in the long task detector.
  7. Fixed WKWebView bridge locking and duplicate enablement handling, improving WebView RUM / Session Replay stability.
  8. Fixed a potential failure of local CSS injection when Session Replay processes WebView node data.

1.6.2 (2026/04/17)

  1. Added Session Replay capability, supporting WebView Session Replay.
  2. Added Session Replay and RUM context correlation, allowing the WebView container to be associated with the context of the loaded HTML content.
  3. Added Session Replay error sampling capability and support for dynamically controlling Session Replay via remote configuration.
  4. Added Session Replay image resource upload capability.
  5. 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.

1.5.21 (2026/04/15)

  1. Added setDatakitURL: and setDatawayURL:clientToken: methods to support dynamically updating the upload endpoint at runtime.
  2. Minimum deployment target raised to iOS 12+ and macOS 10.14+.
  3. Fixed a View association failure when calling addAction:.
  4. Optimized Log and RUM correlation logic, adding the missing action_id field.
  5. Fixed the RemoteConfig fetch interval logic – the SDK now uses the local last request time to validate the request interval at startup.
  6. Fixed the issue where dynamically modifying the sample rate did not take effect.

1.5.20 (2026/02/26)

  1. Fixed concurrent read/write issues in FTPresetProperty to prevent crashes caused by dictionary corruption and duplicate releases.
  2. Enabled WAL mode for SQLite within the SDK.
  3. Replaced the deprecated SCNetworkReachability with NWPathMonitor.
  4. Removed the use of the deprecated API UIScreen.mainScreen.
  5. Fixed the FTMobileConfig.dataModifier handling logic to ensure coverage of all data entries.

1.5.19 (2026/01/09)

  1. Extended resource_type with new types: image, media, font, CSS, JS, native.
  2. Added resource_id to network errors to correlate with the corresponding resource data.
  3. Added support for custom parsing and configuration of remote variables via the FTMobileConfig.remoteConfigFetchCompletionBlock or +updateRemoteConfigWithMiniUpdateInterval:completion: callback methods. See Remote Config Code Sample.
  4. Added resource_http_protocol, resource_request_size, and resource_connection_reuse fields to Resources.
  5. 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.
  6. Fixed data loss caused by missing RUM Views.
  7. Enhanced crash and ANR stack trace capabilities by supporting full-thread information collection, and added support for configuring crash monitoring types via FTRumConfig.crashMonitoring.

1.5.18 (2025/08/08)

  1. Added RUM View/Action collection filtering and custom View/Action naming via FTRumConfig.viewTrackingHandler and FTRumConfig.actionTrackingHandler.
  2. Added the -updateViewLoadingTime: method to update the loading time for the currently active RUM View.
  3. Fixed the missing sdk_name field in log data.
  4. Fixed UserScripts conflicts in WebView data collection.
  5. Fixed thread safety issues with the SDK shutdown operation.
  6. Fixed a crash caused by modifying the main thread name during long task monitoring.
  7. Split FTRumConfig from FTMobileConfig.h into a separate file by adding FTRumConfig.h/.m.

1.5.17 (2025/06/11)

  1. Added FTRUMConfig.enableTraceWebView to enable WebView data collection via the SDK, and FTRUMConfig.allowWebViewHost to filter host addresses.
  2. Added FTRumConfig.sessionTaskErrorFilter to filter local network errors.
  3. Added FTMobileConfig.remoteConfiguration to enable remote configuration, and FTMobileConfig.remoteConfigMiniUpdateInterval to set the minimum update interval after enabling remote control.

1.5.16 (2025/05/16)

  1. Added FTMobileConfig.lineDataModifier and FTMobileConfig.dataModifier to support data rewrite and data masking.
  2. Added FTRUMConfig.sessionErrorSampleRate to support error sampling. When not sampled by sampleRate, error occurrence triggers sampling of RUM data from 1 minute before.
  3. Logger now supports filtering custom log levels via logLevelFilter.
  4. When navigating from a native page to a WebView page, the native page name is used to populate view_referrer.

1.5.15 (2025/04/14)

  1. Fixed Swift Package Manager compilation errors.

1.5.14 (2025/03/07)

  1. 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.
  2. Enabled FTMobileConfig.enableDataIntegerCompatible by default.
  3. Added support for disabling URLSession Method Swizzling inside the SDK via the macro FT_DISABLE_SWIZZLING_RESOURCE.
  4. Optimized data synchronization by adding failed retransmission logic.

1.5.13 (2025/02/27)

  1. Optimized page collection logic to prevent special views from causing missed RUM View collection.

1.5.12 (2025/02/10)

  1. Adjusted file storage path configuration to fix database creation failure in tvOS environments.
  2. Updated the default service and log source for tvOS environments to df_rum_tvos and df_rum_tvos_log respectively.
  3. Fixed inaccurate duration calculation in RUM Action events.

1.5.11 (2025/02/05)

  1. Optimized RUM Resource collection to prevent SDK internal requests from being collected when RUM Resource auto-collection is enabled.
  2. Fixed SkyWalking tracing failure in Widget Extension.

1.5.10 (2025/01/21)

  1. Added support for intercepting Requests for custom tracing via FTTraceConfig.traceInterceptor, and adding custom properties to RUM Resources via FTRumConfig.resourcePropertyProvider.
  2. Fixed an exception when dynamically adding global properties under multi-threaded access.
  3. Optimized data passed in from WebView.

1.5.9 (2025/01/08)

  1. Added support for intercepting URLRequest via the FTURLSessionDelegate.traceInterceptor block for custom tracing and modifying spanId/traceId in the trace.
  2. RUM Resources now support collecting network requests initiated via the Swift async/await URLSession API.
  3. Fixed incorrect View association for LongTask and ANR.

1.5.8 (2024/12/23)

  1. Added tvOS support.
  2. Added support for limiting the maximum number of RUM cache entries via FTRUMConfig.rumCacheLimitCount, and setting the discard policy via FTRUMConfig.rumDiscardType.
  3. 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.

1.5.7 (2024/12/04)

  1. Added support for setting the jank detection threshold via FTRUMConfig.freezeDurationMs.
  2. Optimized the SDK shutDown method to avoid jank or WatchDog crashes caused by synchronous waiting on the main thread.

1.5.6 (2024/11/13)

  1. Added support for deflate compression of synced data via FTMobileConfig.compressIntakeRequests.
  2. Added addAction:actionType:property and startAction:actionType:property: methods to RUM, optimizing RUM Action collection logic.
  3. Fixed a crash caused by using the deprecated NSFileHandle API.

1.5.5 (2024/11/06)

  1. Fixed a crash caused by array out-of-bounds in FTResourceMetricsModel.

1.5.4 (2024/10/18)

  1. Added dynamic setting methods for global, log, and RUM globalContext properties.
  2. Added a data clearing method to delete all unsent data.
  3. Adjusted the maximum supported sync interval to 5000 milliseconds.

1.5.3 (2024/10/09)

  1. Fixed a memory access error crash during LongTask/ANR collection caused by incorrect property modifier usage.
  2. Replaced method signature validation assertions in FTSwizzler with internal warning logs.
  3. Optimized decimal precision of collected data.

1.5.2 (2024/08/21)

  1. Fixed a missing #include <arm/_mcontext.h> header file compilation error in Xcode 16.
  2. When auto-collecting RUM-Resource, resources obtained directly from local cache or with unknown acquisition types are now filtered out to prevent duplicate collection.
  3. Fixed the loadingTime calculation logic for UITabBarController sub-views.

1.5.1 (2024/08/02)

  1. Fixed the line protocol data escape algorithm to resolve data synchronization failures caused by newline characters.
  2. Optimized error messages for network_error type errors, using English descriptions for network request error codes uniformly.
  3. Optimized data synchronization logic and fixed a crash caused by accessing a released uploadDelayTimer in multi-threaded scenarios.
  4. Fixed a crash caused by encoding format errors during OC and C string conversion when collecting crash information.

1.5.0 (2024/06/03)

  1. Added remote IP address resolution for RUM Resource network requests.
  2. Added line protocol Integer data compatibility mode to handle web data type conflicts.
  3. Added a custom status method for logs.
  4. Optimized log data writing and data synchronization.
  5. Performed format processing on NSDictionary type parameters passed to the SDK to prevent data loss due to JSON conversion failure.

1.4.14 (2024/05/29)

  1. Fixed a memory access error crash in FTSwizzler caused by accessing a destroyed Class object.
  2. Fixed potential data consistency and operation conflict issues when the NSDictionary type parameter passed to the SDK is actually a mutable object.

1.4.13 (2024/05/15)

  1. Optimized RUM LongTask and ANR collection, fixed inaccurate LongTask stack trace collection, and added support for collecting fatal jank.
  2. Fixed a crash in FTSwizzler caused by simultaneous multi-threaded operations on NSMutableSet.
  3. Fixed missing version information in the info.plist of the packaged SDK Framework.
  4. Fixed Resource performance metric collection failure when a custom NSURLSession does not have a delegate set.
  5. Optimized the feature for converting SDK internal logs to files, and added a method to specify the file path.

1.4.12 (2024/04/26)

  1. Fixed a memory leak caused by calling the SDK shutdown method shutDown.
  2. Fixed a crash caused by conflicts with other libraries during RUM-Resource collection.
  3. Fixed the issue where the UncaughtExceptionHandler was not passed during crash collection.
  4. Fixed data anomalies caused by multiple SDK initializations.

1.4.11(2024/03/28)

  1. Added support for configuring data synchronization parameters: request entry count, sync interval, and log cache entry count.
  2. Added a method to convert internal logs to files.
  3. Fixed an error in retrieving RUM data for log correlation.
  4. Optimized time-consuming operations.
  5. Fixed a crash caused by WebView jsBridge, and changed the WebView reference to a weak reference.

More Logs