Skip to content

ci: build release runners with Xcode 26.3 (DRO-3369) - #42

Merged
Timo972 merged 1 commit into
masterfrom
timo/dro-3369-release-builds-xcode-26.3
Oct 15, 2026
Merged

Timo972 merged 1 commit into
masterfrom
timo/dro-3369-release-builds-xcode-26.3

Conversation

@Timo972

@Timo972 Timo972 commented Oct 15, 2026 •

Copy link
Copy Markdown

Problem

Release assets (prebuild.yml → GitHub release zips that mobilerun-ios setup installs; prebuild-r2.yml → signed WDA on R2) are built with Xcode 16.4 / iOS 18.4 SDK. On iOS 26, the first broadcast start after a fresh runner launch fails with that build. The confirmation tap only lands at ~6.5 s and starts nothing, replayd never sets up a session, and the start times out with 408. The Control Center broadcast sheet is left open, which then also blocks the portal's Auto-Lock normalization.

Evidence

Same phone (…14DA001C, iPhone 15, iOS 26.6.1), same cold-start harness (stop broadcast + portal, restart portal, judge by WDA's broadcast/start: extension connect… syslog line):

build SDK min iOS cold starts
release v1.3.3, Xcode 16.4 (CI) iphoneos18.4 13.0 0/6 (tap ~6.5 s → 408)
same commit 4f5b9a75, Xcode 27.0 (local) iphoneos27.0 17.0 2/2
same source, Xcode 26.3 (CI, run 38741836143) iphoneos26.2 13.0 4/4 (tap 1.88–1.98 s)

No code change was needed: a diagnostic build showed every confirm-button query answering in 10–70 ms. The variable is the SDK the runner is linked against.

Change

XCODE_VERSION: "16.4" → "26.3" in prebuild.yml and prebuild-r2.yml. publish.js.yml (upstream npm publish) and the upstream wda-tests.yml min/max matrix are left as they are.

Open before ready

Linear: DRO-3369

🤖 Generated with Claude Code

Release assets were built with Xcode 16.4 against the iOS 18.4 SDK. On
iOS 26 that runner's first broadcast start after a launch fails: the
confirmation tap lands only after ~6.5 s and starts nothing, so the
start times out with 408 and leaves the broadcast sheet open (DRO-3369).

An Xcode 26.3 build of the same source (iOS 26.2 SDK, deployment target
still 13.0) connected 4/4 cold starts on the same phone; the 16.4 build
connected 0/6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Timo972

Timo972 commented Oct 15, 2026

Copy link
Copy Markdown
Author

Where the 26.3 / 26.4 boundary comes from

Upstream Appium, not us: publish.js.yml carries the note from appium#1136 (Kazuaki Matsuo, merged 2026-05-13), which came out of appium#1135 "Xcode 26.4+ fail to start WDA for older iOS versions such as iOS 15":

  • Xcode 26.4 overrode MinimumOSVersion=15.8 in the XCTest-related built modules although the project says lower. WDA then failed to start on iOS 15 (15.5 in the report).
  • Maintainer: "Xcode 26.3 had no issue on my local." They also link an Apple forum thread (developer.apple.com/forums/thread/820586) suggesting iOS 16 may be affected by 26.4 as well.
  • Not established upstream: whether iOS 16–18 are fine with 26.4. iOS 26 worked with 26.4.

So 26.3 is the newest Xcode with a maintainer's positive report on old iOS. That is one local check, not a CI-verified matrix.

iOS 13: not supported, before or after this PR

Minimum OS of every bundle in the built runner, v1.3.3 release (Xcode 16.4) vs the 26.3 test build (run 38741836143). The two are identical:

bundle v1.3.3 / Xcode 16.4 Xcode 26.3
WebDriverAgentRunner-Runner.app (Xcode's generated XCTRunner shell) 13.0 13.0
WebDriverAgentRunner.xctest (the test bundle) 15.0 15.0
WebDriverAgentLib.framework 15.0 15.0
WebDriverAgentBroadcast.appex 15.0 15.0

(Mach-O LC_BUILD_VERSION minos agrees with the plists.) The 15.0 comes from upstream appium#1152 "bump the deployment target to 15" (2026-06-08), already in our fork. The effective minimum is iOS 15 today, and this PR doesn't change it. The 13.0 on the host app is cosmetic: the actual WDA code can't load below 15.

What 26.3 does not do (unlike the 26.4 report): it doesn't raise the XCTest modules to 15.8; they stay at 15.0.

Still open before ready

  • On-device check on iOS 15 and/or 16 with the 26.3 build (none on the BYOD host; see DRO-3114/3115 for the earlier iOS 16 blocker). Alternatively, accept upstream's local iOS 15 check as sufficient.

@Timo972
Timo972 requested a review from niko-droidrun October 15, 2026 14:00
@Timo972
Timo972 marked this pull request as ready for review October 15, 2026 14:04
@Timo972
Timo972 merged commit 36d5167 into master Oct 15, 2026
5 checks passed
@Timo972
Timo972 deleted the timo/dro-3369-release-builds-xcode-26.3 branch October 15, 2026 15:31
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