All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note
When publishing releases, the syntax of
## [VERSION_NUMBER]
is used to automatically extract the release notes. To ensure the entire section is copied, only include###
or deeper headings in a release section.
- Zero length events (
Heap.shared.track("")
) are no longer uploaded to the server, where they were being rejected.
- The SDK now sends identity to the Live data feed.
- Added new interfaces for upcoming autocapture release.
- Fixed session creation from integration code.
- Added new
startRecording
option,resumePreviousSession
, which resumes the previous session on start if the session has not yet expired. - Added new signature
stopRecording(deleteUser: Bool)
which deletes the current user state. Subsequent calls tostartRecording
will have a new user and session as a result. - Added several internal interfaces to support an upcoming integration.
- Improved trace logging for failed Sqlite queries.
- Added
enableInteractionReferencingPropertyCapture
, which will be used in heap-ios-autocapture 0.5.0 and later to enable "Target Ivar" capture. The feature is off-by-default to avoid edge conditions that can cause Swift'sMirror
functionality to crash.
- Deprecated
disableInteractionReferencingPropertyCapture
in favor of off-by-default behavior.
- Native track calls now preserve session expiration dates set by heap.js when using
Heap.attachWebView
.
- Added
Heap.shared.environmentId
, which returns the current environment ID ornil
if not recording. - Added
sourceProperties
totrackInteraction
(for use by autocapture frameworks).
-
Fixed crash on
Heap.attachWebView
when called twice on the same web view prior to iOS 15. Now, subsequent calls are ignored. -
Fixed small memory leak when an attached
WKWebView
is deallocated. This was caused by theWKUserContentController
maintaining a strong self reference when it has message handlers attached. This change may trigger a warning message from WebKit onWKWebView
deallocation, which can be resolved by callingHeap.detachWebView
when removing the web view. -
Heap.removeHeapJsCookie
is now public.
-
Heap.shared.resetIdentity()
andHeap.shared.identify()
no longer clear event properties by default when a new user is identified.The previous behavior is available using the option
.clearEventPropertiesOnNewUser
. -
Changed uploader behavior around server errors.
-
Added option
.clearEventPropertiesOnNewUser
to continue using existing SDK behavior where event properties are cleared when a new user is identified. -
Added
Heap.detachWebView
. This method removes most integrations added withHeap.attachWebView
with the exception of the heap.js cookie. This method is optional and intended to be used before deallocating aWKWebView
.
- Added
.captureVendorId
option to enable capture of iOS Vendor ID and Initial iOS Vendor ID fromUIDevice.current.identifierForVendor
. This supports a behavior change discussed in the Changed section.
-
Target Text and Target accessibilityLabel are now trimmed of whitespace.
-
Properties from
addEventProperties
will no longer show up on sessions, matching Classic SDK behavior. Pageviews and events are not affected by the change. -
The SDK no longer captures iOS Vendor ID and Initial iOS Vendor ID by default. This change allows developers to opt into Vendor ID tracking after they've validated their use complies with Apple's user privacy and data use guidelines. To enable these properties, use the
.captureVendorId
option instartRecording
.
- Fixed code signing on macOS. The issue was caused by the HeapSwiftCoreInterfaces zip file not preserving symlinks.
- Exposed
+[HeapSourceInfo sourceInfoWithName:version:platform:properties:]
and-[Heap track:properties:sourceInfo:]
to Objective-C.
- Added app version change and install events. These will fire when an environment first encounters a different application identifier, app name, or version at session start.
- Changed process to retrieve iOS device model.
sysctlbyname
is now used to retrieve the detailed hardware identifier (e.g., "iPhone10,3"). This results in more specific model identification than the genericUIDevice.model
approach which is now used as a fallback.
- Added missing Objective-C module to HeapSwiftCoreInterfaces to unblock CocoaPods release.
- Added option
startSessionImmediately
to begin tracking sessions immediately.
- 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()
- Split out public APIs into a ABI-stable XCFramework to better support heap-ios-autocapture-sdk.
- Removed usage of
unsafeFlags
in Package.swift.
- Omits properties containing empty keys and values.
- 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.