- feat: add person and group properties for feature flags (#373)
- feat: support default properties for feature flag evaluation (#375)
- feat: add support for custom survey UI (#369)
- fix: don't clear flags on remote config error or if hasFeatureFlags is nil (#368)
- fix: surveys decoding error (#363)
- feat: add support for beforeSend function to edit or drop events (#357)
- fix: unify storage path for
appGroupIdentifieracross targets (#356) - fix: do not call flags callback with invalid flags (#355)
- use new
/flagsendpoint instead of/decide(#345)
- fix: pause network capture when app is backgrounded (#352)
- fix: prevent duplicate application lifecycle events (#354)
- fix: clear cached flags if remote config response hasFeatureFlags is false (#347)§
- feat: capture console logs for session replay (#350)
- fix: edge case where session manager would not rotate session id (#349)
- feat: add support for conditional survey questions (#343)
- fix: feature flags not loading on sdk init (#346)
- fix: optional link in survey question type (#341)
- fix: app hangs on iPad with floating keyboard when session replay is enabled (#340)
- fix: Send correct
$feature_flag_responsefor the$feature_flag_calledevent when callingisFeatureEnabled(#337) - fix: support ISO8601 dates with missing milliseconds (#338)
- fix: postHogMask() view modifier breaks navigation bar (#331)
- fix: manually start session recording even when
config.sessionReplayis disabled (#330) - feat: start/stop integrations when calling optIn() or optOut() (#329)
- feat: add
$feature_flag_id,$feature_flag_version,$feature_flag_reasonand$feature_flag_request_idproperties to$feature_flag_calledevent (#327)
- no user facing changes
- feat: add support for surveys on iOS (#325)
-
fix: visionOS builds (#291) Thanks @harlanhaskins ❤️
-
feat: improve session replay throttle logic (#322)
Note:
debouncerDelayis deprecated and will be removed in next major update. UsethrottleDelayinstead which provides identical functionality for controlling session replay capture frequency.
- feat: support multiple SDK instances (#310)
Note: Now event storage is per API key. Any pending events in legacy storage will be migrated to the first API key used.
- fix: SwiftUI view masking when using clipShape view modifier (#312)
- fix: reported crash on PostHogSessionManager (#311)
- feat: add support for quota-limited feature flags (#308)
- fix: recordings not always properly masked during screen transitions (#306)
- fix: crash on autocapture when a segmented control has not selection (#304)
- fix: flutter session recordings not working (#297)
- fix: occasional crash when converting to Int in session replay wireframe (#294)
- fix: custom hosts with a path (#290)
- fix: identify macOS when running Mac Catalyst or iOS on Mac (#287)
- fix: RN Expo builds failing (#281)
- feat: ability to manually start and stop session recordings (#276)
- feat: change screenshot encoding format from JPEG to WebP (#273)
- feat: add
postHogNoMaskSwiftUI view modifier to explicitly mark any View as non-maskable (#277)
- fix: ignore additional keyboard windows for $screen event (#279)
- fix: avoid masking SwiftUI Gradient views (#275)
- feat: ability to add a custom label to autocapture elements (#271)
- fix: ignore autocapture events from keyboard window (#269)
- fix: screen flicker when capturing a screenshot when a sensitive text field is on screen (#270)
- fix: deprecate
maskPhotoLibraryImagesdue to unintended masking issues (#268)
- fix: skip capturing a snapshot during view controller transitions (#265)
- no user facing changes
-
fix: detect and mask out system photo library and user photos (#261)
- This can be disabled through the following
sessionReplayConfigoptions:
config.sessionReplayConfig.maskAllSandboxedViews = false config.sessionReplayConfig.maskPhotoLibraryImages = false
- This can be disabled through the following
- fix: read accessibilityLabel from parent's view to avoid performance hit on RN (#259)
- fix: properly mask SwiftUI Text (and text-based views) (#257)
- fix: avoid zero touch locations (#256)
- fix: reading screen size could sometimes lead to a deadlock (#252)
- fix: mangled wireframe layouts (#250)
- recording: do not rotate the session id for hybrid SDKs (#253)
- fix: allow changing person properties after identify (#249)
- fix: accessing UI APIs off main thread to get screen size (#247)
- add autocapture support for UIKit (#224)
- fix issue with resetting accent color in SwiftUI app (#238)
- fix $feature_flag_called not captured after reloading flags (#232)
- recording: fix RN iOS masking (#230)
- add option to pass a custom timestamp when calling capture() (#228)
- fix crash when loading dynamic colors from storyboards (#229)
- fix race condition in PostHogFileBackedQueue.deleteFiles (#218)
- add missing capture method for objC with groups overload (#217)
- add optional distinctId parameter to capture methods (#216)
- recording: session replay respect feature flag variants (#209)
- add
postHogMaskview modifier to manually mask a SwiftUI view (#202)
- add appGroupIdentifier in posthog config (#207)
- recording: capture network logs from dataTask requests without CompletionHandler (#203)
- no user facing changes
- no user facing changes
- no user facing changes
- fix: some public APIs such as unregister weren't checking for isEnabled (#196)
- recording: missing import for url session extensions (#194)
- recording: network logs not counting the request transferSize but only the response transferSize (#193)
- chore: add Is Emulator support (#190)
- recording: PostHog URLSession extensions for capturing network logs (#189)
- chore: add personProfiles support (#187)
- recording: mask swiftui picker if masking enabled (#184)
- chore: add is identified property (#186)
- recording: create timers in the main thread since it requires a run loop (#188)
- recording: detect swiftui images not too agressively (#181)
- chore: add SwiftUI View extensions to capture screen view and views in general (postHogViewEvent, postHogScreenView) (#180)
- recording: send meta event again if session rotates (#183)
- recording: use non deprecated methods for getCurrentWindow if available (#178)
- chore: cache flags, distinct id and anon id in memory to avoid file IO every time (#177)
- fix: do not clear events when reset is called (#175)
- fix: reload feature flags as anon user after reset is called (#175)
- fix: rotate session id when reset is called (#174)
- chore: expose session id (#165), (#170) and (#171)
- recording: improve ios session recording performance by avoiding redrawing after screen updates (#166)
debouncerDelayis changed from 500ms to 1s since the iOS screenshot has to be taken in the main thread and its more sensitive to performance issues
- recording: improve ios session recording performance by doing some work off of the main thread (#158)
- chore: Support the
propertiesSanitizerconfig (#154)
- recording: fix respect session replay project settings from app start (#150)
- recording: fix MTLTextureDescriptor has width of zero issue (#149)
- recording: improvements to screenshot masking (#147)
- recording: screenshot masking (#146)
- chore: migrate UUID from v4 to v7 (#145)
- recording: fix
screenshotModetypo (#143)
- chore: change host to new address (#139)
- fix: rename groupProperties to groups for capture methods (#140)
- recording: add
screenshotModeoption for session replay instead of wireframe (#142)
- allow anonymous id generation to be configurable (#133)
- fix: PrivacyInfo warning when using Cocoapods (#138)
- chore: apply patches from 3.2.5 to 3.3.0 and session recording fixes #135
- iOS session recording is still experimental
- fix:
resetdeletes only sdk files instead of the whole folder #132
- chore: silence
sharedwarning for strict concurrency #129
- iOS session recording - very first alpha release #115
maxQueueSizewasn't respected when capturing events #116
optOutwasn't respected in capture methods #114
- API requests do a 10s timeoutInterval instead of 60s #113
- PrivacyInfo manifest set in the SPM and CocoaPods config #112
- read
$app_namefromCFBundleDisplayNameas a fallback ifCFBundleNameisn't available #108 - add PrivacyInfo manifest #110
- fix reset session when reset or close are called #107
- fix ISO8601 formatter to always use the 24h format #106
- fix and improve logging if the
debugflag is enabled #104
Application Openedrespects thecaptureApplicationLifecycleEventsconfig. #102
- Add session tracking #100
Check out the updated docs.
Check out the USAGE guide.
- Rewritten in Swift.
- Breaking changes in the API.
- better macOS support with more event properties #96
- Do not report dupe
Application Openedevent during the first time #95
- Internal changes only
- Promoted to beta since no issues were found in the alpha release
- Just testing the release automation
- Just testing the release automation
- Add more targets and change default branch to main #75
- Just testing the release automation
- First alpha of the new major version of the iOS SDK
- Just testing the release automation
- CoreTelephony should not be added to tvOS builds #67
- Remote notifications methods do not throw if no default implementation #67
- Fixes an issue that interfered with a SwiftUI bug
- Remove adclient
- Accept
optionsparameter on feature flag methods to enable/disable emitting usage events
- Add support for groups, simplefeature flags, and multivariate feature flags
Make enabled property public.
Add shouldSendDeviceID config option.
Fix Info.plist warning for Swift Package Manager
Fix warning with Swift Package Manager
Fix support for Swift Package Manager
In the identify call the distinct_id field can no longer be nil.
Renamed functions which were causing conflicts with Segment iOS library
Swift Package Manager
Also remove the enableAdvertisingCapturing and adSupportBlock config options
Completely remove reference to the AdSupport framework
Shift responsibility of IDFA collection to clients (#5) by removing any references to Apple's AdSupport framework from the library. In case you need to use the $device_advertisingId field, see here for how to enable it.
Add Swift Package Manager support
Fix selector typo with ad capturing, which resulted in a crash when moving your app to the foreground.
Support passing in custom library version and name. This is used in the React Native client.
Fix issues with launching the library and screen tracking.
First Release.