swiftui-whats-new-27
New SwiftUI APIs, behaviors, and deprecations introduced in the 2027 OS releases (iOS 27, macOS 27, watchOS 27, tvOS 27, visionOS 27). Use when a SwiftUI view using @State fails to compile with \"used before being initialized\", \"invalid redeclaration of synthesized property\", or \"extraneous argument label\" errors after an SDK update (@State migrated from a property wrapper to a macro in SDK 27; the obvious fix of reordering init assignments is WRONG and produces incorrect runtime behavior; you MUST consult this skill's references before answering); when @ViewBuilder or @ContentBuilder code hits ambiguous overloads in overlay/background or type-check performance regressions after an SDK update; when the user asks what's new in SwiftUI (generally, or for a specific 2027 platform); when adding drag-to-reorder to any container (List, LazyVStack, LazyVGrid, stacks, or custom layouts) via reorderable()/reorderContainer, including the drag-and-drop that integrates with it (dragContainer, dropDestination), or combining items by dropping one onto another; when working with AsyncImage loading and caching (images reloading when scrolling back, the default HTTP cache, a per-request cache policy via AsyncImage(request:)/URLRequest, or applying a custom URLSession with asyncImageURLSession); when adding swipe actions to rows (swipe-to-delete or other swipe actions) in a ScrollView, LazyVStack, LazyVGrid, or stack and not just List, via swipeActions()/swipeActionsContainer(); when working with toolbars, such as controlling which items stay visible versus move into the overflow menu when space is constrained or buttons get cut off (visibilityPriority, ToolbarOverflowMenu), pinning an item so it never overflows (topBarPinnedTrailing), minimizing the navigation bar or toolbar on scroll (toolbarMinimizeBehavior), generating toolbar items with ForEach, or hiding the status bar via the statusBar toolbar placement; when presenting a confirmation dialog or alert from an optional item binding (the sheet(item:) shape) so it shows when the bound value becomes non-nil and passes the unwrapped item into the actions and message closures; when building or migrating a document-based app (including read-only document viewers), reading or writing files through DocumentGroup, optimizing autosave performance for package documents, accessing the document's file URL directly (for example to hand to AVFoundation, PDFKit, Core Image, or any C library that takes a path), reporting progress from a save or load, or migrating from FileDocument / ReferenceFileDocument; or when resolving other SDK 27.0 source incompatibilities and deprecation warnings (for example statusBarHidden on visionOS).
Details
- Path
- .claude/skills/swiftui-whats-new-27/SKILL.md