A Swift library for reading, writing, and manipulating Xcode's JSON-based project.xcproj format.
Swift
41
1 commits
updated Sep 16, 2026
xcode-project-format is a Swift library for reading, writing, and manipulating Xcode's JSON-based project.xcproj format. It models the format as a rich set of value types nested under a single namespace, XCSchema, so consumers get precise, typed access to a project's structure instead of hand-parsing JSON.
The goal is to give the ecosystem a shared, accurate model of the Xcode project format — so tools like generators, linters, verifiers, and validators don't each have to reverse-engineer the format from scratch.
The package also ships xcprojformatter, a small CLI tool built on the library.
Add the package as a dependency in your Package.swift:
dependencies: [
.package(url: "https://github.com/apple/xcode-project-format/", from: "0.1.0")
]
import XcodeProjectFormat
func listTargets(in projectURL: URL) throws {
let projectData = try Data(contentsOf: projectURL)
let project = try XCSchema.Project(jsonRepresentation: projectData)
for target in project.targets {
print(target.name)
}
}
You'll find types for folders, file references, groups, targets, build phases, build rules, and the rest of the Xcode project model within this package.
The project documentation is available at Swift Package Index.
To preview it locally:
swift package add-dependency https://github.com/swiftlang/swift-docc-plugin --from 1.5.0
swift package --disable-sandbox preview-documentation
We welcome contributions within a defined scope. See CONTRIBUTING.md for what we accept, what's out of scope for now, and how to get started.
Licensed under the Apache License 2.0.
1 commits
Hacker News (1)
Swift
100.0%
A Swift library for reading, writing, and manipulating Xcode's JSON-based project.xcproj format.
Swift
41
1 commits
updated Sep 16, 2026
xcode-project-format is a Swift library for reading, writing, and manipulating Xcode's JSON-based project.xcproj format. It models the format as a rich set of value types nested under a single namespace, XCSchema, so consumers get precise, typed access to a project's structure instead of hand-parsing JSON.
The goal is to give the ecosystem a shared, accurate model of the Xcode project format — so tools like generators, linters, verifiers, and validators don't each have to reverse-engineer the format from scratch.
The package also ships xcprojformatter, a small CLI tool built on the library.
Add the package as a dependency in your Package.swift:
dependencies: [
.package(url: "https://github.com/apple/xcode-project-format/", from: "0.1.0")
]
import XcodeProjectFormat
func listTargets(in projectURL: URL) throws {
let projectData = try Data(contentsOf: projectURL)
let project = try XCSchema.Project(jsonRepresentation: projectData)
for target in project.targets {
print(target.name)
}
}
You'll find types for folders, file references, groups, targets, build phases, build rules, and the rest of the Xcode project model within this package.
The project documentation is available at Swift Package Index.
To preview it locally:
swift package add-dependency https://github.com/swiftlang/swift-docc-plugin --from 1.5.0
swift package --disable-sandbox preview-documentation
We welcome contributions within a defined scope. See CONTRIBUTING.md for what we accept, what's out of scope for now, and how to get started.
Licensed under the Apache License 2.0.
Hacker News (1)
1 commits
Swift
100.0%