- Home
- Package Managers
- Carthage
Carthage
What it is
Carthage is a free, MIT-licensed dependency manager for Cocoa applications. It resolves dependencies, fetches their source, builds them, and supplies framework bundles or XCFrameworks while leaving project structure and setup under the developer’s control. It does not automatically change project files or build settings. Dependencies are fetched into the project folder by default; a command-line option enables Git submodules, and Carthage can also use prebuilt frameworks attached to GitHub Releases or listed in a binary project definition file. It supports dependency resolution, lockfiles, and private registry authentication. For Xcode 12 and later, the documented `--use-xcframeworks` option builds platform-independent XCFrameworks. The documentation covers macOS, iOS, tvOS, and watchOS; supported platforms also include visionOS. Carthage officially supports dynamic frameworks and supports static frameworks from version 0.30.0. It checks downloaded Swift frameworks against the local Swift version and tries a source build if they differ. Build caching can avoid rebuilding dependencies when possible, but it cannot be used with Git submodules.
For and against
For
- Leaves project files and build settings unchanged.
- Supports dependency lockfiles and private registry authentication.
- Can build framework bundles and XCFrameworks.
- Can use prebuilt frameworks from GitHub Releases.
Against
- Build caching is incompatible with Git submodules.
- Official dynamic framework support requires iOS 8 or later.
The verdict
Carthage is a free option for developers who prefer dependency builds without automatic project-file changes. Check its framework compatibility details and the build-caching limitation before choosing a workflow.
Who it suits
Carthage suits developers building Cocoa applications who want dependency management while retaining control of project structure and build settings. It supports Apple-platform framework workflows and offers several installation options, including a package installer, Homebrew, MacPorts, and source installation.
Plans and prices
Carthage
MIT licensed software
Read 11 Oct 2026 · raw.githubusercontent.com
On the record
- Apple platforms
- The documentation covers building frameworks for macOS, iOS, tvOS, and watchOS.github.com · read 11 Oct 2026
- Binary downloads
- Carthage can use prebuilt frameworks attached to GitHub Releases or specified through a binary project definition file.github.com · read 11 Oct 2026
- Build caching
- The --cache-builds option can avoid rebuilding a dependency when possible, but it is incompatible with --use-submodules.github.com · read 11 Oct 2026
- Builds dependencies
- It builds dependencies and provides binary frameworks while leaving project structure and setup under the developer’s control.github.com · read 11 Oct 2026
- Compatibility limit
- Carthage officially supports dynamic frameworks, which are available on iOS 8 or later and any version of OS X.github.com · read 11 Oct 2026
- Dependency resolution
- Yesgithub.com · read 22 Sep 2026
- Dependency sources
- Carthage checks out dependency source files into the project folder by default and can optionally use Git submodules.github.com · read 11 Oct 2026
- Framework formats
- Carthage can build XCFrameworks and framework bundles, and supports static frameworks as of version 0.30.0.github.com · read 11 Oct 2026
- Framework support
- The README says Carthage officially supports dynamic frameworks and also supports static frameworks starting with version 0.30.0.github.com · read 11 Oct 2026
- Installation
- The project documents installation through a package installer, Homebrew, MacPorts, or building from source.github.com · read 11 Oct 2026
- Install options
- The README lists a package installer, Homebrew, MacPorts, and installation from source.github.com · read 11 Oct 2026
- License
- Carthage is distributed under the MIT License, which grants permission to use, copy, modify, publish, distribute, sublicense, and sell the software subject to its conditions.raw.githubusercontent.com · read 11 Oct 2026
- Lockfile support
- Yesgithub.com · read 22 Sep 2026
- Notable limit
- The README says build caching with `--cache-builds` is incompatible with `--use-submodules`.github.com · read 11 Oct 2026
- Package formats
- framework,xcframeworkgithub.com · read 22 Sep 2026
- Prebuilt frameworks
- Carthage can use prebuilt frameworks attached to GitHub Releases or specified through a binary project definition file.github.com · read 11 Oct 2026
- Private registry auth
- Yesgithub.com · read 22 Sep 2026
- Project changes
- Carthage does not automatically modify project files or build settings.github.com · read 11 Oct 2026