Skip to content

[EPAC-2067]: fix Swift 6 strict concurrency errors in Fetch.swift#598

Merged
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2067-ci-testflight-build-failing-on-main
May 25, 2026
Merged

[EPAC-2067]: fix Swift 6 strict concurrency errors in Fetch.swift#598
riddim-developer-bot[bot] merged 1 commit into
mainfrom
symphony/epac-2067-ci-testflight-build-failing-on-main

Conversation

@riddim-developer-bot

Copy link
Copy Markdown
Contributor

Summary

  • Fixes TestFlight build failure on main caused by Xcode 26.3's strict Swift concurrency checker flagging ISO8601DateFormatter (non-Sendable) being passed as a parameter across async suspension points in the Fetch actor
  • Replaces two locally-created ISO8601DateFormatter instances (voting records + written questions) with a single voteDateFormatter stored property on the actor, eliminating the need to thread the formatter through eight private parsing methods
  • As actor-isolated state, the formatter is serialized by the actor and never crosses isolation boundaries

Why

The CI TestFlight build (run 26414979202) fails at archive with three errors:

Fetch.swift:1121: sending 'isoFormatter' risks causing data races
Fetch.swift:1122: sending 'votes' risks causing data races
Fetch.swift:1130: sending 'isoFormatter' risks causing data races

The loadVotingPage method is async and passes a non-Sendable ISO8601DateFormatter across the await fetchJSONDictionary() suspension point. Xcode 26.3's stricter Swift 6 concurrency checking correctly identifies this as a potential data race.

Verification

  • xcodebuild build passes locally (BUILD SUCCEEDED)
  • swiftlint --strict shows no new violations (45 pre-existing, none in Fetch.swift)

Skipped checks

  • iOS unit tests not run (no logic change — pure parameter-to-property refactor)

Resolves EPAC-2067

Reviewer-Boundary: review-only

Note: issue estimate was missing in Linear.

Replace locally-created ISO8601DateFormatter instances threaded through
parsing methods with a single actor-isolated stored property. The formatter
was being passed as a non-Sendable parameter across async suspension
points, which Xcode 26.3's strict concurrency checker flags as a data
race risk. As actor-isolated state the formatter's access is serialized
by the actor and never crosses isolation boundaries.
@riddim-developer-bot riddim-developer-bot Bot added the autonomous Enrolled in prconverged daemon for automated review and merge label May 25, 2026
@riddim-developer-bot
riddim-developer-bot Bot enabled auto-merge (squash) May 25, 2026 18:58
@riddim-developer-bot
riddim-developer-bot Bot merged commit babf9b4 into main May 25, 2026
5 checks passed
@riddim-developer-bot
riddim-developer-bot Bot deleted the symphony/epac-2067-ci-testflight-build-failing-on-main branch May 25, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autonomous Enrolled in prconverged daemon for automated review and merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants