{"slug": "xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project", "title": "Xcode 27.2 Introduces an Agent- and Merge-Friendly JSON Format for Project Configuration", "summary": "Apple introduced a JSON-based project configuration format for Xcode 27.2, replacing the property-list-based project.pbxproj file with project.xcproj to reduce merge conflicts and make project settings easier for AI coding agents to inspect and modify. Apple published the open source xcode-project-format specification on GitHub along with a Swift package for encoding and decoding the format, which defines targets, file trees, build configurations, build settings, and external dependencies. Developers must confirm tools including fastlane, CocoaPods, and Tuist support the new format before migrating, since the change alters only how the project is represented on disk, not its underlying model.", "body_md": "[Apple is introducing a new JSON-based format for Xcode project](https://developer.apple.com/documentation/xcode/updating-your-xcode-project-configuration-file-format) configuration files, replacing the traditional property-list-based format. Available in Xcode 27.2, the new format aims to improve readability, simplify maintenance, and make project configuration easier for AI coding agents to understand and modify.\n\nThe open source JSON file format ([`xcode-project-format`](https://github.com/apple/xcode-project-format)) makes verifying project configuration changes easier when committing the project configuration file to your source code repository because changes in the comparison view correspond to your actions in Xcode.\n\nA major [advantage of the new format](https://swiftpackageindex.com/apple/xcode-project-format/0.1.0/documentation/xcode-project-format/file-format-goals) is that it reduces the likelihood of merge conflicts by providing a more stable and predictable representation of project configuration. The JSON format also makes the project structure more accessible to automated development tools, including AI coding agents, simplifying the inspection and modification of project settings.\n\nTo help developers work with the new format, Apple has also released a [Swift package for encoding and decoding the new format](https://swiftpackageindex.com/apple/xcode-project-format/0.1.0/documentation/xcodeprojectformat). For example, this is how you list all targets defined in a project:\n\n``` python\nimport XcodeProjectFormat\n\nfunc listTargets(in projectURL: URL) throws {\n    let projectData = try Data(contentsOf: projectURL)\n    let project = try XCSchema.Project(jsonRepresentation: projectData)\n    for target in project.targets {\n        print(target.name)\n    }\n}\n```\n\nAt the top-level, [JSON schema defines not only targets but also the file tree, build configurations, build settings, and external dependencies](https://swiftpackageindex.com/apple/xcode-project-format/0.1.0/documentation/xcode-project-format/schema-overview). It also supports relationships between nodes in different subtrees. For example, a file specifies the build phases and targets it belongs to. Importantly, the formats avoid opaque identifiers wherever possible, favoring human-readable names and paths instead. Targets and build products are notable exceptions, as they use identifiers to support references from external files.\n\nCommenting the announcement, senior iOS developer Nikita Dyachkov [notes that](https://www.linkedin.com/posts/nikita-dyachkov_apple-just-changed-the-format-of-one-of-xcodes-share-7507722627327815681-YQAF/)\n\nThe issue of merging project files has been a long-standing problem since project files were introduced and was familiar to anyone who's worked in an iOS development team with more than one developer.\n\nIn the same thread, senior iOS engineer Khushal Jhalani described the new, more readable format as a \"huge quality-of-life improvement\". Others echoed the sentiment that the change was long overdue, with senior iOS developer Moumita China remarking that it could have saved \"years of merge conflicts\".\n\nExisting projects can be migrated easily, as the new format changes only how the project is represented on disk, not its underlying model. Converting a project replaces the traditional `project.pbxproj` file with `project.xcproj`. Before migrating, however, ensure that any tools you are using, including fastlane, CocoaPods, Tuist, and others, support the new format.", "url": "https://wpnews.pro/news/xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project", "canonical_source": "https://www.infoq.com/news/2026/10/xcode-json-project-format/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global", "published_at": "2026-10-12 09:00:00+00:00", "updated_at": "2026-10-12 09:10:12.533216+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["Apple", "Xcode 27.2", "xcode-project-format", "project.pbxproj", "project.xcproj", "Nikita Dyachkov", "Khushal Jhalani", "Moumita China"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project", "markdown": "https://wpnews.pro/news/xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project.md", "text": "https://wpnews.pro/news/xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project.txt", "jsonld": "https://wpnews.pro/news/xcode-27-2-introduces-an-agent-and-merge-friendly-json-format-for-project.jsonld"}}