Swift iOS Changelog
All notable changes to the Heap iOS library will be documented in this file. For steps to install Heap on iOS, see the installation docs for the desired library:
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Swift Core Changelog
[0.2.1] - 2023-05-22
Fixed
- Added missing Objective-C module to HeapSwiftCoreInterfaces to unblock CocoaPods release.
[0.2.0] - 2023-05-16
Added
- Added option
startSessionImmediately
to begin tracking sessions immediately.
Changed
- Default behavior for sessions has been changed (
startSessionImmediately = false
).
Tracking of sessions is now delayed until one of the following is called:Heap.shared.track()
Heap.shared.trackPageview()
Heap.shared.trackInteraction()
Heap.shared.uncommittedInteractionEvent()
Heap.shared.fetchSessionId()
[0.1.2] - 2023-03-29
Changed
- Split out public APIs into a ABI-stable XCFramework to better support heap-ios-autocapture-sdk.
Fixed
- Removed usage of
unsafeFlags
in Package.swift.
[0.1.1] - 2023-03-20
Fixed
- Omits properties containing empty keys and values.
[0.1.0] - 2023-03-10
Added
- Manual capture SDK.
- Support methods and classes for runtime bridges.
- Support methods and classes for autocapture sources.
- Support for manual capture within WKWebView.
- Support for platforms targeting Swift: macOS, watchOS, iOS, iPadOS, tvOS.
iOS Autocapture Changelog
[0.2.1] - 2023-05-22
Fixed
- Updated minimum HeapSwiftCore CocoaPods version to 0.2 so it's not pinned to 0.1.x.
[0.2.0] - 2023-05-16
Added
- Added Objective-C access to the register function.
- Added support for capturing other component change events while
UITextField
andUITextView
are active.
Fixed
- Fixed capture of bar button item text.
- Relaxed filtering rules to capture
_
prefixed selectors in Target Selector. - Fixed an issue where
textFieldShouldBeginEditing
was being called an extra time when switching between text fields. (heap/heap-ios-autocapture-sdk#1) - Fixed duplicate pageview that could occur if a session was started by a view controller appearing.
[0.1.2] - 2023-03-29
Fixed
- Restructured package so HeapSwiftCore can be used as a dependency.
[0.1.1] - 2023-03-29
Fixed
- Fixed error when sending nil to certain sendEvent arguments.
[0.1.0] - 2023-03-10
Added
- Autocapture SDK targeting iOS 13.0+ and Xcode 14.0+.
Legacy iOS Changelog
[9.1.0] - 2022-11-03
Changed
- Moved data storage out of
NSUserDefaults
.
Fixed
- Fixed issue with double-encoded session properties.
- Fixed data purge logic when queues are in an invalid state.
[9.0.2] - 2022-11-03
Fixed
- Fixed issue with double-encoded session properties.
[8.2.2] - 2022-11-03
Fixed
- Fixed issue with double-encoded session properties.
[8.2.1] - 2022-07-26
Fixed
- Fixed issue causing pageview ids not to rotate.
[9.0.0] - 2022-07-20
Added
- Added new properties
UIView.heapRedactText
and
UIView.heapRedactAccessibilityLabel
for redacting text properties from
touch events. - Added new property
UIView.heapIgnoreInnerHierarchy
for omitting inner view
hierarchies from touch events. The default behavior for a view can be set
by overriding the staticheapIgnoreInnerHierarchyDefault
property.
Fixed
- Improved attribution of pageviews in multi-window iPad apps.
- Fixed performance issues when Heap uploads fail for a prolonged period of
time. This includes a recovery mechanism where Heap will reset its internal
data stores when initialized in an impacted state.
Changed
- Gesture recognizers autocapture has become opt-out by default. They can be
enabled with theenableGestureAutocapture
property onHeapOptions
. Heap.resetIdentity()
has been updated to be consistent with web autocapture.
The session will no longer reset for anonymous users and it doesn't clear
event properties.Heap.identify(...)
has been updated to be consistent with web autocapture.
It will now start a new session when transitioning between two non-anonymous
users.
Breaking changes
- Deprecated methods have been removed from the Heap SDK.
- Dropped support for iOS versions below 12.0.
- Dropped support for Visual Labeling (aka Event Visualizer) prior to iOS 13.0.
Heap will function as expected, but pairing gestures, the QR code, and
[Heap startEVPairing]
will have no effect on iOS 12 devices.
[8.2.0] - 2022-04-05
Added
- Added options to disable various title, ivar, and accessibility label capture with the
disableTitleCapture
,disableIvarCapture
, anddisableAccessibilityLabelCapture
properties onHeapOptions
. - Added an option to disable view controller autocapture with the
disableViewControllerAutocapture
property onHeapOptions
. - Improved logging of React Native events in the console.
- Added support for React Native in Event Visualizer.
Fixed
- Fixed graphical defects in Event Visualizer screenshots. The SDK will automatically revert back to fast screenshots if a performance issue is detected, but it can also be manually enabled with the
useFastEVScreenshotCapture
property onHeapOptions
.
[8.1.0] - 2022-02-24
Added
- Added
[Heap sessionId]
and[Heap identity]
for retrieving the values currently sent with events. - Added option to disable gesture recognizer events with
disableGestureAutocapture
property onHeapOptions
.
Changed
- Heap now performs method swizzling during
[Heap initialize:]
but can be made to perform it earlier via[Heap instrumentAutocaptureWithOptions:]
.
Fixed
- Improved capture of view controller titles.
- Fixed infinite recursion crash in SwiftUI previews.
- Resolved
(null)
pageview properties.
[8.0.0] - 2021-10-12
Breaking Changes
- Adopted the XCFramework, will require minor code changes for both manual and Cocoapods installs.
Added
- Included
Heap.xcframework
with support for M1 Macs. - Added options to support proxying requests.
Fixed
- Fixed a failure that would occur when calling
-[UISegmentedControl setSelectedSegmentIndex:-1]
shortly after it was touched. - Improved handling of malformed event properties.
- Fixed tracking of Storyboard-created gesture recognizers on pre-iOS 13 devices.
[7.5.1] - 2021-05-24
Fixed
- Fixed a race condition where the SDK would "bail" on boot if an appId wasn't set yet.
[7.5.0] - 2021-05-04
Added
- Updated to allow the size of captured view ancestry chains to be configured.
Fixed
- Constrain view ancestry capture updated to 30 elements so CPU usage isn't unbounded.
[7.4.1] - 2021-01-12
Fixed
- Fixed a "duplicate symbols for architecture" error that could appear when building the Debug scheme.
[7.4.0] - 2021-01-08
Added
- Allow pairing with the Event Visualizer using a QR code.
Fixed
- Fixed an issue where two-pass selector processing could sometimes overwrite events that didn't represent touches.
[7.3.0] - 2020-09-25
Added
- Support for screen views in the Event Visualizer.
Fixed
- Non-numeric app IDs are no longer allowed when the Heap library is being initialized.
- Overhauled the Event Visualizer to make it more consistent with autocaptured data.
- Fixed an issue where interactions with
UISegmentedControl
instances wouldn't show up in the Event Visualizer.
[7.2.0] - 2020-08-27
Added
- Support for iOS 14 (beta 5).
- Capture app background/foreground visiblity status for every autocaptured event.
[7.1.1] - 2020-07-13
Fixed
- Fixed an issue where certain UTF-16 strings were truncated incorrectly, possibly causing a crash.
[7.1.0] - 2020-07-01
Added
- Allow the disabling of tracking events using
setTrackingEnabled
: or thedisableTracking
property onHeapOptions
.
[7.0.2] - 2020-07-13
Fixed
- Fixed an issue where certain UTF-16 strings are truncated incorrectly, possibly causing a crash.
[7.0.1] - 2020-06-30
Fixed
- Fixed an issue where calls to
Heap track
from a background thread could be dropped.
[7.0.0] - 2020-06-17
Breaking changes
- Dropped support for iOS versions below 10.0.
Added
- Allow disabling autocapture when an app has been backgrounded through a
disableAutocaptureWhenBackgrounded
property onHeapOptions
. - Expose
heapIgnore
as a property, as opposed to only through User Defined Runtime Attributes in the Interface Builder.
Changed
- Use an improved format for sending events to Heap.
[6.8.1] - 2020-06-04
Fixed
- Fixed an issue where the Event Visualizer pairing popup would not be displayed for apps using
UISceneDelegate
. - Fixed an issue where the Event Visualizer pairing popup would appear, then immediately disappear.
- Fixed an issue where install/upgrade events would not fire for certain installations.
[6.8.0] - 2020-05-18
Added
- Send telemetry data to Heap when the library detects an internal error.
Fixed
- Fixed an issue where the Event Visualizer would break pairing when the device goes to sleep.
- Fixed an issue where a call to
Heap resetIdentity
would be ignored if it was immediately preceded by a call toHeap identify
. - Fixed an issue where the Event Visualizer would receive no data from apps whose application delegate didn't contain a window property.
[6.7.1] - 2020-05-18
Fixed
- Fixed an issue where the Event Visualizer would receive no data from apps whose application delegate didn't contain a window property.
[6.7.0] - 2020-04-03
Added
- Added the ability to capture the IDFA (identifier for advertisers) and IDFV (identifier for vendors).
Fixed
- Fixed an issue where the
Heap userId
API would return nil for non-anonymous users. - Fixed an issue where view ancestry data would be dropped for retried requests.
[6.6.3] - 2020-05-18
Fixed
- Fixed an issue where the Event Visualizer would receive no data from apps whose application delegate didn't contain a window property.
[6.6.2] - 2020-04-03
Fixed
- Fixed an issue where the
Heap userId
API would return nil for non-anonymous users. - Fixed an issue where view ancestry data would be dropped for retried requests.
[6.6.1] - 2020-03-11
Fixed
- Fixed a thread-safety issue related to sessionization logic - previously, calls to
Heap identify
andHeap track
could potentially result in a crash if called from a background thread.
[6.6.0] - 2020-01-23
Added
- Added new initialize function for more explicit initialization of the Heap library.
- Added
disableTextCapture
initialization option to disable capturing the text of click events for PII purposes. - Added debug initialization option to start debug logging of Heap activity via NSLog.
- Added support for reporting view hierarchies.
Fixed
- Fixed an issue (particularly manifesting in iOS 13) where the View Controller on an event could incorrectly be attributed to a dismissed modal view.
- Improved Event Visualizer pairing alert and screenshot capture.
Deprecated
- setAppId has been deprecated, please use initialize instead.
[6.5.4] - 2020-03-11
Fixed
- Fixed a thread-safety issue related to sessionization logic - previously, calls to
Heap identify
andHeap track
could potentially result in a crash if called from a background thread.
[6.5.3] - 2019-12-11
Fixed
- Many non-alphanumeric characters are properly escaped for transmission.
[6.5.2] - 2019-12-10
Fixed
- Fixed an issue where some debug noise was not suppressed in console log output.
[6.5.1] - 2019-12-05
Fixed
- Fixed an issue where first-time app install events were not being properly recorded.
[6.5.0] - 2019-12-03
Added
- Added new methods for tracking events from frameworks.
- Capture view ancestry information for all touch & fieldedit events.
- Capture target text for ASButtonNode instances from the Texture library.
Fixed
- The Event Visualizer trigger gesture works on UIWindow instances instantiated after app launch.
- Stability improvements for UISegmentedControl autocapture.
- Suppress recording spurious system view controllers, particularly those used by iOS 13.
[6.4.1] - 2019-11-20
Fixed
- Fixed issues with incorrect view controller class names being captured on iOS 13.
[6.4.0] - 2019-10-04
Changed
- Pageviews are now triggered when child view controllers are presented.
[6.3.0] - 2019-09-06
Added
- Added protection to avoid possible crashes, disabling capture when errors occur.
Fixed
- Fixed instrumentation of UISegmentedControls on iOS 9.
- Fixed an error that would occur when opening multiple Event Visualizer sessions.
[6.2.1] - 2019-08-13
Fixed
- Fixed a bug related to user ID generation across app restarts.
[6.2.0] - 2019-07-24
Fixed
- The gesture used to initiate Event Visualizer pairing mode was discovered to have interactions with app background audio, so was modified to a different gesture.
[6.1.0] - 2019-07-12
Added
- Add the [Heap startEVPairing] and [Heap stopEVPairing] APIs; this enables programmatic control of the event visualizer pairing mode.
- Allow entering the event visualizer pairing mode from an iOS simulator using the
Hardware → Shake Gesture
command.
Changed
- Improve sessionization semantics; sessions now expire after 5 idle minutes, regardless of the app's background/foreground state.
[6.0.0] - 2019-07-09
Breaking changes
- Dropped support for iOS versions below 9.0.
Added
- Enhanced the pairing flow for the iOS event visualizer.
[5.4.1] - 2019-06-20
Fixed
- Fixed an issue related to UISegmentedControl components in OS versions earlier than iOS 10 that wasn't fixed adequately in the last release.
[5.4.0] - 2019-06-18
Added
- Exposed a programmatic way to reset the user identity.
Fixed
- Fixed an issue where observing UISegmentedControl components would crash on an OS earlier than iOS 10.
- Fixed an issue where accessibility identifiers could be accessed off the main queue.
[5.3.1] - 2019-06-07
Added
- Capture app lifecycle events (installation & upgrade).
Fixed
- Fixed an issue where the incorrect target text was being reported for touches on UISegmentedControl instances.
[5.2.0] - 2019-04-24
Fixed
- The
accessibilityIdentifier
for UIBarButtonItems is now reported with touch events.
[5.1.0]
Added
- Events triggered by ViewControllers now include the title property of the ViewController.
[5.0.8]
Fixed
- Fixed a crash with the Event Visualizer for apps built on Xcode 10.
[5.0.7]
- Fixed a crash caused when Heap was loaded along with Firebase/Performance.
[5.0.6]
- Fixed a situation that could cause events to have the wrong screenview properties.
[5.0.5]
Fixed
- Fixed possible crash when view controller class is nil.
[5.0.4]
Fixed
- Moved some code from a background thread to main thread to satisfy XCode's Main Thread Checker diagnostic.
[5.0.3]
Fixed
- addUserProperties failed to work if user was already identified.
[5.0.1]
Fixed
- Fixed the view controller name sent to the Event Visualizer on touch events.
[5.0.0]
Fixed
- Correctly capture names of several types of nested view controllers.
- Removed deprecated form of identify API.
[4.0.1]
Added
- Include this changelog in the package on CocoaPods
[4.0.0]
Added
- Improved library documentation.
- Annotated methods to improve usability from Swift.
- Allow hiding views from Heap by adding a boolean user defined attribute
calledheapIgnore
in Interface Builder and setting it to true.
Fixed
- Changed view controller capture to more accurately represent the current
view.
Deprecated
These methods were already deprecated in 3.0.0, but we're highlighting them here as we intend to remove them in a future release.
- The
identifyDeprecated:
method is (obviously) deprecated, and should be replaced byidentify:
. See user identities and properties documentation for the correct usage. - The
setEventProperties:
andunsetEventProperty:
methods are deprecated, and should be replaced byaddEventProperties:
andremoveEventProperty:
respectively. The new methods are aliases, so simply replacing calls will work.
Updated 8 days ago