Skip to content

Download the Intercom iOS SDK from its GitHub release instead of CocoaPods - #475

Merged
niamh-coleman merged 5 commits into
mainfrom
niamh/ios-sdk-from-github-release
Nov 10, 2026
Merged

niamh-coleman merged 5 commits into
mainfrom
niamh/ios-sdk-from-github-release

Conversation

@niamh-coleman

@niamh-coleman niamh-coleman commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Why?

The Intercom iOS SDK is no longer published to the CocoaPods trunk, so the Intercom pod dependency can't pick up new SDK versions (19.10.0 isn't there). The daily dependency update workflow has failed since that release.

How?

During pod install the podspec now downloads the pinned SDK release from GitHub, checks its SHA-256, caches it and links it as a vendored framework. The update workflow bumps the pinned version and checksum after checking them against the release, and only treats PRs titled as SDK bumps as its own.

Notes for reviewers

The iOS version is now an exact pin rather than ~>, and apps that added pod 'Intercom' themselves need to remove it (README updated). The version stays at 19.9.2 here; the update workflow should open the 19.10.0 bump once this lands.

tested: pod install (fresh and cached) and a simulator build and launch of the with-notifications example, with Intercom.framework embedded and loaded.

Generated with Claude Code

The Intercom pod is no longer published to the CocoaPods trunk, so the
podspec now downloads Intercom.xcframework for a pinned version from the
intercom-ios GitHub release, verifies its SHA-256 and vendors it. The
dependency update workflow bumps the pinned version and checksum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@niamh-coleman
niamh-coleman marked this pull request as ready for review November 9, 2026 16:24

@DD-Intercom DD-Intercom 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.

Approach is right: a podspec can't redirect a dependency to a non-trunk source, so downloading in the podspec is the option that doesn't push work onto every consumer. Versioned extract path, .gitignore entry, cache override and exact pin all look good, and the workflow keeps version and checksum moving together.

Main concern: no CI job runs pod install, so nothing here exercises the download/checksum/extract path. Plus two workflow robustness items. All inline.

With no line to attach to: the examples' Podfile.locks no longer record the Intercom SDK version, so pod install is no longer a place SDK drift would surface. Expected, just noting it.

~ Automated via Claude

Comment thread intercom-react-native.podspec Resolved
Comment thread intercom-react-native.podspec Resolved
Comment thread ios/intercom_ios_sdk.rb Resolved
Comment thread ios/intercom_ios_sdk.rb Resolved
niamh-coleman and others added 3 commits November 9, 2026 17:16
A CircleCI job now installs the example app's pods with an empty SDK
cache, so every PR exercises the download, checksum and extract. The
update workflow takes the release digest from the release it already
fetched and fails if the podspec version and checksum weren't rewritten.
Stale extracted SDK versions are removed, and the helper logs without
CocoaPods loaded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
React Native 0.81's pod install refuses Xcode older than 16.1, and the
shared macOS config pins 16.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Xcode 26 image has no Ruby 3.3.4, so rbenv refused to run pod.
Install it from .ruby-version as script/setup does, and run pod
through bundler so CI uses the Gemfile's CocoaPods.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Closing this PR as newer SDK versions are available. A new PR will be created with the latest versions.

@github-actions github-actions Bot closed this Nov 10, 2026
The full-text search also matched PRs whose comments mention those
words, so the daily run closed an unrelated open PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@niamh-coleman niamh-coleman reopened this Nov 10, 2026

@DD-Intercom DD-Intercom 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.

All six addressed, and the pod-install job is the important one — download, checksum and extract now run with an empty cache on every PR, and the ls on the cache zip means it can't silently stop exercising that path.

Taking the digest from the latest release JSON is cleaner than what I suggested, and since ios_new_version comes from that same payload the two can't drift apart. Non-blocking nit: the job proves the zip landed in the cache but not that extraction produced a framework — ls ../../../intercom-ios-sdk/*/Intercom.xcframework/Info.plist would close that. Not worth another round on its own.

dSYM thread resolved in your favour. LGTM.

~ Automated via Claude

@niamh-coleman
niamh-coleman merged commit 0faead1 into main Nov 10, 2026
9 checks passed
@niamh-coleman
niamh-coleman deleted the niamh/ios-sdk-from-github-release branch November 10, 2026 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants