Skip to content

tech: Remove CocoaPods support - #401

Merged
DarthMike merged 1 commit into
developfrom
tech/remove-cocoapods
Aug 19, 2026
Merged

DarthMike merged 1 commit into
developfrom
tech/remove-cocoapods

Conversation

@DarthMike

@DarthMike DarthMike commented Aug 19, 2026 •

Copy link
Copy Markdown
Member

Why

The pod cannot be kept correct, and this is not a judgement call about effort:

podspec dependency latest on CocoaPods published what SPM uses
BigInt 5.2.0 2020-09-01 5.7.0
secp256k1.swift (Boilertalk) 0.1.4 2018-04-16 GigaBitcoin/21-DOT-DEV — a different library
Logging 1.4.0 2020-08-06 1.6.4
GenericJSON 2.0.2 2022-10-13 2.0.2 — the only match

None of these will move again — attaswift/BigInt no longer ships a podspec at all. The pod builds against a different secp256k1 implementation from the package, which is what #367 ran into. And trunk stops accepting new podspecs on 2026-12-02.

We looked at publishing one last compatible release. It does not work: the swift-secp256k1 pod exists only from 0.20.0, every version requires iOS 18.0 / macOS 15.0 against our podspec's iOS 13.0, and it vends only the P256K module, which does not expose the C symbols KeyUtil uses. A working pod would need an iOS 18 floor plus a KeyUtil rewrite, or vendoring the libsecp256k1 C sources ourselves.

This breaks nothing

Published versions stay on trunk and remain installable. Anyone already depending on web3.swift keeps resolving 1.6.0 (2023-03-24) indefinitely — there just will not be new ones.

Deprecating the pod on trunk is a separate, manual step. It is currently failing with a server-side 503 from CocoaPods, so it is pending and does not block this.

Changes

  • Delete web3.swift.podspec
  • Delete Gemfile / Gemfile.lock, which existed only to run the pod tooling
  • KeyDerivation.swift: drop the #if !COCOAPODS guard around the Internal_CryptoSwift_PBDKF2 import — it only existed because CocoaPods compiled everything into one module. The only source change.
  • README: replace the install section with a note that CocoaPods is unsupported and existing versions stay installable
  • README: correct the dependency list, which credited Boilertalk's secp256k1.swift — the pod's dependency, never the package's
  • .gitignore: drop the CocoaPods block

Closes the loop on #378 and #370, both already closed as not planned.

439 tests, 0 failures, lint clean.

🤖 Generated with Claude Code

The pod cannot be kept correct. Its dependencies stopped moving years
ago — BigInt 5.2.0 from 2020, secp256k1.swift 0.1.4 from 2018, Logging
1.4.0 from 2020 — and none of them will move again: attaswift no longer
ships a BigInt podspec at all. The pod also builds against a different
secp256k1 implementation than the package does, which is what #367 ran
into. Trunk stops accepting new podspecs in December 2026 regardless.

Publishing another version would mean shipping something meaningfully
different from, and worse than, the SPM package. Nothing is removed from
CocoaPods by this: published versions stay installable, so anyone already
depending on 1.6.0 is unaffected. There simply will not be new ones.

Deletes the podspec and the Gemfile that existed only to run the pod
tooling, and drops the #if !COCOAPODS guard around the
Internal_CryptoSwift_PBDKF2 import, which only existed because CocoaPods
compiled everything into a single module.

Also corrects the dependency list in the README, which credited
Boilertalk's secp256k1.swift — the pod's dependency, never the package's.
@DarthMike
DarthMike marked this pull request as ready for review August 19, 2026 10:59
@DarthMike
DarthMike requested a review from a team as a code owner August 19, 2026 10:59
@DarthMike
DarthMike merged commit f430a09 into develop Aug 19, 2026
3 checks passed
@DarthMike
DarthMike deleted the tech/remove-cocoapods branch August 19, 2026 11:36
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