Skip to content

iOS SDK

The bitdrift Capture SDK offers developers a straightforward method to seamlessly integrate the Capture platform into their iOS applications.

This release page lists releases for the following libraries:

Info

The iOS SDK requires a minimum iOS version of 15.

Info

It's strongly recommended that you keep the versions of all the bitdrift Capture libraries in sync. For instance, if your application uses Capture SDK version 0.9.115, you should also use CaptureCocoaLumberjack version 0.9.115.

Releases

0.17.29

Changelog:

  • Timeout Matcher is now available in the SDK. See Timeout Matcher for more details.

0.17.28

Changelog:

  • Add fatal app hang reporting
  • Add thread index to fatal issue reports
  • Prevent potential issue on native layer for metric changes

0.17.27

Changelog:

  • Prevent potential crash when start is configured with enableFatalIssueReporting set to true
  • Add configuration object for init in Objective-C. See Fatal Issues and Crashes for more details on setup.

0.17.26

Changelog:

  • Automatically capture timeline and replay logs when a fatal issue is detected.
  • Added an accessor for bitdrift Capture SDK Version.
  • Fixed rare Replay crash by temporarily disabling the parsing of SpriteKit views.

0.17.25

Changelog:

0.17.24

Changelog:

  • Fix potential deadlock situation that could occur upon internal blocking logger calls.
  • Add fatal issue reporting init for Objective-C.
  • Enhance fatal issue reports with more reason info.

0.17.23

Changelog:

0.17.22

Changelog:

  • This release is identical to 0.17.21 release.

0.17.21

Changelog:

  • This release is identical to 0.17.20 release.

0.17.20

Changelog:

  • Added experimental API which collects fatal issues (Crashes) when configured.

0.17.19

Changelog:

  • Fix lack of String conformance of MemoryPressureEvent on iOS <= 17

0.17.18

Changelog:

  • Guard MemoryPressureEvent for a compiler bug

0.17.17

Changelog:

  • Add SpriteKit support in session replay.
  • Fixed legacy issue where buffer permissions conflicted with full protection requests.

0.17.16

Changelog:

  • Update minimum supported iOS version to iOS 15.0.
  • Compile using Xcode 16.2.
  • Improved the reliability of client metrics.

0.17.15

Changelog:

  • This release is identical to 0.17.14 release.

0.17.14

Changelog:

  • This is an invalid release, it's our general suggestion to skip this version.

0.17.13

Changelog:

  • Check ring buffer file CRC before reading it. This should prevent the SDK from reading a corrupted file.

0.17.12

Changelog:

  • This release is identical to 0.17.11 release.

0.17.11

Changelog:

  • This release is identical to 0.17.10 release.

0.17.10

Changelog:

0.17.9

Changelog:

  • Include any string convertible field in error logs
  • Spans with custom start and/or end times are now placed at the provided time in the timeline view
  • Added support for the Measure Duration action, allowing the duration between two log lines to be measured using a workflow

0.17.8

Changelog:

  • Fixed issue that preventing responses to be seen by the URLSession delegate proxy integration under specific conditions
  • Changed span interface to include the ability to specify a parent span ID and custom start/end times

0.17.7

Changelog:

  • Updated Rust version from 1.83 to 1.85

0.17.6

Changelog:

  • Added an assortment of Objective-C method counterparts to the existing SDK API surface area.

0.17.5

Changelog:

  • Add additional timing metrics to network responses. See HTTP Response Fields section for more details.

0.17.4

Changelog:

  • This release is identical to 0.17.3 release.

0.17.3

Changelog:

  • Fix bug that caused uncommon session tasks (such as AVAggregateAssetDownloadTask) to crash in runtime when using URLSession integration.

0.17.2

Changelog:

  • Fixed swift bug that causes the app to crash during startup in rare conditions.

0.17.1

Changelog:

  • Handled the case where apps set the NSURLFileProtectionComplete option.

0.17.0

Changelog:

0.16.12

Changelog:

  • Fixed a crash that could occur while using network capture for apps creating background tasks

0.16.11

Changelog:

  • Added a way for emitting a "Screen View" event. Refer to the Screen Views section for more details.

0.16.10

Changelog:

  • This release is identical to 0.16.9 release.

0.16.9

Changelog:

  • Swizzling support has been rewritten from the ground-up for better stability.

0.16.8

Changelog:

  • Fix crash that could occur when using the urlSession integration alongside the Firebase SDK under a specific scenario.

0.16.7

Changelog:

0.16.6

Changelog:

Warning

Workflows with conditions using float numbers will be ignored in previous versions of the SDK.

  • Fixed a bug causing internal timers to fire more often than expected after returning from suspension.

0.16.5

Changelog:

  • Fix a potential crash that could occur when taking screenshots alongside the GoogleMaps SDK.

0.16.4

Changelog:

  • This release is identical to 0.16.3 release.

0.16.3

Changelog:

  • This release is identical to 0.16.2 release.

0.16.2

Changelog:

  • This release is identical to 0.16.1 release.

0.16.1

Changelog:

  • Fixed the implementation of the 'User Journey' workflow action introduced in version 0.16.0 of the SDK to ensure reliable registration of user journeys.
  • Fixed a performance issue with the 'Take Screenshot' workflow action, also introduced in version 0.16.0 of the SDK.

0.16.0

Changelog:

  • Added a 'Take Screenshot' workflow action, allowing users to capture a screenshot for a specific log or after a designated series of logs.
  • Added a 'User Journey' workflow action, enabling users to capture Sankey diagrams to visualize user flows of interest.
  • Fixed a rare crash on iOS 15 that occurred when accessing the value of the ProcessInfo.isLowerPowerModeEnabled property.
  • Fixed an issue where the file, line, and function arguments in the log(...) function were being ignored.
  • Reworked the SessionReplayConfiguration APIs by removing the option to disable the session replay screen capture feature or control the screen capture rate. Instead, this feature is now controlled through a remote runtime configuration that can be updated at any time.

0.15.2

Changelog:

  • Fixed a potential crash that affected users running bitdrift urlSession integration on iOS 17.0.x.

0.15.1

Changelog:

  • Fixed a potential crash that affected users running bitdrift urlSession integration on iOS 16.

0.15.0

Changelog:

  • Renamed the Logger.configure(...) method to Logger.start(...) and updated its signature to return an optional LoggerInteractor. To migrate, use the new method name and apply optional unwrapping (?) to the returned value. For example, Logger.configure(...).enableIntegrations(...) should be changed to Logger.start(...)?.enableIntegrations(...).
  • Added exponential backoff and jittering to the logic responsible for establishing connections with the bitdrift control plane.
  • Introduced jittering to the logic handling remote bitdrift control plane configuration updates to prevent the synchronization of all connected SDK clients.

0.14.5

Changelog:

  • Fixed a potential crash that could occur when running bitdrift Capture’s urlSession integration alongside the GoogleMaps SDK.

0.14.4

Changelog:

  • Added a remote configurable mechanism to limit the lookback window using during buffer flush. This allows limiting the amount of data sent per flush.
  • Added further compression improvements to the data sent and received to the server, reducing the amount of memory required to process the data server-side.

0.14.3

Changelog:

  • Fixed a potential crash that could occur when running bitdrift Capture’s urlSession integration alongside GoogleMaps SDK.

0.14.2

Changelog:

  • Treat responses with 3xx HTTP status codes as successes instead of failures. Previously, only the 304 HTTP status code was considered a success.
  • Fixed a potential crash that could occur when running bitdrift Capture’s urlSession integration alongside certain Google third-party SDKs. The list of problematic SDKs includes, but is not limited to, GooglePlaces.
  • Fixed an issue with the propagation of bitdrift remote configuration, which is responsible for log field manipulation and helps sanitize paths displayed in workflow charts.
  • Updated Rust version from 1.80.1 to 1.81.0.
  • Updated various build dependencies.

0.14.1

Changelog:

  • Added an API for emitting the "App Launch TTI" event. Refer to Log Events for more details.
  • Added an option for Bitdrift SaaS to control how the path template is extracted from the HTTP URL path.
  • Fixed a potential crash that could occur when running bitdrift Capture’s urlSession integration alongside certain Google third-party SDKs. The list of problematic SDKs includes, but is not limited to, GooglePlaces.
  • Fixed an issue with out-of-the-box "App Updated" event not being emitted.

0.14.0

Changelog:

  • Added APIs for emitting span logs. Refer to Spans for more details.
  • Added a new out-of-the-box "Application Not Responding (ANR)" log event that's emitted each time the main run loop is unresponsive for a specified amount of time. Refer to Log Events for more details.
  • Added a new out-of-the-box "Thermal State Change" log event that's emitted each time device's thermal state changes. Refer to Log Events for more details.
  • Improved the reliability of stats delivery mechanism.

