Xcodeβs New .xcproj Files Are JSON
Xcode now supports a JSON-based project format (.xcproj) thatβs more readable, merge-friendly, and easier for coding agents to edit. Enable it in the file inspector. Projects using .xcproj also open in earlier versions of Xcode 27. Learn more in Updating your Xcode project configuration file format.
[The] new
project.xcprojcaught my eye. What it replaces isproject.pbxproj, the build graph inside the.xcodeprojbundle, not the bundle itself.[β¦]
In the age of agents, the drawbacks of
pbxprojare amplified further. A great many IDs carry both object identity and cross-references, so an agent modifying a project usually has to locate the right object in a flat table, then update several mutually referencing places in step, all while trying to keep the serialized output faithful to Xcodeβs conventions.[β¦]
From a flat ID table to a tree that mirrors the UI: instead of dumping everything into
objects, it unfolds into structures likefiles/targets/build-settings, so diffs look closer to the operations you actually performed in the interface;The direction of relationships is reversed: a file can declare which targets it belongs to via
target-membership, so adding a file no longer means editing several mutually referencing places at once;
Developers have been screaming for a friendlier Xcode project format for years. Iβm one of them.
Iβve been waiting for something like this for most of my career! π
It does feel like another case of βweβve quickly done a thing to help AI that weβve been unwilling to do for years to help humans.β Iβm seeing that happen across the industry.
It is very welcome and appreciated, and lots of thanks to the teams involved. Itβs also frustrating that it took βit can help AIβ to make it happen.
xcode-project-formatis a Swift library for reading, writing, and manipulating Xcodeβs JSON-basedproject.xcprojformat. 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.
Didnβt most people switch to local SPM projects anyways? Those are the new xcproj that have to be replaced with sth sensible π
What the community has actually been waiting years for is a project manifest along the lines of
Package.swift: something written by people, read by people, and reviewed by people, rather than a more modern encoding of the IDEβs internal database.
Previously:
- WWDC 2025 Wish Lists
- Xcode 16 Folders and Groups
- EditorConfig Files in Xcode
- Why Work Without a Nib?
- Xcode 5βs New XIB Format
Update (2026-09-23): John Gruber:
The old .pbxproj project format was not XML; it was an old NeXT-style βASCIIβ property listβββa file format that is surprisingly JSON-like considering that it predates not only JSON, but JavaScript (JSON = JavaScript Object Notation).