A Swift library for reading, updating, and writing Xcode project files programmatically.
XcodeProj is a Swift library for parsing, modifying, and writing Xcode project files programmatically. It solves the problem of manually editing Xcode projects by providing a code-based interface to read and update project configurations, build settings, and targets. This enables automation of project-related tasks, such as syncing versions or generating projects dynamically.
iOS and macOS developers building tools for project generation, automation, or CI/CD pipelines, as well as teams needing to manage Xcode projects at scale without manual intervention.
Developers choose XcodeProj because it offers a native Swift implementation for working with Xcode projects, is battle-tested by major tools like Tuist and XcodeGen, and provides a reliable way to automate project management tasks that are error-prone when done manually.
📝 Read, update and write your Xcode projects
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Used by major tools like Tuist, XcodeGen, and Sourcery, indicating reliability and thorough testing in real-world automation scenarios.
Built entirely in Swift, it seamlessly works with Swift Package Manager and scripting tools like swift-sh, as shown in the installation examples.
Provides full programmatic access to parse, modify, and write Xcode project files, enabling automation of complex tasks like version syncing from git tags.
With 47 contributors and regular updates indicated by badges, the project is actively maintained to keep pace with Xcode changes.
Requires the Swift toolchain and Package Manager, making it inaccessible for teams not using Swift or preferring polyglot automation setups.
Relies on reverse-engineered Xcode project formats that can change with Apple updates, risking breakage in automation scripts without timely library updates.
The README provides basic examples, but comprehensive API documentation is sparse, forcing developers to rely on source code or external references for advanced use.