xcodeproj 8.8.0

xcodeproj 8.8.0

LangLanguage SwiftSwift
License MIT
ReleasedLast Release Jul 2022
SPMSupports SPM

Maintained by Pedro Piñera, Marek Fort, Pedro Piñera, Marcin Iwanicki, Kassem Wridan, Pedro Piñera¨.

Depends on:
PathKit~> 1.0.0
AEXML~> 4.6.1

xcodeproj 8.8.0

  • By
  • Tuist


All Contributors

Swift Package Manager Release Code Coverage License

XcodeProj is a library written in Swift for parsing and working with Xcode projects. It's heavily inspired by CocoaPods XcodeProj and xcode.

Projects Using XcodeProj

Project Repository
Tuist github.com/tuist/tuist
Sourcery github.com/krzysztofzablocki/Sourcery
ProjLint github.com/JamitLabs/ProjLint
XcodeGen github.com/yonaskolb/XcodeGen
xspm gitlab.com/Pyroh/xspm

If you are also leveraging XcodeProj in your project, feel free to open a PR to include it in the list above.


Swift Package Manager

Add the dependency in your Package.swift file:

let package = Package(
    name: "myproject",
    dependencies: [
        .package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "8.8.0")),
    targets: [
            name: "myproject",
            dependencies: ["XcodeProj"]),


Only macOS

# Cartfile
github "tuist/xcodeproj" ~> 8.8.0


pod 'xcodeproj', '~> 8.8.0


Using swift-sh you can automate project-tasks using scripts, for example we can make a script that keeps a project’s version key in sync with the current git tag that represents the project’s version:

#!/usr/bin/swift sh
import Foundation
import XcodeProj  // @tuist ~> 8.8.0
import PathKit

guard CommandLine.arguments.count == 3 else {
    let arg0 = Path(CommandLine.arguments[0]).lastComponent
    fputs("usage: \(arg0) <project> <new-version>\n", stderr)

let projectPath = Path(CommandLine.arguments[1])
let newVersion = CommandLine.arguments[2]
let xcodeproj = try XcodeProj(path: projectPath)

for conf in xcodeproj.pbxproj.buildConfigurations where conf.buildSettings[key] != nil {
    conf.buildSettings[key] = newVersion

try xcodeproj.write(path: projectPath)

You could then store this in your repository, for example at scripts/set-project-version and then run it:

$ scripts/set-project-version ./App.xcodeproj 1.2.3
$ git add App.xcodeproj
$ git commit -m "Bump version"
$ git tag 1.2.3

Future adaption could easily include determining the version and bumping it automatically. If so, we recommend using a library that provides a Version object.

Documentation 📝

Want to start using XcodeProj? Start by digging into our documentation which will help you get familiar with the API and get to know more about the Xcode projects structure.

References 📚


  1. Git clone the repository [email protected]:tuist/xcodeproj.git.
  2. Generate xcodeproj with swift package generate-xcodeproj.
  3. Open XcodeProj.xcodeproj.


XcodeProj is released under the MIT license. See LICENSE for details.


Thanks goes to these wonderful people (emoji key):

Joseph Colicchio




Dan Fleming


Sascha Schwabbauer


Marcin Iwanicki


Adam Khazi


Elliott Williams




Yuya Oka


Keith Smiley


Ian Leitch


Daniil Subbotin


Florentin Bekier


Vadim Smal


freddi(Yuki Aki)


Kristopher Jackson


Jake Prickett


Jake Adams




Bogdan Belogurov


This project follows the all-contributors specification. Contributions of any kind welcome!