Skip to content

fix: load SimulatorKit from SharedFrameworks on Xcode 27 - #87

Open
simonhamp wants to merge 1 commit into
NativeScript:mainfrom
simonhamp:fix/xcode-27-simulatorkit-path
Open

simonhamp wants to merge 1 commit into
NativeScript:mainfrom
simonhamp:fix/xcode-27-simulatorkit-path

Conversation

@simonhamp

Copy link
Copy Markdown

On Xcode 27 the simulator view shows "Unable to load SimulatorKit from /Applications/Xcode.app/Contents/Developer/Library/PrivateFrameworks/SimulatorKit.framework/SimulatorKit". Xcode 27 moved SimulatorKit.framework to Contents/SharedFrameworks, and the old Contents/Developer/Library/PrivateFrameworks directory is gone.

DFSimulatorKitExecutablePath() now reads the Xcode major version from Contents/version.plist. On 27 and later it looks in SharedFrameworks first. On older versions, or if the version can't be read, it looks in the old location first. Either way it uses the first path that exists, so an unusual layout still works as long as the framework is in one of the two places. If neither exists it returns the preferred path, so the error message still says where it looked.

idb made the same change in facebook/idb@981101298cf5.

I also added a sentence to AGENTS.md saying where SimulatorKit is loaded from.

Testing

Tested on macOS 27 with Xcode 27.0 (27A266a). Before the change the display failed with the error above. After it, an iPhone 18 Pro simulator on iOS 27 boots and streams in SimDeck again. cargo test passes.

I don't have Xcode 26 installed anymore, so I checked the older path by running the lookup against fake Xcode 26 and 27 app layouts, one without a version.plist, and the Command Line Tools developer dir.

This branch is based on main. It seems the 0.2.0 release was tagged from fix/windows-live-video-messaging, but this file is the same on both and the commit cherry-picks cleanly onto the 0.2.0 tag.

Xcode 27 moved SimulatorKit.framework out of
Contents/Developer/Library/PrivateFrameworks and into
Contents/SharedFrameworks. The old directory is gone, so the display
bridge failed with "Unable to load SimulatorKit".

The bridge now reads the Xcode major version from version.plist next to
the developer directory. On 27 and later it tries SharedFrameworks first
and falls back to the old location. On older or unknown versions it
tries the old location first. If neither file exists it returns the
first candidate so the error still names the expected path.
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 4fbbf87c-b8d1-4e29-b183-c2d84995e658

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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