Repository navigation
docs: show how to keep identity calls under a registered personless setting - #1053
Merged
eli-r-ph merged 2 commits intoNov 11, 2026
Merged
Conversation
…etting Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR overviewNo security issues were found in this pull request. Reviews
|
turnipdabeets
approved these changes
Nov 10, 2026
Contributor
There was a problem hiding this comment.
We pushed a couple of additions in d46fcbe: a pointer to .identifiedOnly (the default) for apps that registered false to skip person profiles for anonymous users, and a line that events sent with false after identify are still linked to the person and billed as identified. Feel free to tweak or revert. Approving, thanks for picking these up!
turnipdabeets
added a commit
to PostHog/sdk-specs
that referenced
this pull request
Nov 10, 2026
…on guide shows the identity call option #146 at 15501ca requires migration guides to show a per-call process_person_profile: true on identity calls; MIGRATION.md at e27cbe4cb lacks it until PostHog/posthog-ios#1053 merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
turnipdabeets
added a commit
to PostHog/sdk-specs
that referenced
this pull request
Nov 11, 2026
The identity-call migration-guide example #146 requires lands in 4.0 with PostHog/posthog-ios#1053, which targets the release branch. This audit tracks 4.0, so a pending release-branch PR is noted rather than scored as a gap. Reverts 85d4acd. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
turnipdabeets
added a commit
to PostHog/sdk-specs
that referenced
this pull request
Nov 11, 2026
* chore(compliance): audit posthog-ios 4.0 Re-audit all 64 posthog-ios rows at 3460e534a (4.0 release branch) against sdk-specs dd11a6b, add the five rows added to the README table since the last audit, and update the iOS roll-up and gap entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(compliance): score posthog-ios HTTP Client partial compression = .none leaves captureAi requests gzipped through the separate captureAiCompression setting, so iOS 4.0 has no whole-client compression opt-out. Roll-up becomes 40/17/1/11 (58%), 18 gaps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): list iOS capture v1 retries as matching #146 Draft #146 already permits the client-SDK durable queue, unlimited attempts, 1-30 s backoff and multi-event 413 halving for iOS 4.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(compliance): score posthog-ios Session Replay Privacy partial SwiftUI's postHogMask() wins over an enclosing postHogNoMask(), the reverse of the spec's unmask-over-mask precedence. It over-masks rather than leaks. Roll-up becomes 39/18/1/11 (57%), 19 gaps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): re-check posthog-ios 4.0 at 1f91c5b2 against main and #146 Re-checks the iOS audit at 1f91c5b2 and sdk-specs 8306698. #1036 keeps $lib/$lib_version, which now matches #146. Opt In meets the #138 replay restart requirements. Surveys gains a #102 gap: setSurveySeen moves the last-seen date on submit and dismiss. HTTP Client goes back to ✅: its compression gap comes from conflicting http-client and capture-ai rules in #146, raised on that PR. Tally 40/17/1/11. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): score posthog-ios 4.0 capture v1 rows against #146 as merged Scores Capture, Capture AI, Before Send Hook, Event Batcher, HTTP Client and Retry Queue against #146 at 5c26b9b, treated as merged. The capture v1 wire, transport and retry policy conform. Capture AI applies to iOS 4.0 and is 🟡 for the same NSNull serialization gap as Capture; starting the AI queue at setup is what #146 asks of client SDKs. Tally 40/18/1/10. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): treat the #146 $lib precedence conflict as resolved for clients Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): re-check posthog-ios 4.0 at e27cbe4cb against main 752f899 and #146 d387ab7 Capture, Capture Exception and Capture AI move to Pass now that null-valued properties are omitted (posthog-ios#1047) and the SDK fills its own $lib pair after the caller's properties (posthog-ios#1050). On Feature Flags moves to Pass: loads in flight across reset() are dropped (posthog-ios#1048) and empty variants are left out of listener flags. HTTP Client is scored Pass on its merits, since #146 now leaves a lane with its own compression setting out of the whole-client opt-out. Surveys stays Partial only for the popup-delay eligibility re-check (SHOULD); posthog-ios#1049 fixed the rest. Opt In meets the new deferred-crash consent requirement (#199); the empty variant (#193), variant key rename (#203) and job-retry (#205) changes need no other status change. Line references move to e27cbe4cb. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): score posthog-ios Surveys as pass The popup-delay and wait-period SHALLs are met since posthog-ios#1049. The one unmet requirement is a SHOULD (re-check eligibility when the delay elapses), which is recorded but not scored. Totals become 45/13/1/10. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): score iOS Exception Steps partial on NSNull normalization Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): score posthog-ios Capture partial until the migration guide shows the identity call option #146 at 15501ca requires migration guides to show a per-call process_person_profile: true on identity calls; MIGRATION.md at e27cbe4cb lacks it until PostHog/posthog-ios#1053 merges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): note the README's 69 contracts and the iOS row's 69-row basis Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): keep posthog-ios Capture passing while tracking 4.0 The identity-call migration-guide example #146 requires lands in 4.0 with PostHog/posthog-ios#1053, which targets the release branch. This audit tracks 4.0, so a pending release-branch PR is noted rather than scored as a gap. Reverts 85d4acd. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(compliance): make the 69-contract README note SDK-neutral The same paragraph lands from both the iOS and Android 4.0 audits, so it merges cleanly in either order and stays true after both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
6 of 18 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💡 Motivation and Context
In 4.0, a registered
$process_person_profile: falsetakes effect, and it also reaches the eventsidentify,alias,groupandsetPersonPropertiessend. PostHog drops those identity events. The migration guide didn't say this changed from 3.x, or show the per-call option that keeps them.falsehad no effect in 3.x and applies in 4.0, also afteridentifyand withpersonProfilesset to.always.process_person_profile: trueon the call or inbeforeSend, with an example, and point topersonProfiles = .neverfor no person profiles at all.$process_person_profileasfalseand still call identity methods.💚 How did you test it?
Docs-only. Rendered the changed list item with GitHub's markdown API (the code block stays inside the bullet), checked the
#event-optionslink resolves, rangit diff --check, and checked the example against theidentify(_:userProperties:userPropertiesSetOnce:options:)signature.📝 Checklist
If releasing new changes
pnpm changesetto generate a changeset fileNo changeset: this only changes
MIGRATION.md, which isn't released.🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Written with Claude Code (Claude Opus 5.5). The guide text was drafted and approved before it was applied as written.
🤖 Generated with Claude Code