DEV Community

Surhid Amatya
Surhid Amatya

Posted on

1

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/

Heroku

Deploy with ease. Manage efficiently. Scale faster.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

Jetbrains Survey

Calling all developers!

Participate in the Developer Ecosystem Survey 2025 and get the chance to win a MacBook Pro, an iPhone 16, or other exciting prizes. Contribute to our research on the development landscape.

Take the survey

👋 Kindness is contagious

Dive into this insightful write-up, celebrated within the collaborative DEV Community. Developers at any stage are invited to contribute and elevate our shared skills.

A simple "thank you" can boost someone’s spirits—leave your kudos in the comments!

On DEV, exchanging ideas fuels progress and deepens our connections. If this post helped you, a brief note of thanks goes a long way.

Okay