DEV Community

Surhid Amatya
Surhid Amatya

Posted on

CocoaPods is Going Read-Only! What iOS Developers Need to Know

CocoaPods is officially sunsetting, with the trunk becoming read-only on December 2, 2026.

What Does This Mean:

  1. No new pods can be added.
  2. No updates to existing pods on the trunk.
  3. Existing projects using CocoaPods will still work as long as GitHub and jsDelivr continue to operate.

📅 Key Timeline:
📢 Jan 2025 – First notification to CocoaPods contributors.
📢 Sept-Oct 2026 – Second notification before the final switch.
📢 Nov 1-7, 2026 – Test run of the read-only mode.
📢 Dec 2, 2026 – Trunk becomes permanently read-only.

Why You Should Migrate to Swift Package Manager (SPM)
The Swift Package Manager (SwiftPM) is the official tool for managing Swift dependencies. Integrated with the Swift build system, it automates downloading, compiling, and linking dependencies, making dependency management seamless.

Key Features of SwiftPM:

  1. Built into Xcode – No extra tools needed!
  2. Efficient & Fast – No more dependency conflicts!
  3. Direct Git Integration – No need for podspecs!
  4. Future-Proof – Officially supported by Apple!

How SwiftPM Works
Swift organizes code into modules, enforcing access control and enabling easy reuse. A package in SwiftPM consists of:

  1. Package.swift – The manifest file defining dependencies and targets.
  2. Targets – Define modules (either libraries or executables).
  3. Dependencies – Other modules/packages required by the project.

Example Package.swift file for a dependency:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "DeckOfPlayingCards",
    products: [
        .library(name: "DeckOfPlayingCards", targets: ["DeckOfPlayingCards"]),
    ],
    dependencies: [
        .package(url: "https://github.com/apple/example-package-playingcard.git", from: "3.0.0"),
    ],
    targets: [
        .target(
            name: "DeckOfPlayingCards",
            dependencies: ["PlayingCard"]),
    ]
)
Enter fullscreen mode Exit fullscreen mode

With SwiftPM, transitive dependencies are automatically resolved—meaning if you include a package, its dependencies are handled automatically.

What Should You Do Next?

  1. If you’re still using CocoaPods, start transitioning to SwiftPM.
  2. Explore Apple’s official SwiftPM documentation to adapt your existing dependencies.
  3. Update your projects and libraries to support SwiftPM moving forward.

Reference

  1. https://www.swift.org/documentation/package-manager/
  2. https://blog.cocoapods.org/CocoaPods-Specs-Repo/

Top comments (0)