Skip to content

[worker] Update Simulator startup - #4721

Draft
gwdp wants to merge 1 commit into
gwdp/simulator-adoption-helpersfrom
gwdp/prepared-simulator-adoption-20261022
Draft

gwdp wants to merge 1 commit into
gwdp/simulator-adoption-helpersfrom
gwdp/prepared-simulator-adoption-20261022

Conversation

@gwdp

@gwdp gwdp commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

No description provided.

@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 3 times, most recently from e91e8be to f6cb0b4 Compare October 22, 2026 18:26
@gwdp gwdp changed the title [build-tools][worker] Update Simulator startup [worker] Update Simulator startup Oct 22, 2026
@codecov

codecov Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (gwdp/simulator-adoption-helpers@d9287ee). Learn more about missing BASE report.

Additional details and impacted files
@@                        Coverage Diff                         @@
##             gwdp/simulator-adoption-helpers    #4721   +/-   ##
==================================================================
  Coverage                                   ?   75.79%           
==================================================================
  Files                                      ?     1068           
  Lines                                      ?    53155           
  Branches                                   ?    11582           
==================================================================
  Hits                                       ?    40285           
  Misses                                     ?    11885           
  Partials                                   ?      985           

☔ View full report in Codecov by Harness.
📢 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.

@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 4 times, most recently from 3f502e6 to 1f81682 Compare October 22, 2026 21:19
@gwdp
gwdp changed the base branch from main to gwdp/simulator-adoption-helpers October 22, 2026 21:19
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 1f81682 to c2b6355 Compare October 22, 2026 22:00
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 2 times, most recently from 898601a to 0a5906d Compare October 22, 2026 23:59
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 0a5906d to 1e3a842 Compare October 23, 2026 00:39
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 2 times, most recently from 87188b1 to 9307a8c Compare October 23, 2026 01:38
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 9307a8c to 70701f6 Compare October 23, 2026 02:28
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 3 times, most recently from e60001e to 6ff790c Compare October 23, 2026 04:41
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 2 times, most recently from b6589d2 to 41b4a57 Compare October 23, 2026 21:19
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 41b4a57 to 89aad4d Compare October 23, 2026 21:29
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 89aad4d to e696e11 Compare October 23, 2026 22:29
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from e696e11 to 4f91df5 Compare October 24, 2026 03:15
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 2 times, most recently from 2b11fb7 to bc10678 Compare October 24, 2026 04:01
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from bc10678 to f35d7c0 Compare October 24, 2026 04:06
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch 2 times, most recently from 784a161 to e596740 Compare October 24, 2026 05:01
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from e596740 to 5b12930 Compare October 24, 2026 05:47
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 5b12930 to 466a321 Compare October 24, 2026 05:56
@gwdp
gwdp force-pushed the gwdp/prepared-simulator-adoption-20261022 branch from 466a321 to e476e84 Compare October 24, 2026 07:05
@gwdp

This comment has been minimized.

@devin-ai-integration

This comment has been minimized.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment on lines +18 to +22
const { command, args } = resolvePackageExec(
resolveConfiguredPackageManager(env, PackageManager.BUN),
['@expo/simulator-launcher@latest', 'stop']
);
await spawn(command, args, { env, stdio: 'pipe', timeout: 150_000 });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Unpublished launcher blocks macOS jobs

When the worker deploys before the first launcher npm release, maybeStopWarmSimulatorAsync cannot resolve the package. Worker deployment runs on main pushes, while npm publishing requires a version tag. Every macOS job without warm opt-in then fails before setup.

Learn more

The worker starts on macOS for jobs that have not opted into warm Simulator adoption. This code fetches the launcher from npm before creating the build context. Worker deployment happens on main pushes, but npm publishing only happens on version-tag pushes. Because the launcher package was just introduced, the worker can reach production before its first npm publication; the fetch fails and the job never starts.

Example: Merge the launcher and worker changes to main without tagging a release. The worker deploys to a macOS VM, receives an ordinary iOS build, and fails while fetching the unpublished launcher instead of building the app.

Recommended fix: Provide the stop implementation with the deployed worker or install/publish the launcher before deploying workers that require it. Preserve the fail-closed behavior when an active launcher cannot confirm cleanup.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. This is a release prerequisite, not a code change. The worker stop uses the configured package manager runner, Bun by default (bunx @expo/simulator-launcher@latest stop), by design. @expo/simulator-launcher and @expo/vm-tools are not on npm yet. This stack is source-only and is not approved for deployment. A release must publish these packages before any worker that contains this layer deploys. I am leaving this thread open as that merge and deploy gate.

@github-actions

Copy link
Copy Markdown

✅ Thank you for adding a changeset!

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