📦 Deep Dive · Intermediate

Swift Package Manager is the iOS/macOS default — leave CocoaPods behind

CocoaPods is in maintenance mode. Flutter 3.44 makes Swift Package Manager the default for iOS and macOS dependency resolution. The CLI migrates the Xcode project on the next flutter run / flutter build.

Diagram: Swift Package Manager Default

What app developers see

  • No Ruby/CocoaPods install required for the happy path.
  • Add-to-App gains flutter build swift-package to emit a Swift Package for native hosts.
  • Plugins that still require CocoaPods trigger a CLI warning and temporary fallback.

What plugin authors must ship

If you maintain an iOS/macOS plugin:

  1. Add a Package.swift.
  2. Depend on FlutterFramework if you migrated in the 2024 pilot.
  3. Raise the minimum Flutter constraint to 3.44 when you switch.

Unmigrated plugins score lower on pub.dev and will eventually stop resolving.

Temporary opt-out

# pubspec.yaml
flutter:
  # temporary escape hatch — file a bug if you need it
  enable-swift-package-manager: false

Or pass --no-enable-swift-package-manager on the command line. Opt-outs will be removed; open an issue with your Xcode project if SwiftPM breaks a real integration.

Checklist before you delete Podfile

  • flutter clean then a full iOS build
  • CI runners no longer install CocoaPods for this app
  • Every plugin in the tree resolves under SwiftPM (or is replaced)
  • Code signing and entitlements still apply
#Flutter#iOS#macOS#SwiftPM#CocoaPods