Skip to content

iOS 26/27 deprecations across the app, plus a Sendable warning in SidebarWheelLayout #164

Description

@jjalangtry

Surfaced by the 0.9.3 production archive (Xcode Cloud build #95). None of these
failed the build — the single error was HorizonMonthView.swift:203, fixed in
#163 — but the deployment target is iOS 27 and these are accumulating unread in
the log, which is how the one real error came to be buried in the first place.

Deprecated APIs

File API Deprecated Replacement
CaptureConsentCoordinators.swift installTap(onBus:bufferSize:format:block:) iOS 27.0 (none stated)
CaptureConsentCoordinators.swift CLGeocoder iOS 26.0 MapKit
CaptureConsentCoordinators.swift reverseGeocodeLocation iOS 26.0 MKReverseGeocodingRequest
CaptureConsentCoordinators.swift cancelGeocode() iOS 26.0 MKGeocodingRequest
CaptureConsentCoordinators.swift requestRecordPermission iOS 17.0 AVAudioApplication.requestRecordPermission(completionHandler:)
WebAuthenticationCoordinator.swift init() iOS 26.0 init(windowScene:)
BriefDocumentView.swift Text + iOS 26.0 String interpolation: Text("Hello \(name)")
DailyBriefMasthead.swift Text + iOS 26.0 String interpolation

requestRecordPermission is the oldest at iOS 17 and the geocoding cluster is
four calls in one file, so CaptureConsentCoordinators.swift is the obvious
first pass.

Sendable warning

Stored property 'onMeasure' of 'Sendable'-conforming struct 'SidebarWheelLayout'
has non-Sendable type '(Array<CGFloat>, CGFloat) -> ()'

Mine, from #158. Layout conforms to Sendable, and the measurement callback is
a plain closure. A warning under Swift 6 with SWIFT_STRICT_CONCURRENCY: complete,
but it will become an error. Marking it @Sendable is not a one-word change —
the closure captures the @MainActor model and calls an isolated method — so it
wants a considered fix rather than a release-night patch.

Worth considering

The archive log is now noisy enough that a genuine compile error was
indistinguishable from routine deprecation chatter in the failure digest
wait-for-xcode-cloud.mjs prints. Either clearing these or having that digest
separate error: from warning: would have made the 0.9.3 failure obvious at a
glance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions