Skip to content

ci(react-native-plugin): build CocoaPods lanes on Xcode 26 - #5226

Merged
turnipdabeets merged 3 commits into
chore/rn-plugin-v3from
chore/rn-plugin-posthog-ios-v4
Oct 7, 2026
Merged

turnipdabeets merged 3 commits into
chore/rn-plugin-v3from
chore/rn-plugin-posthog-ios-v4

Conversation

@turnipdabeets

@turnipdabeets turnipdabeets commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The plugin's iOS and macOS CocoaPods CI lanes still run on macos-14-xlarge with Xcode 16.2. Apps can't ship with that: App Store uploads need Xcode 26 since April 2026, and posthog-ios 4.0 (#5237) requires it too. Moving the lanes now tests the toolchain users actually build with, and they're ready when the 4.0 pin lands.

The posthog-ios 4.0 pin and the Surveys trait change moved to #5237, which waits for posthog-ios 4.0 to be released.

Changes

  • The iOS and macOS CocoaPods lanes run on macos-26.
  • Both lanes check that Xcode is 26 or newer before building.
  • No package changes, so no changeset.

Release info Sub-libraries affected

Libraries affected

  • All of them
  • posthog-js (web)
  • posthog-js-lite (web lite)
  • posthog-node
  • posthog-react-native
  • @posthog/react-native-plugin
  • @posthog/react
  • @posthog/ai
  • @posthog/convex
  • @posthog/next
  • @posthog/nextjs-config
  • @posthog/nuxt
  • @posthog/openfeature-node-provider
  • @posthog/openfeature-web-provider
  • @posthog/rollup-plugin
  • @posthog/webpack-plugin
  • @posthog/types
  • @posthog/browser-common

Checklist

  • Tests for new code (CI-only change)
  • Accounted for the impact of any changes across different platforms
  • Accounted for backwards compatibility of any changes (no breaking changes!)
  • Took care not to unnecessarily increase the bundle size

If releasing new changes

  • Ran pnpm changeset to generate a changeset file (not needed: CI only)

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Made with Claude Code. This PR first also bumped the pin to posthog-ios 4.0. Since 4.0 isn't released, those builds could only fail, so that part moved to #5237 and this PR keeps the CI change that can pass and merge now. The RN 0.79.6 example already builds via CocoaPods on Xcode 26.4.1 locally.

🤖 Generated with Claude Code

…s Surveys trait

The plugin disables native surveys (React Native surveys are rendered in JS),
so its Swift package depends on posthog-ios with only the SessionReplay and
CrashReporting traits. The manifest moves to tools 6.2, which posthog-ios 4.0
requires anyway and which package traits need.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@turnipdabeets turnipdabeets self-assigned this Oct 7, 2026
@turnipdabeets
turnipdabeets marked this pull request as ready for review October 7, 2026 14:11
@turnipdabeets
turnipdabeets requested a review from a team as a code owner October 7, 2026 14:11

@dustinbyrne dustinbyrne left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good—the trait selection preserves native replay and crash reporting while leaving surveys to JS. One non-blocking CocoaPods CI toolchain coverage note below. The posthog-ios 4.0 publication prerequisite is already documented.

AI-assisted review.

# Used by both the SPM and CocoaPods resolution paths below; bump this
# line when picking up a new posthog-ios release.
posthog_ios_version = '3.88.2'
posthog_ios_version = '4.0.0'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Align CocoaPods CI with the newly announced toolchain

This dependency bump introduces an announced Xcode 26 requirement, but the iOS and macOS CocoaPods CI lanes still select Xcode 16.2.0.

The new changeset and proposed upstream requirement specify Xcode 26+. However, the unchanged native workflow uses macos-14-xlarge with latest-stable for both CocoaPods lanes. Existing head-associated iOS and macOS logs explicitly report:

Xcode is set to 16.2.0 (16C5032a)

These lanes covered the old dependency, but publication of v4 alone will not make them cover the newly announced CocoaPods toolchain. This affects assurance for ordinary iOS/macOS CocoaPods consumers of @posthog/react-native-plugin.

Impact limit: This is a supported-toolchain coverage mismatch, not a demonstrated consumer compilation failure. CocoaPods does not enforce the SwiftPM tools-version requirement, and the current jobs fail earlier because v4 is unpublished.

Consider moving both CocoaPods lanes to runners providing Xcode 26+ and explicitly selecting/verifying that toolchain.

Verification sketch — not executed: Add a selected-toolchain assertion before the existing CocoaPods build steps:

version="$(xcodebuild -version | awk '/^Xcode / {print $2}')"
test "${version%%.*}" -ge 26

The current logged selection implies failure with 16.2; a supported selection should pass. After v4 publication, retain normal dependency resolution and iOS/macOS compilation/linkage without local overrides. An application regression test is not appropriate for this CI configuration finding.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in f7d7dfa — both CocoaPods lanes now run on macos-26 with an xcodebuild -version assertion (≥ 26) before the build. The RN 0.79.6 example already builds via CocoaPods on Xcode 26.4.1 locally, so the runner move shouldn't break the build itself; the lanes still fail at pod install until posthog-ios 4.0 is published.

posthog-ios 4.0 isn't released yet; this PR keeps only the Xcode 26 CI lanes.
@turnipdabeets turnipdabeets changed the title chore(react-native-plugin)!: require posthog-ios 4.0 and leave out its Surveys trait ci(react-native-plugin): build CocoaPods lanes on Xcode 26 Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

📝 No Changeset Found

This PR doesn't include a changeset. A changeset is required to release a new version.

How to add a changeset

Run this command and follow the prompts:

pnpm changeset

Remember: Never use major version bumps for posthog-js as it's autoloaded by clients.

@turnipdabeets
turnipdabeets merged commit ebb6182 into chore/rn-plugin-v3 Oct 7, 2026
67 of 68 checks passed
@turnipdabeets
turnipdabeets deleted the chore/rn-plugin-posthog-ios-v4 branch October 7, 2026 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants