Repository navigation
chore!: raise minimum macOS to 11, tvOS to 15 and watchOS to 10 - #906
Merged
turnipdabeets merged 2 commits intoOct 6, 2026
Merged
turnipdabeets merged 2 commits into
turnipdabeets merged 2 commits into
Conversation
Contributor
|
[High risk] Raises minimum deployment targets across Apple platforms. The PR appears safe to merge based on the changes since the previous review. Reviews (2) · Last reviewed commit: "chore!: raise minimum watchOS to 10" |
Contributor
posthog-ios Compliance ReportDate: 2026-10-05 23:10:23 UTC
|
| Test | Status | Duration |
|---|---|---|
| Format Validation.Event Has Required Fields | ✅ | 2957ms |
| Format Validation.Event Has Uuid | ✅ | 2855ms |
| Format Validation.Event Has Lib Properties | ✅ | 2778ms |
| Format Validation.Distinct Id Is String | ✅ | 2981ms |
| Format Validation.Token Is Present | ✅ | 2862ms |
| Format Validation.Custom Properties Preserved | ✅ | 2816ms |
| Format Validation.Event Has Timestamp | ✅ | 2724ms |
| Retry Behavior.Retries On 503 | ✅ | 5518ms |
| Retry Behavior.Does Not Retry On 400 | ✅ | 2352ms |
| Retry Behavior.Does Not Retry On 401 | ✅ | 2441ms |
| Retry Behavior.Respects Retry After Header | ✅ | 5408ms |
| Retry Behavior.Implements Backoff | ✅ | 21179ms |
| Retry Behavior.Retries On 500 | ✅ | 5502ms |
| Retry Behavior.Retries On 502 | ✅ | 9277ms |
| Retry Behavior.Retries On 504 | ✅ | 9413ms |
| Retry Behavior.Max Retries Respected | ❌ | 15439ms |
| Deduplication.Generates Unique Uuids | ✅ | 2919ms |
| Deduplication.Preserves Uuid On Retry | ✅ | 9294ms |
| Deduplication.Preserves Uuid And Timestamp On Retry | ✅ | 16368ms |
| Deduplication.Preserves Uuid And Timestamp On Batch Retry | ✅ | 8338ms |
| Deduplication.No Duplicate Events In Batch | ✅ | 2957ms |
| Deduplication.Different Events Have Different Uuids | ✅ | 2719ms |
| Compression.Sends Gzip When Enabled | ✅ | 415ms |
| Batch Format.Uses Proper Batch Structure | ✅ | 421ms |
| Batch Format.Flush With No Events Sends Nothing | ✅ | 305ms |
| Batch Format.Multiple Events Batched Together | ✅ | 3065ms |
| Error Handling.Does Not Retry On 403 | ✅ | 4668ms |
| Error Handling.Does Not Retry On 413 | ✅ | 2418ms |
| Error Handling.Retries On 408 | ✅ | 8808ms |
Failures
retry_behavior.max_retries_respected
Expected 4 requests, got 5
Feature_Flags Tests
✅ 16/16 tests passed
View Details
| Test | Status | Duration |
|---|---|---|
| Request Payload.Request With Person Properties Device Id | ✅ | 2732ms |
| Request Payload.Flags Request Uses V2 Query Param | ✅ | 2802ms |
| Request Payload.Flags Request Hits Flags Path Not Decide | ✅ | 2760ms |
| Request Payload.Flags Request Omits Authorization Header | ✅ | 2683ms |
| Request Payload.Token In Flags Body Matches Init | ✅ | 2793ms |
| Request Payload.Groups Round Trip | ✅ | 2770ms |
| Request Payload.Groups Default To Empty Object | ✅ | 2817ms |
| Request Payload.Person Properties Distinct Id Auto Populated When Caller Omits It | ✅ | 2905ms |
| Request Payload.Disable Geoip False Propagates As Geoip Disable False | ✅ | 2872ms |
| Request Payload.Disable Geoip Omitted Defaults To False | ✅ | 2878ms |
| Request Payload.Flag Keys To Evaluate Contains Only Requested Key | ✅ | 2739ms |
| Request Lifecycle.No Flags Request On Init Alone | ✅ | 95ms |
| Request Lifecycle.No Flags Request On Normal Capture | ✅ | 2705ms |
| Request Lifecycle.Two Flag Calls Produce Two Remote Requests | ✅ | 5395ms |
| Request Lifecycle.Mock Response Value Is Returned To Caller | ✅ | 2771ms |
| Side Effect Events.Get Feature Flag Captures Feature Flag Called Event | ✅ | 2966ms |
turnipdabeets
added a commit
to PostHog/posthog-js
that referenced
this pull request
Oct 5, 2026
posthog-ios 4.0 raises its macOS minimum to 11 (PostHog/posthog-ios#906). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
4 of 23 tasks
turnipdabeets
added a commit
to PostHog/posthog-flutter
that referenced
this pull request
Oct 5, 2026
posthog-ios 4.0 raises its macOS minimum to 11 (PostHog/posthog-ios#906). Also drops the macOS 11 / iOS 14 availability check that is now always true. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
5 tasks done
turnipdabeets
marked this pull request as ready for review
October 5, 2026 20:39
turnipdabeets
force-pushed
the
chore/v4-swift-tools-6
branch
from
October 5, 2026 22:48
3c380b4 to
4352748
Compare
Base automatically changed from
chore/v4-swift-tools-6
to
chore/v4-remove-deprecated
October 5, 2026 22:54
Xcode 26, which the package now requires, supports deployment targets down to macOS 11, tvOS 15 and watchOS 8, so the old 10.15 / 13 / 6 floors could no longer be built or tested. Raise them in Package.swift, the podspec, PostHog.xcodeproj and the downgrade smoke package, and remove the availability checks and fallbacks the new floors make dead. iOS 15, Mac Catalyst and visionOS 1 are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
No posthog-ios events came from watchOS 9 or earlier in the last 30 days on US or EU Cloud, and watchOS 10 supports the same hardware as watchOS 9 (Apple Watch Series 4 and later). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
turnipdabeets
force-pushed
the
chore/v4-raise-apple-platform-minimums
branch
from
October 5, 2026 22:55
d317efd to
9ef5f47
Compare
This was referenced Oct 6, 2026
dustinbyrne
approved these changes
Oct 6, 2026
turnipdabeets
added a commit
that referenced
this pull request
Oct 7, 2026
* chore!: raise minimum macOS to 11, tvOS to 15 and watchOS to 8 Xcode 26, which the package now requires, supports deployment targets down to macOS 11, tvOS 15 and watchOS 8, so the old 10.15 / 13 / 6 floors could no longer be built or tested. Raise them in Package.swift, the podspec, PostHog.xcodeproj and the downgrade smoke package, and remove the availability checks and fallbacks the new floors make dead. iOS 15, Mac Catalyst and visionOS 1 are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore!: raise minimum watchOS to 10 No posthog-ios events came from watchOS 9 or earlier in the last 30 days on US or EU Cloud, and watchOS 10 supports the same hardware as watchOS 9 (Apple Watch Series 4 and later). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
turnipdabeets
added a commit
that referenced
this pull request
Oct 9, 2026
* chore!: raise minimum macOS to 11, tvOS to 15 and watchOS to 8 Xcode 26, which the package now requires, supports deployment targets down to macOS 11, tvOS 15 and watchOS 8, so the old 10.15 / 13 / 6 floors could no longer be built or tested. Raise them in Package.swift, the podspec, PostHog.xcodeproj and the downgrade smoke package, and remove the availability checks and fallbacks the new floors make dead. iOS 15, Mac Catalyst and visionOS 1 are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore!: raise minimum watchOS to 10 No posthog-ios events came from watchOS 9 or earlier in the last 30 days on US or EU Cloud, and watchOS 10 supports the same hardware as watchOS 9 (Apple Watch Series 4 and later). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- 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 #898 (Xcode 26) and #876 (iOS 15).
Raises the minimum deployment targets to macOS 11, tvOS 15, watchOS 10. iOS stays 15, visionOS stays 1.0, Mac Catalyst follows iOS (15).
Why: #898 makes Xcode 26 the minimum toolchain, and Xcode 26 supports deployment targets of "iOS 15–26 · tvOS 15–26 · watchOS 8-26 · visionOS 1–26 · macOS 11-26" (Apple). Our current macOS 10.15 / tvOS 13 / watchOS 6 floors are below what the required toolchain supports, so they're support claims we can't build or test. Xcode 26.4.1 still compiles a package declaring them without a warning, and Xcode 27 silently clamps macOS to 12.
What peers do (default-branch
Package.swift, 2026-10-05)macOS and tvOS match Firebase and the Xcode 26 floor. watchOS goes to 10, past the Xcode 26 floor of 8, because no
posthog-iosevents came from watchOS 9 or earlier (see below), and watchOS 10 runs on the same hardware as watchOS 9 (Apple Watch Series 4 and later). macOS stays at 11 rather than Xcode 27's 12 because macOS 11 still sends events, and 4.0 doesn't require Xcode 27. tvOS stays at 15 for the same reason: tvOS 15 and 16 still send events.Who this affects
tvOS: no hardware is dropped. tvOS 26 still runs on the Apple TV HD (2015), the oldest device that runs tvOS 13.
Customer data (last 30 days, US and EU Cloud, events with
$lib = 'posthog-ios'):The oldest versions still sending events are macOS 11 (under 0.01% of macOS events), tvOS 15 and watchOS 10, all of which this PR keeps supporting.
Wrapper SDKs
Nothing downstream depends on our tvOS or watchOS floors. The macOS floor reaches the wrappers that support macOS, which would need macOS 11 when they adopt 4.0:
osx 10.15; PostHog/posthog-js#5194 (plugin 3.0) raises it to 11macosArm64)What changed
Package.swift,PostHog.podspec,PostHog.xcodeproj(SDK, test and example targets), the downgrade-compatibility smoke package,AGENTS.md.elsebranches. Examples: the watchOS 7WKApplicationnotification checks, the macOS 11 push-open checks,isiOSAppOnMac. The macOS 13 / tvOS 16 checks stay. The$localecheck still names watchOS 9, which is now always true, but it shares the check with iOS 16.v4-raise-apple-platform-minimums.md(major). The "macOS/tvOS/watchOS minimums are unchanged" line in chore!: raise minimum iOS deployment target to 15 #876's changeset is removed so the 4.0 changelog doesn't contradict itself.Public API change: no symbols change; the API snapshot has no diff.
💚 How did you test it?
swift build --build-tests: no warnings inPostHog/.swift test(macOS): XCTest 169 tests, 0 failures. Swift Testing 961 tests with 13 issues, all thePostHogStorageTestgroup-container cases that fail the same way on the base commit on this machine.make apiCheck: snapshot up to date.xcodebuild buildfor iOS, macOS, Mac Catalyst, tvOS, watchOS and visionOS: all succeed. Every warning is invendor/PHPLCrashReporter, matching a base build.make lint: no new warnings.📝 Checklist
If releasing new changes
pnpm changesetto generate a changeset fileThe changeset is
majorand was written by hand.🤖 Agent context
Autonomy: Human-driven (agent-assisted)
🤖 Generated with Claude Code