Section 15/151 menit

15. Ringkasan & Decision Guide

15. Ringkasan & Decision Guide

Pilih Berdasarkan Situasi

Situasi Rekomendasi
Project baru, semua library tersedia di SPM SPM only
Library kritis hanya ada di CocoaPods CocoaPods atau hybrid
Migrasi dari CocoaPods ke SPM bertahap Hybrid (sementara)
Team tidak punya Ruby setup SPM only
Butuh post_install hooks untuk banyak pods CocoaPods (fitur ini tidak ada di SPM)
Butuh Swift Macro atau Build Tool Plugin SPM (mandatory)
Firebase dengan semua modul CocoaPods atau SPM (pilih satu, jangan hybrid untuk Firebase)
Library internal untuk distribusi ke tim lain SPM (lebih mudah setup private registry)
Binary-only SDK dari vendor Binary target di SPM atau pod vendored_frameworks

Cache Key Formula

swift
CocoaPods:
  pods-{runner_os}-xcode{xcode_version}-{hash(Podfile.lock)}

SPM:
  spm-{runner_os}-xcode{xcode_version}-{hash(Package.resolved)}

Fallback (restore-keys):
  pods-{runner_os}-xcode{xcode_version}-
  pods-{runner_os}-

Checklist Project Sehat

swift
Dependency Files:
□ Podfile.lock ada dan di-commit
□ Package.resolved ada dan di-commit
□ Pods/ di .gitignoreTidak ada library yang sama di CocoaPods DAN SPM

CI Setup:
□ Cache untuk Pods/ dengan key berdasarkan Podfile.lockCache untuk SourcePackages dengan key berdasarkan Package.resolved`pod install --no-repo-update` (lebih cepat di CI)
□ `xcodebuild -resolvePackageDependencies` sebelum build

Hybrid Project:
□ Semua developer buka .xcworkspace (BUKAN .xcodeproj)
□ use_frameworks! :linkage => :static di Podfile untuk hindari konflik
□ `check-dependency-overlap.sh` di pre-push hook atau CIDEPENDENCIES.md mendokumentasikan mana yang CocoaPods, mana yang SPM

Untuk project baru di 2025, rekomendasinya jelas: mulai dengan SPM only. CocoaPods hanya dipertahankan jika ada library kritis yang benar-benar tidak tersedia di SPM — dan bahkan dalam kasus itu, evaluasi ulang setiap beberapa bulan karena mayoritas library populer kini sudah support SPM.