From a13acd3c112a93acc8182c1a0efd15d09b447050 Mon Sep 17 00:00:00 2001 From: Worthing ~ <115107835+w-goog@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:36:11 -0700 Subject: [PATCH 1/4] g-orchestrated: add CocoaPods to SPM migration guide --- MIGRATING_FROM_COCOAPODS.md | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 MIGRATING_FROM_COCOAPODS.md diff --git a/MIGRATING_FROM_COCOAPODS.md b/MIGRATING_FROM_COCOAPODS.md new file mode 100644 index 000000000..706270384 --- /dev/null +++ b/MIGRATING_FROM_COCOAPODS.md @@ -0,0 +1,50 @@ +# Migrating from CocoaPods to Swift Package Manager + +CocoaPods trunk becomes read-only on December 2, 2026. AppAuth 3.0.0 is the last +version published to CocoaPods. Existing pod versions remain installable, but +future AppAuth releases are distributed via Swift Package Manager (and Carthage) +only. + +## Steps + +1. In the project directory, remove the `pod 'AppAuth'` (and any + `pod 'AppAuth/...'`) lines from the `Podfile`. If AppAuth was the only pod, + run `pod deintegrate`, delete the `Podfile`, `Podfile.lock`, and the + generated `.xcworkspace`, and open the `.xcodeproj` from then on. +2. In Xcode: **File > Add Package Dependencies…**, enter + `https://github.com/openid/AppAuth-iOS`, and choose "Up to Next Major + Version" from the current version. +3. Add the product(s) matching your old subspec(s) to each target (table below). +4. Update imports (table below), then clean the build folder and build. + +| Podfile entry | SPM product | Swift import | Objective-C import | +| --- | --- | --- | --- | +| `pod 'AppAuth'` (default: Core + ExternalUserAgent) | `AppAuth` | `import AppAuth` | `@import AppAuth;` | +| `pod 'AppAuth/Core'` | `AppAuthCore` | `import AppAuthCore` | `@import AppAuthCore;` | +| `pod 'AppAuth/ExternalUserAgent'` | `AppAuth` | `import AppAuth` | `@import AppAuth;` | +| `pod 'AppAuth/TV'` | `AppAuthTV` | `import AppAuthTV` (plus `import AppAuthCore` for core types) | `@import AppAuthTV;` `@import AppAuthCore;` | + +Under CocoaPods every subspec compiled into a single module named `AppAuth`, so +imports such as `#import ` or `#import "AppAuth.h"` must +change to the module imports above. App extensions that only need core types +should link `AppAuthCore`. + +## Don't mix package managers + +If another pod in your `Podfile` depends on AppAuth (for example GTMAppAuth or +GoogleSignIn installed via CocoaPods), migrate those to Swift Package Manager at +the same time. Mixing CocoaPods and Swift Package Manager copies of the same +library in one target leads to duplicate symbols, dependency cycles and build +errors. + +## If you can't migrate yet + +You can stay on AppAuth 3.0.0 via CocoaPods, or use +[Carthage](README.md#carthage). + +## Cross-platform wrappers + +Cross-platform frameworks (React Native, Flutter, etc.) integrate AppAuth +through their own plugin's packaging. Check the plugin's own documentation for +its Swift Package Manager support rather than editing its `Podfile` entries +directly. From d42fb6778ed733760f1936ad339a713ce713ffb4 Mon Sep 17 00:00:00 2001 From: Worthing ~ <115107835+w-goog@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:36:11 -0700 Subject: [PATCH 2/4] g-orchestrated: note CocoaPods deprecation in CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf49792c..28896d43f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # UNRELEASED - Improved the state validation error messages to distinguish a missing `state` parameter from a mismatched one. The end session message now notes that a provider's `end_session_endpoint` may point at a legacy or SAML single-logout endpoint, which does not echo `state`. Addresses issue #956. +- Deprecated CocoaPods distribution. AppAuth 3.0.0 is the last release published to CocoaPods; CocoaPods trunk becomes read-only on December 2, 2026. See [MIGRATING_FROM_COCOAPODS.md](MIGRATING_FROM_COCOAPODS.md) for moving to Swift Package Manager. Addresses issue #962. # 3.0.0 - BREAKING: Updates made to support Xcode 27. ([#972](https://github.com/openid/AppAuth-iOS/pull/972), [#973](https://github.com/openid/AppAuth-iOS/pull/973)) From b069b2de6c8f2d93b114567af372c46b31ef09a7 Mon Sep 17 00:00:00 2001 From: Worthing ~ <115107835+w-goog@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:39:02 -0700 Subject: [PATCH 3/4] g-orchestrated: make README Swift Package Manager-first --- README.md | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index ddbc86521..b5ac78cd0 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ [![Pod Platform](https://img.shields.io/cocoapods/p/AppAuth.svg?style=flat)](https://cocoapods.org/pods/AppAuth) [![Catalyst compatible](https://img.shields.io/badge/Catalyst-compatible-brightgreen.svg?style=flat)](https://developer.apple.com/documentation/xcode/creating_a_mac_version_of_your_ipad_app) +> [!IMPORTANT] +> **CocoaPods distribution is deprecated.** CocoaPods trunk becomes read-only on December 2, 2026. AppAuth 3.0.0 is the last version published to CocoaPods; future releases are distributed through Swift Package Manager and Carthage. See [Migrating from CocoaPods to Swift Package Manager](MIGRATING_FROM_COCOAPODS.md). + AppAuth for iOS and macOS, and tvOS is a client SDK for communicating with [OAuth 2.0](https://tools.ietf.org/html/rfc6749) and [OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html) providers. @@ -85,44 +88,34 @@ AppAuthTV is designed for servers that support the device authorization flow as ## Try -Want to try out AppAuth? Just run: - - pod try AppAuth - -Follow the instructions in [Examples/README.md](Examples/README.md) to configure -with your own OAuth client (you need to update three configuration points with your -client info to try the demo). +Want to try out AppAuth? Follow the instructions in [Examples/README.md](Examples/README.md) to +configure the example apps with your own OAuth client (you need to update three configuration +points with your client info to try the demo). ## Setup -AppAuth supports four options for dependency management. - -### CocoaPods - -With [CocoaPods](https://guides.cocoapods.org/using/getting-started.html), -add the following line to your `Podfile`: +AppAuth supports three options for dependency management. - pod 'AppAuth' - -Then, run `pod install`. - -**tvOS:** Use the `TV` subspec: - - pod 'AppAuth/TV' +### Swift Package Manager +With [Swift Package Manager](https://swift.org/package-manager), in Xcode choose +**File > Add Package Dependencies…**, enter `https://github.com/openid/AppAuth-iOS`, and add +the product you need to your target: -### Swift Package Manager +* `AppAuth` — the full library, including the platform's external user agent. +* `AppAuthCore` — core types only (for example, in app extensions). +* `AppAuthTV` — the tvOS device authorization flow (use with `AppAuthCore`). -With [Swift Package Manager](https://swift.org/package-manager), -add the following `dependency` to your `Package.swift`: +Or add the following `dependency` to your `Package.swift`: ```swift dependencies: [ - .package(url: "https://github.com/openid/AppAuth-iOS.git", .upToNextMajor(from: "1.3.0")) + .package(url: "https://github.com/openid/AppAuth-iOS.git", .upToNextMajor(from: "3.0.0")) ] ``` -**tvOS:** Use the `AppAuthTV` target. +If you currently use CocoaPods, see +[Migrating from CocoaPods to Swift Package Manager](MIGRATING_FROM_COCOAPODS.md). ### Carthage From dc0801037b03dd5f78432b598af0784917253e2c Mon Sep 17 00:00:00 2001 From: Worthing ~ <115107835+w-goog@users.noreply.github.com> Date: Wed, 7 Oct 2026 16:41:28 -0700 Subject: [PATCH 4/4] g-orchestrated: replace CocoaPods badges in README --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b5ac78cd0..588ee6803 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,8 @@ [![codecov](https://codecov.io/gh/openid/AppAuth-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/openid/AppAuth-iOS) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat)](https://github.com/Carthage/Carthage) [![SwiftPM compatible](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg?style=flat)](https://swift.org/package-manager) -[![Pod Version](https://img.shields.io/cocoapods/v/AppAuth.svg?style=flat)](https://cocoapods.org/pods/AppAuth) -[![Pod License](https://img.shields.io/cocoapods/l/AppAuth.svg?style=flat)](https://github.com/openid/AppAuth-iOS/blob/master/LICENSE) -[![Pod Platform](https://img.shields.io/cocoapods/p/AppAuth.svg?style=flat)](https://cocoapods.org/pods/AppAuth) +[![Release](https://img.shields.io/github/v/release/openid/AppAuth-iOS?style=flat)](https://github.com/openid/AppAuth-iOS/releases) +[![License](https://img.shields.io/github/license/openid/AppAuth-iOS?style=flat)](LICENSE) [![Catalyst compatible](https://img.shields.io/badge/Catalyst-compatible-brightgreen.svg?style=flat)](https://developer.apple.com/documentation/xcode/creating_a_mac_version_of_your_ipad_app) > [!IMPORTANT]