Skip to content

[build-tools] Fix iOS Simulator readiness hang on Xcode 26.4#3794

Merged
gwdp merged 4 commits into
mainfrom
gwdp/fix-ios-simulator-readiness-screenshot
May 27, 2026
Merged

[build-tools] Fix iOS Simulator readiness hang on Xcode 26.4#3794
gwdp merged 4 commits into
mainfrom
gwdp/fix-ios-simulator-readiness-screenshot

Conversation

@gwdp
Copy link
Copy Markdown
Contributor

@gwdp gwdp commented May 27, 2026

Why

eas/start_ios_simulator never starts on the Xcode 26.4 image — it hangs ~30 min then fails.

waitForReadyAsync polls xcrun simctl io <udid> screenshot /dev/null. Since Xcode 26.4 simctl io screenshot writes the file atomically (temp file + rename in the destination's directory), so /dev/null fails — it tries to create a file in /dev, which the build user can't:

NSCocoaErrorDomain code=513: You don't have permission to save the file "null" in the folder "dev"

It fails every attempt, so the readiness retry burns its full 30-minute budget. Worked on Xcode 26.2 (which wrote directly to the path).

How

Write the readiness screenshot to a real temp file (/tmp/shot.png) and remove it after. Works across Xcode versions.

Test Plan

Reproduced on a custom build with the real eas/start_ios_simulator:

yarn typecheck and oxlint pass.

@gwdp gwdp requested a review from sjchmiela May 27, 2026 06:51
@gwdp gwdp marked this pull request as ready for review May 27, 2026 06:52
@codecov
Copy link
Copy Markdown

codecov Bot commented May 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 57.29%. Comparing base (cfc2c76) to head (c77c7f1).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3794      +/-   ##
==========================================
+ Coverage   57.25%   57.29%   +0.04%     
==========================================
  Files         905      905              
  Lines       39337    39339       +2     
  Branches     8246     8246              
==========================================
+ Hits        22520    22534      +14     
+ Misses      15347    15336      -11     
+ Partials     1470     1469       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown

Subscribed to pull request

File Patterns Mentions
**/* @douglowder

Generated by CodeMention

Comment thread packages/build-tools/src/utils/IosSimulatorUtils.ts Outdated
Comment thread packages/build-tools/src/utils/IosSimulatorUtils.ts Outdated
@github-actions
Copy link
Copy Markdown

✅ Thank you for adding the changelog entry!

@gwdp gwdp merged commit d51ca46 into main May 27, 2026
10 checks passed
@gwdp gwdp deleted the gwdp/fix-ios-simulator-readiness-screenshot branch May 27, 2026 07:23
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.

2 participants