Skip to content

Migrate from Carthage to SPM (RIBs-iOS 1.0) #38

Description

@srea

Background

RIBs for iOS has moved to a dedicated repository and modern tooling:

  • Old: uber/RIBs 0.9.x + Carthage + RxSwift 5
  • Current: uber/RIBs-iOS 1.0.0 + SPM (recommended) + RxSwift 6.x, minimum iOS 15

RIBsTreeViewerClient still uses Carthage (Cartfile pins RIBs 0.9.2) and an outdated Package.swift (points at uber/RIBs master). Carthage requires fragile workarounds on Xcode 15+ / Apple Silicon (patch_carthage_checkouts.sh, --use-xcframeworks).

Goal

Replace Carthage with Swift Package Manager and align with RIBs-iOS 1.0+, while keeping the library usable via prebuilt XCFramework for consumers who do not use SPM.

Phased plan

Phase 1 — SPM manifest & compile check (this issue)

  • Update Package.swift: RIBs-iOS 1.0+, RxSwift 6.x, iOS 15+
  • Align @available / platform requirements in source
  • Verify swift build or Xcode SPM build succeeds
  • Document Phase 1 completion in a PR linked to this issue

Phase 2 — Xcode project & CI

  • Remove Carthage references from RIBsTreeViewerClient.xcodeproj
  • Switch GitHub Actions iOS job from make setup-ci to SPM resolve + xcodebuild
  • Keep Carthage paths documented as deprecated until Phase 4

Phase 3 — XCFramework distribution

  • Regenerate Products/RIBsTreeViewerClient.xcframework using SPM-resolved dependencies
  • Update README integration docs (SPM first, XCFramework second)

Phase 4 — Cleanup

  • Remove Cartfile, Cartfile.resolved, Carthage patch scripts, DeploymentTarget.xcconfig
  • Simplify Makefile (drop setup / setup-ci Carthage targets)
  • Close related Dependabot noise if any remains

Non-goals (for now)

  • Swift Concurrency / SwiftUI support in RIBsTreeViewer (future RIBs-iOS direction)
  • Breaking API changes to RIBsTreeViewer public surface unless required by RIBs 1.0

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions