Skip to content

feat(init): support Xcode JSON project format - #488

Draft
seanperez29 wants to merge 10 commits into
sean/macos-native-setupfrom
sean/xcode-json-project-format
Draft

seanperez29 wants to merge 10 commits into
sean/macos-native-setupfrom
sean/xcode-json-project-format

Conversation

@seanperez29

@seanperez29 seanperez29 commented Sep 22, 2026

Copy link
Copy Markdown

Summary

  • support Xcode 27 project.xcproj documents alongside legacy project.pbxproj projects
  • route both formats through the same native inspection, planning, transaction, and Doctor contracts
  • inspect JSON targets, synchronized folders, source ownership, build settings, xcconfig references, Swift packages, entitlements, and platform membership
  • safely install Clerk package products and apply native setup changes while preserving unrelated project content
  • support Xcode's documented JSON5 syntax and fail closed for ambiguous wrappers, incomplete ownership, and unsupported schema shapes

Scope

This is a project-format adapter above the completed native Apple setup stack. It does not add another product workflow or change the existing PBX setup policy.

Legacy project.pbxproj projects continue through the existing implementation. A wrapper containing both formats is treated as ambiguous and is not modified.

Apple format documentation: https://developer.apple.com/documentation/xcode/updating-your-xcode-project-configuration-file-format

Validation

  • formatting, linting, typechecking, compiled CLI build, and 3,984 unit tests at the integrated tip
  • focused JSON inspection, ownership, build-setting, SDK-installation, and mutation regressions
  • Xcode 27.2 fixture validation for conversion, source membership, configuration references, and platform-filter behavior
  • byte-for-byte parity with the pre-split stack outside redistributed changesets
  • git diff --check

Stack

  1. feat(init): add iOS project inspection foundations #431 — native Apple project inspection foundations
  2. feat(init): add transactional native iOS mutation engines #453 — transactional local mutation engines
  3. feat(init): compose native iOS local setup #489 — native iOS local setup orchestration
  4. feat(init): reconcile native iOS backend configuration #454 — native iOS backend reconciliation
  5. feat(init): integrate native iOS setup #490 — public native iOS init integration
  6. feat(doctor): add native iOS diagnostics #455 — native iOS Doctor diagnostics
  7. feat(native): add macOS setup and diagnostics #486 — macOS setup and diagnostics
  8. feat(init): support Xcode JSON project format #488 — Xcode JSON project format

@changeset-bot

changeset-bot Bot commented Sep 22, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 573b213

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
clerk Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant