Skip to content

Bump to Airship SDK 21, drop CocoaPods (v16.0.0) - #144

Open
rlepinski wants to merge 1 commit into
mainfrom
release-16.0.0-sdk21-drop-cocoapods
Open

rlepinski wants to merge 1 commit into
mainfrom
release-16.0.0-sdk21-drop-cocoapods

Conversation

@rlepinski

Copy link
Copy Markdown
Contributor

Summary

  • Bumps the native Airship dependency to SDK 21.0.1 on Android and iOS, migrating Long/Date timestamps to Instant and durations to Duration where the SDK's public API changed type, and fixes a latent unit bug in InAppProxy.setDisplayInterval on Android uncovered along the way (the pre-21 SDK property was seconds-typed but the proxy forwarded its "milliseconds" input unconverted).
  • Removes CocoaPods support: deletes AirshipFrameworkProxy.podspec, strips the pod lib lint/pod trunk push steps from CI and release, and updates the version-bump scripts to read/write Package.swift/libs.versions.toml instead. This isn't optional — Airship's iOS SDK 21 removed CocoaPods support upstream, so this proxy can no longer publish a podspec either.
  • Adds @_spi(AirshipInternal) to imports in ~21 iOS files that use APIs (AirshipLogger, AppStateTracker, AirshipErrors, AirshipSceneManager, AirshipMainActorCancellableBlock) that SDK 21 moved behind that boundary as part of its internal/public API cleanup — these weren't individually called out in the official migration guide, only discovered by building against 21.
  • Bumps CI/release to Xcode 27 / macos-26-xlarge (SDK 21 requires Xcode 27).

Out of scope, flagged for follow-up:

  • The four downstream consumers (react-native-airship, cordova-airship, airship-flutter, capacitor-airship) still depend on this proxy via CocoaPods and will need their own migration once they pick up 16.0.0.
  • AI context wiring for SDK 21's new on-device AirshipAI feature is intentionally not part of this release.

Test plan

  • cd android && ./gradlew assembleDebug testDebugUnitTest — all tests pass
  • cd ios && xcodebuild ... clean build and ... test against Xcode 27 / iOS 21 SDK — build succeeds, all tests pass
  • Confirm macos-26-xlarge / Xcode_27.0.app actually matches GitHub's hosted runner image before merging (couldn't verify from this environment)
  • Coordinate CocoaPods-removal follow-up with the four downstream plugin repos

🤖 Generated with Claude Code

SDK 21 removes CocoaPods support upstream on iOS, so this proxy's own
podspec can no longer be published either way - the two changes ship
together as one major version rather than as back-to-back breaking
releases.

- Bump Android/iOS Airship dependency to 21.0.1; migrate Long/Date
  timestamps to Instant and durations to Duration where the SDK's
  public API changed type.
- Fix a latent unit bug in InAppProxy.setDisplayInterval on Android:
  the pre-21 SDK property was seconds-typed, but the proxy forwarded
  its "milliseconds" parameter unconverted. Now correctly treated as
  milliseconds end-to-end, matching the documented cross-platform
  contract.
- Add `@_spi(AirshipInternal)` to imports in ~21 iOS files that use
  APIs (AirshipLogger, AppStateTracker, AirshipErrors, etc.) SDK 21
  moved behind that boundary as part of its internal/public API
  cleanup - not called out individually in the migration guide.
- Delete AirshipFrameworkProxy.podspec; remove CocoaPods steps from
  CI/release; update version-bump scripts to read/write Package.swift
  and libs.versions.toml instead of the podspec.
- Bump CI/release to Xcode 27 / macos-26-xlarge (SDK 21 requires
  Xcode 27); this should be re-verified against GitHub's actual
  hosted-runner image before merging.

Downstream consumers (react-native-airship, cordova-airship,
airship-flutter, capacitor-airship) still depend on this proxy via
CocoaPods and will need their own follow-up migration once they pick
up 16.0.0.

AI context wiring for SDK 21's new on-device AirshipAI feature is
intentionally out of scope for this release - tracked separately.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@rlepinski
rlepinski requested a review from a team as a code owner September 17, 2026 17:22
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.

1 participant