Repository navigation
chore!: raise minimum iOS deployment target to 15 - #876
Merged
Merged
Conversation
Contributor
posthog-ios Compliance ReportDate: 2026-10-05 17:01:01 UTC
|
| Test | Status | Duration |
|---|---|---|
| Format Validation.Event Has Required Fields | ✅ | 6782ms |
| Format Validation.Event Has Uuid | ✅ | 3300ms |
| Format Validation.Event Has Lib Properties | ✅ | 2897ms |
| Format Validation.Distinct Id Is String | ✅ | 2809ms |
| Format Validation.Token Is Present | ✅ | 2892ms |
| Format Validation.Custom Properties Preserved | ✅ | 2838ms |
| Format Validation.Event Has Timestamp | ✅ | 3300ms |
| Retry Behavior.Retries On 503 | ✅ | 11714ms |
| Retry Behavior.Does Not Retry On 400 | ✅ | 4854ms |
| Retry Behavior.Does Not Retry On 401 | ✅ | 4801ms |
| Retry Behavior.Respects Retry After Header | ✅ | 7728ms |
| Retry Behavior.Implements Backoff | ✅ | 21324ms |
| Retry Behavior.Retries On 500 | ✅ | 9309ms |
| Retry Behavior.Retries On 502 | ✅ | 9311ms |
| Retry Behavior.Retries On 504 | ✅ | 9295ms |
| Retry Behavior.Max Retries Respected | ❌ | 21778ms |
| Deduplication.Generates Unique Uuids | ✅ | 3009ms |
| Deduplication.Preserves Uuid On Retry | ✅ | 9342ms |
| Deduplication.Preserves Uuid And Timestamp On Retry | ✅ | 16684ms |
| Deduplication.Preserves Uuid And Timestamp On Batch Retry | ✅ | 7958ms |
| Deduplication.No Duplicate Events In Batch | ✅ | 3163ms |
| Deduplication.Different Events Have Different Uuids | ✅ | 3072ms |
| Compression.Sends Gzip When Enabled | ✅ | 2784ms |
| Batch Format.Uses Proper Batch Structure | ✅ | 2866ms |
| Batch Format.Flush With No Events Sends Nothing | ✅ | 365ms |
| Batch Format.Multiple Events Batched Together | ✅ | 2995ms |
| Error Handling.Does Not Retry On 403 | ✅ | 4854ms |
| Error Handling.Does Not Retry On 413 | ✅ | 5005ms |
| Error Handling.Retries On 408 | ✅ | 9350ms |
Failures
retry_behavior.max_retries_respected
Expected 4 requests, got 6
Feature_Flags Tests
✅ 16/16 tests passed
View Details
| Test | Status | Duration |
|---|---|---|
| Request Payload.Request With Person Properties Device Id | ✅ | 2945ms |
| Request Payload.Flags Request Uses V2 Query Param | ✅ | 3188ms |
| Request Payload.Flags Request Hits Flags Path Not Decide | ✅ | 2901ms |
| Request Payload.Flags Request Omits Authorization Header | ✅ | 2856ms |
| Request Payload.Token In Flags Body Matches Init | ✅ | 2922ms |
| Request Payload.Groups Round Trip | ✅ | 2887ms |
| Request Payload.Groups Default To Empty Object | ✅ | 2893ms |
| Request Payload.Person Properties Distinct Id Auto Populated When Caller Omits It | ✅ | 2903ms |
| Request Payload.Disable Geoip False Propagates As Geoip Disable False | ✅ | 2774ms |
| Request Payload.Disable Geoip Omitted Defaults To False | ✅ | 2875ms |
| Request Payload.Flag Keys To Evaluate Contains Only Requested Key | ✅ | 2965ms |
| Request Lifecycle.No Flags Request On Init Alone | ✅ | 81ms |
| Request Lifecycle.No Flags Request On Normal Capture | ✅ | 2700ms |
| Request Lifecycle.Two Flag Calls Produce Two Remote Requests | ✅ | 5381ms |
| Request Lifecycle.Mock Response Value Is Returned To Caller | ✅ | 2870ms |
| Side Effect Events.Get Feature Flag Captures Feature Flag Called Event | ✅ | 3127ms |
This was referenced Oct 1, 2026
turnipdabeets
force-pushed
the
chore/v4-remove-deprecated
branch
from
October 5, 2026 16:16
6db44c0 to
9393686
Compare
turnipdabeets
force-pushed
the
chore/v4-min-ios-15
branch
from
October 5, 2026 16:16
7e612e3 to
4f7895b
Compare
Raise the iOS floor from 13 to 15 (Mac Catalyst follows) and remove the availability checks and fallbacks that only protected iOS 13/14. macOS, tvOS, watchOS and visionOS minimums are unchanged, so checks that also gate those platforms keep their non-iOS clauses. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
turnipdabeets
force-pushed
the
chore/v4-min-ios-15
branch
from
October 5, 2026 16:42
4f7895b to
8de3767
Compare
turnipdabeets
marked this pull request as ready for review
October 5, 2026 17:02
Contributor
|
[High risk] Raises minimum iOS version requirement from 13 to 15. The PR appears safe to merge; no actionable regression was identified. Reviews (1) · Last reviewed commit: "chore!: raise minimum iOS deployment tar..." |
3 of 5 tasks
dustinbyrne
approved these changes
Oct 5, 2026
turnipdabeets
merged commit Oct 5, 2026
bbb48c2
into
chore/v4-remove-deprecated
54 of 55 checks passed
turnipdabeets
added a commit
that referenced
this pull request
Oct 7, 2026
Raise the iOS floor from 13 to 15 (Mac Catalyst follows) and remove the availability checks and fallbacks that only protected iOS 13/14. macOS, tvOS, watchOS and visionOS minimums are unchanged, so checks that also gate those platforms keep their non-iOS clauses. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
turnipdabeets
added a commit
that referenced
this pull request
Oct 9, 2026
Raise the iOS floor from 13 to 15 (Mac Catalyst follows) and remove the availability checks and fallbacks that only protected iOS 13/14. macOS, tvOS, watchOS and visionOS minimums are unchanged, so checks that also gate those platforms keep their non-iOS clauses. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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
Part of the 4.0 stack, on top of #873. It raises the minimum iOS deployment target from 13.0 to 15.0 and removes the availability checks and fallbacks that the new floor makes dead. Mac Catalyst follows iOS.
The macOS (10.15), tvOS (13.0), watchOS (6.0) and visionOS (1.0) minimums are unchanged.
Wrapper SDKs
Wrappers can't adopt posthog-ios 4.0 until their own iOS minimum is at least 15. Raising it is a breaking change for each wrapper, so each one does it in its own major.
Package.swiftand example go to 15.0, plus Xcode 26..iOS(.v15)inios/Package.swiftWhat changed
Package.swift,Package@swift-5.9.swift,PostHog.podspec,PostHog.xcodeproj,PostHogExampleAutocapture.xcodeproj, and the-targetinscripts/check-public-api.sh.@available(iOS 13–15, *)annotations removed#availableconditions removed, with their deadelsebranchessetSurveys/setSurveysConfigguards inPostHogConfig; the setters now assign directly.taskResumein the network swizzler.UIToolbarfallback to.primaryActionTriggeredin autocapture.UISwitch.titleguards in replay.UIViewController.swiftsplit-view style and its traversal test) are narrowed totvOS 14.0. The survey-translation tests now use the publicsurveysConfiginstead of the backing property.iOS 15checks in thePostHogExampleAutocaptureapp, which are now always true. They're harmless, and that app mirrors Apple's UIKit catalog sample.Public API change: nothing is removed or renamed, and the API snapshot has no diff because it does not record availability. The 7
URLSession.postHog*async methods,surveys,surveysConfig, the two push-open methods andcaptureDeepLink(openURLContexts:)lose their iOS availability annotations.Docs to update on posthog.com
contents/docs/session-replay/_snippets/ios-installation.mdx#availablesample:contents/docs/surveys/_snippets/ios-surveys-installation.mdx,contents/docs/surveys/installation/ios.mdxcontents/docs/workflows/push-notifications/ios.mdx,contents/docs/workflows/push-notifications/react-native.mdx💚 How did you test it?
After rebasing onto #873 (no conflicts):
make test(macOS): 909 tests pass.make apiCheck: snapshot up to date.does not capture event if opt out(PostHogSDKTest.swift:581, expected 0 events, got 1). This PR doesn't touch that test, andPostHogSDKTestthen passed 3 of 3 reruns, so it looks timing-dependent.Before the rebase, on top of #874:
make test(macOS): 909 tests pass.make apiCheck: snapshot up to date.make buildSdk: all seven builds succeed (iOS, SwiftPM macOS, macOS, Mac Catalyst, tvOS, watchOS, visionOS).pod lib lint, and the macOS, tvOS, watchOS and visionOS example apps.📝 Checklist
If releasing new changes
pnpm changesetto generate a changeset fileThe changeset is
majorand was written by hand in the changeset format.🤖 Agent context
Autonomy: Human-driven (agent-assisted)
_surveys/_surveysConfigbacking properties stay, becausePostHogSurveyIntegrationcompiles on macOS underTESTING, where the public properties are unavailable.🤖 Generated with Claude Code