Skip to content

Support Xcode 27 beta's relocated SimulatorKit.framework - #47

Closed
aristotl-dylan wants to merge 1 commit into
mainfrom
hotfix/simulator-beta
Closed

Support Xcode 27 beta's relocated SimulatorKit.framework#47
aristotl-dylan wants to merge 1 commit into
mainfrom
hotfix/simulator-beta

Conversation

@aristotl-dylan

@aristotl-dylan aristotl-dylan commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Problem

A user on the Xcode 27 beta reported the simulator helper failing to start:

Device helper build failed: error: SimulatorKit not found under /Applications/Xcode-beta.app/Contents/Developer

Xcode 27 beta 4 moved SimulatorKit.framework from Contents/Developer/Library/PrivateFrameworks to Contents/SharedFrameworks (same relocation that hit XcodeBuildMCP and others). Three places assume the old location: the build.sh preflight (which produced the reported error), the loadPrivateFrameworks dlopen in CoreSimulatorBridge.swift, and the HID bridge's independent re-derivation in HIDBridge.m.

Fix

Each lookup now tries both locations — classic PrivateFrameworks under the developer dir first, then SharedFrameworks under Contents — so one helper supports stable and beta toolchains; nothing is dropped for Xcode ≤26. When neither loads, the error lists every candidate path tried.

No sandbox profile change needed: the Seatbelt profile already covers the whole .app bundle via XCODE_APP, which includes Contents/SharedFrameworks.

Verification

  • build.sh compiles the helper cleanly against stable Xcode 26 (both changed sources build).
  • The new preflight check verified against a simulated Xcode 27 layout (SharedFrameworks only → passes), stable Xcode (passes), and a CommandLineTools-style dir (still fails with the guidance message).
  • The helper cache key already hashes build.sh and all Sources/, so existing users rebuild automatically on update.
  • bun fmt / bun lint pass; the @synara/cli typecheck failure on this branch is pre-existing on the base commit (unrelated providerUsageSnapshot.test.ts tuple error).

Not verified against a real Xcode 27 beta install (none on this machine) — the reporter offered to test, so this is ready for them to try.


Note

Low Risk
Localized path-resolution changes for a native helper; no auth, data, or server API impact.

Overview
SimulatorKit lookup now tries the legacy Developer/Library/PrivateFrameworks path first, then Contents/SharedFrameworks, matching Xcode 27 beta 4’s move while keeping Xcode ≤26 working.

simulatorKitCandidatePaths in CoreSimulatorBridge.swift centralizes the list; loadPrivateFrameworks loops candidates and aggregates dlopen errors. HIDBridge.m uses the same order for its independent dlopen, and build.sh accepts either framework directory in its preflight check.

Reviewed by Cursor Bugbot for commit 03e28cf. Bugbot is set up for automated code reviews on this repo. Configure here.

Xcode 27 beta 4 moved SimulatorKit.framework from
Contents/Developer/Library/PrivateFrameworks to Contents/SharedFrameworks,
which made the device helper's build preflight fail with 'SimulatorKit not
found' and would have broken both runtime dlopens the same way.

All three lookups (build.sh preflight, CoreSimulatorBridge dlopen, and the
HID bridge's re-derivation) now try the classic PrivateFrameworks location
first and fall back to SharedFrameworks, so one helper spans stable and
beta toolchains. Load-failure messages list every candidate tried.
@cursor

cursor Bot commented Aug 15, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_f747c059-7ede-4131-9ff2-c0a8022cd598)

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Aug 15, 2026
@aristotl-dylan

Copy link
Copy Markdown
Owner Author

Reopening against upstream instead.

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

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant