mod-pbxproj icon indicating copy to clipboard operation
mod-pbxproj copied to clipboard

[FEAT] Add support for PBXFileSystemSynchronizedRootGroup (Xcode 16+)

Open michalszelagsonos opened this issue 4 months ago • 0 comments

Is your feature request related to a problem? Please describe. In Xcode 16 Apple introduced a new entry in the project file called PBXFileSystemSynchronizedRootGroup. The code currently does not parse this entry which leads to a format change that adds noise when we open PRs with changes. Note, the formatting changes seem to not affect Xcode's behavior for now this creates confusion during code reviews and we have no guarantees that this will not be a problem in future Xcode versions.

Example of how Xcode creates the entry:

/* Begin PBXFileSystemSynchronizedRootGroup section */
		BAAF9DA52D4BFA9100ECF92C /* BrowseContainer */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = BrowseContainer; sourceTree = "<group>"; };
		BAC589AD2D413A7200A8AB3F /* ContainerSection */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = ContainerSection; sourceTree = "<group>"; };
		BAF791292D3ABB9F00E450D3 /* AudioSearchView */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = AudioSearchView; sourceTree = "<group>"; };
/* End PBXFileSystemSynchronizedRootGroup section */

This is how it looks after the file is written:

/* Begin PBXFileSystemSynchronizedRootGroup section */
		BAAF9DA52D4BFA9100ECF92C /* BrowseContainer */ = {
			isa = PBXFileSystemSynchronizedRootGroup;
			explicitFileTypes = {
			};
			explicitFolders = (
			);
			path = BrowseContainer;
			sourceTree = "<group>";
		};
		BAC589AD2D413A7200A8AB3F /* ContainerSection */ = {
			isa = PBXFileSystemSynchronizedRootGroup;
			explicitFileTypes = {
			};
			explicitFolders = (
			);
			path = ContainerSection;
			sourceTree = "<group>";
		};
		BAF791292D3ABB9F00E450D3 /* AudioSearchView */ = {
			isa = PBXFileSystemSynchronizedRootGroup;
			explicitFileTypes = {
			};
			explicitFolders = (
			);
			path = AudioSearchView;
			sourceTree = "<group>";
		};
/* End PBXFileSystemSynchronizedRootGroup section */

Describe the solution you'd like A new module needs to be added to support this entry in the project file.

Describe alternatives you've considered This issue could be ignored for now and users need to be made aware why this change occurs in the code diffs.

michalszelagsonos avatar Jun 11 '25 14:06 michalszelagsonos