← ClaudeAtlas

mir-mobile-ioslisted

Make It Right (iOS module). Swift 6 + SwiftUI + Swift Concurrency mechanical footguns on Apple platforms — the ones the platform-agnostic mobile gates omit: what Swift 6 language mode rejects that Swift 5 allowed (global mutable state, non-Sendable values crossing isolation boundaries), Xcode 26's MainActor-by-default plus nonisolated(nonsending)/@concurrent silently keeping async work ON the main actor, Task lifetime (a Task {} in a view is NOT cancelled on disappear — only .task is), the SwiftUI ForEach(id: \.self) bug that reuses @State across rows, @State vs @StateObject vs @ObservedObject, BGTaskScheduler's non-guarantee, and iOS security (Keychain accessibility classes, PrivacyInfo.xcprivacy required-reason APIs, App Groups, universal links vs URL-scheme hijacking). Chains: mir-mobile → this. TRIGGER for an Apple-platform app in Swift/SwiftUI/UIKit — iOS, iPadOS, watchOS, tvOS, visionOS — views, view models, concurrency, background work, Keychain, push, deep links, App Store submission. In React Native
anantbhandarkar/make-it-right · ★ 15 · AI & Automation · score 81
Install: claude install-skill anantbhandarkar/make-it-right
# /mir-mobile-ios · Make It Right (iOS) Platform module. `mir-mobile` decides **what is correct** on any mobile platform (the 8 gates, the 3 invariants, store deadlines); **this** carries Apple SDK mechanics. Load order: `mir-mobile` → `mir-mobile-ios`. Reach for it at Gate 5 (design mechanics), Gate 6 (implementation), Gate 7 (review). **Stack assumed, versions verified 13 Aug 2026:** Xcode **26.6** stable (Swift **6.3**, needs macOS Tahoe 26.2+) · Xcode 27 **beta** (Swift 6.4, iOS 27 SDK) — don't put a beta toolchain in a Gate 5 design without saying so · iOS **26** shipping, iOS 27 in public beta since Jul 2026, GA expected ~Sept 2026 · Swift 6.3 released 24 Mar 2026 · Swift 5 language mode still compiles. **Submission floor: Xcode 26 + the iOS 26 SDK, in force since 28 Apr 2026**, no announced grace period. Rebuilding against the iOS 26 SDK opts native controls into the Liquid Glass appearance — satisfying the floor is a **UI change**, not a no-op. See `mir-mobile/references/store-compliance.md`. --- ## Swift Concurrency ### 1. What the Swift 6 language mode rejects that Swift 5 allowed Swift 5 mode reports these as warnings (or nothing). Swift 6 mode makes them errors. This is the single largest source of "it built last year" failures. | Error you get | Why | What to write instead | |---|---|---| | `global variable 'x' is not concurrency-safe because it is non-isolated global shared mutable state` | `static var` / global `var` is reachable from every isolation do