0.13.0

Changelog:

  • Added SDK version attribute to out-of-the-box "SDK Configured" log event.
  • Added support for new SET/NOT_SET matching conditions. More details will be provided once they are available to use in bitdrift frontend.
  • Modified the "App Updated" event logic so that the app installation size is calculated only if needed. This should reduce the number of disk operations the SDK performs.
  • Fixed an issue with fixed session strategy detecting prohibited re-entrance from within the generateSessionID closure.
  • Improved the overall performance of the Logger.configure method call.

0.12.0

Changelog:

  • Added a new out-of-the-box "App Updated" log event that's emitted when the SDK runs after the app update. The log includes information about the app installation size. Refer to Log Events for more details.
  • Added a new out-of-the-box "SDK Configured" log event that's emitted immediately after the SDK configuration is complete. Refer to Log Events for more details.
  • Added a new out-of-the-box "Build Number" attribute to emitted logs. Refer to Default Fields for more details.
  • Added an option to visualize the duration the SDK spends capturing screen session replay frames on the application's main thread. Refer to Log Events for more details.
  • Added fields to the existing "Resource utilization" log event with information about the amount of used disk space the SDK host app uses.
  • Added fields to the existing "Resource utilization" log event with information about the number of downloaded/uploaded bytes per minute.
  • Added an accessor for bitdrift Capture Identifier. Refer to Device Identifier for more details.
  • Removed the ResourceReportingConfiguration type and the option to configure the resource reporting polling rate. The feature is enabled by default with a polling rate of 6s, controllable remotely by bitdrift services as needed.
  • Significantly reduced the amount of space resource reporting logs take on disk and during over-the-wire transfer.
  • Treat responses with an HTTP status code of 304 as successes instead of failures.

0.11.3

Changelog:

  • Improved the performance of SDK log methods and SDK configuration. Refer to the Performance Measurements for the latest benchmark numbers.
  • Improved the reliability of logs and stats delivery by flushing the relevant state to disk when the SDK detects an event that may imply the app is about to be terminated or suspended.

0.11.2

Changelog:

  • Improved the logic used to derive path template from the path of HTTP Request. Refer to HTTP Traffic Log Fields for more details.
  • Fixed a potential bug with an infinite loop inside of a logic used to derive path template.

0.11.1

Changelog:

  • Updated the podspecs of the Capture and CaptureCocoaLumberjack libraries to correctly list iOS 12 as the minimum supported iOS version (previously iOS 13).

0.11.0

Changelog:

  • Added support for iOS 12 (downgraded the minimal supported iOS version from iOS 13 to iOS 12).
  • Added new out-of-the-box fields to HTTP request and HTTP response logs. Refer to HTTP Traffic Logs for more details.
  • Removed _file, _line, and _function log fields from HTTP request and HTTP response logs emitted by Capture urlSession integration.

0.10.0

Changelog:

  • Upgraded the version of Xcode used to build the Capture framework from 15.2 to 15.4.

0.9.118

Changelog:

  • The first release to support the collection of 'Workflow Insights,' a new feature that will add extra aggregated information to all workflow actions. A separate announcement will be made once the feature is available to the public, but we recommend that customers upgrade their SDK now so they can start benefiting from the new feature as soon as it's released.
  • Added a new out-of-the-box locale attribute that is collected as part of the emitted logs. Refer to Default Fields for more details.
  • Added a new urlSession() integration that makes it possible to start capturing logs for all of the application's network traffic with one line of code. Refer to URLSession (iOS) for more details.
  • Removed the ProxyURLSessionDelegate type. Refer to the URLSession (iOS) integration documentation for more details on how to add logging for application network traffic.
  • Changed APIs for enabling CocoaLumberjack and SwiftyBeaver integrations. Refer to CocoaLumberjack and SwiftyBeaver for more details.
  • Started capturing various request/response-related metrics in HTTP request and response logs using the HTTPRequestInfo/HTTPResponseInfo types and through Capture URLSession integration.
  • Changed the type of path argument of HTTPRequestInfo and HTTPResponseInfo structs from String? to newly introduced HTTPURLPath.
  • Fixed a small memory leak that occurred each time the SDK opened a new connection with a remote.

0.9.117

Changelog:

  • Fix potential data races that could occur during the Logger.configure(...) method call.
  • Correct Objective-C method signature, change from -[CAPLogger level:_:fields:] to -[CAPLogger level:message:fields:].

0.9.116

Changelog:

  • Use the CFBundleShortVersionString key instead of the CFBundleVersionString key for retrieving the app version number from Bundle. Refer to Default Fields for more details.
  • Make the path argument of HTTPRequestInfo optional.
  • Revamped support for app and OS version matching. Refer to Version Matching for more details.

0.9.115

Changelog:

  • This release is identical to 0.9.114 release.

0.9.114

Changelog:

  • Released side libraries for integrating Capture SDK with CocoaLumberjack and SwiftyBeaver 3rd party logging libraries. See Log Forwarding for more details.

0.9.113

Changelog:

  • Make Logger configuration and logging methods available to Objective-C code. See configuration and usage for more details.
  • Start capturing file (#fileID), line (#line), and (#function) for all logs emitted with the use of Swift interfaces. See Capturing file, line, and function to learn more.
  • Add an optional argument of Error type to all methods from the log(...) family of methods. See custom logs for more details.
  • Renamed spanId argument of HTTPRequestInfo initializer to spanID.

0.9.112

Changelog:

  • Add privacy manifest files, which Apple is about to start requiring for third-party SDKs soon.
  • Fixed app validation issues on Xcode 15.3 for Swift Package Manager and CocoaPods users.

0.9.111

Changelog:

  • Add addField(withKey:value) and removeField(withKey:) methods that can be used to add and remove fields to be attached to all logs emitted by the SDK.
  • Omit fields whose names start with _ and are provided via addField(withKey:value) or returned by FieldProviders registered with the SDK. See Field Additions and Removal methods for more details.
  • Drop fields whose names are on the the list of reserved log field names. See Fields for more details.
  • Change the type of log fields accepted by the SDK from [String: String] to [String: Encodable & Sendable].

0.9.110

Changelog:

  • This release is identical to 0.9.109 release.

0.9.109

Changelog:

  • Added createTemporaryDeviceCode(completion:) method, which creates a temporary device code that can be used to stream logs from a given device in real-time. See bd cli for more details.

0.9.108

Changelog:

  • Introduced significant improvements to the way session logs are uploaded. With this update, users now have access to logs not only before the workflow's 'Record Session' action triggers but also after the trigger. This enhancement provides a more comprehensive view of session logs, empowering users to gain deeper insights into their workflows and troubleshoot issues more effectively.
  • Added Logger.log(level:message:info:) method that takes log severity level as one of its arguments. The existence of this method may help reduce the amount of boilerplate needed to forward logs from existing logging systems into bitdrift.
  • Renamed baseURL parameter of Logger.configure(...) method to apiURL to make it consistent with the Android counterpart.

0.9.107

Changelog:

  • Exposed a convenience API method to retrieve a session permalink URL in the Logger.
  • Moved to building using Xcode 15.2 (up from Xcode 15.0).
  • Fixed a potential bug that may have caused a logger internal run loop to get stuck until the next app relaunch.

0.9.106

Changelog:

  • Improved support for Funnel Analysis. This update is recommended for customers interested in using funnels in their workflows.
  • Funnels improvements were accomplished partially by changes to workflows' traversal rules and have limited impact on session captures and stats emission actions in multi-steps workflows. The final result should be be more intuitive results of workflow actions.

0.9.105

Changelog:

  • Added support for on-demand log streaming, used to power real-time debugging tools.

0.9.104

Changelog:

  • This release is identical to 0.9.103 release.

0.9.103

Changelog:

  • Changed the order the params in the configure() method to denote their importance.

0.9.102

Changelog:

  • The first release with Screen Replay feature supporting SwiftUI views.

0.9.101

Changelog:

  • Improved the accuracy of Session Replay feature.

0.9.100

Changelog:

  • This release is identical to 0.9.99 release.

0.9.99

Changelog:

  • Remove references to unused protobuf code. The change led to the reduction of the size of SDK binaries by around 4 KiB.

0.9.98

Changelog:

  • This release is identical to 0.9.97 release.

0.9.97

Changelog:

  • Disable debug and trace logs for improved performance and reduced binary size (~40 KB smaller binary).

0.9.96

Changelog:

  • This release is identical to 0.9.95 release.

0.9.95

Changelog:

  • First public release of the bitdrift Capture SDK.