UIKit Modernization
Guidance for the scene-based life cycle and resizability changes that UIKit requires in the iOS 27 cycle — the highest-impact UIKit change in years, because it gates whether your app launches at all.
When to Use
Use this skill when:
- Building against the iOS 27 SDK and your app uses only a
UIApplicationDelegate(no scene delegate) - Your app "won't launch" after updating to the latest SDK
- Making an iPhone app adapt to arbitrary window sizes (iPhone Mirroring on Mac, iPhone apps on iPad)
- Replacing
UIScreen.main, interface idiom, or orientation checks with adaptive equivalents - Adopting iOS 27 additive APIs — tab bar sidebar/prominent tab, nav bar minimization, menu image visibility, CoreMotion/CoreLocation Body protocols
- Fixing behavior that breaks in iPhone Mirroring — dead custom gestures, failing Face ID prompts, layouts stuck in portrait
- Adding pointer effects (
UIPointerInteraction) or hardware-keyboard commands (UIKeyCommand, the hold-⌘ HUD) to a UIKit app - Planning a UIKit → scene-lifecycle migration
Example Prompts
- "My UIKit app won't launch on iOS 27"
- "How do I adopt the scene-based life cycle?"
- "What replaces
UIScreen.main?" - "How do I make my iPhone app resizable?"
- "How do I set a minimum window size or lock orientation on iOS 27?"
- "Should I use the interface idiom or size classes for layout?"
- "How do I put a tab bar in a sidebar on iPhone? (iOS 27)"
- "My custom pinch gesture stops working in iPhone Mirroring"
- "Why does Face ID fail when my app runs through iPhone Mirroring?"
- "My UIKeyCommand doesn't show in the iPad hold-Command HUD"
- "What goes in UIApplicationSceneManifest for a single-window app?"
- "What should I clean up in sceneDidDisconnect?"
- "How do I open a new window from UIKit code?"
- "How do I let users drag an item out to open it as a new window on iPad?"
- "Cmd-Z in one window undoes edits made in another window"
- "How do I disable Scribble on one text field?"
- "Why was my upload rejected for a missing launch screen?"
- "What's the View Annotations API for Siri?"
What This Skill Provides
- The scene-lifecycle requirement at iOS 27 (apps without a
UISceneDelegateno longer launch) and the migration path - Info.plist configuration – the
UIApplicationSceneManifeststructure, the launch-screen key validated at upload on the 27 SDK (TN3208), and destinations-vs-device-checks - Scene lifecycle edges –
sceneDidDisconnectteardown semantics,UISceneSessionActivationRequestwindow opening, drag-to-create-window (drag items carrying anNSUserActivity, gated onNSUserActivityTypes), per-window undo scoping, per-sceneNSUserActivityrestoration, external-display scene roles, and thedisplayGamut/legibilityWeight/activeAppearancetraits - A don't/do table for replacing
UIScreen.main,screen.scale,screen.bounds, idiom, and orientation with scene/trait/size-class equivalents - The new iOS 27 additive APIs —
prominentTabIdentifier,UITabBarControllerSidebar.preferredPlacement,navigationBarMinimization,UIMenuElement.preferredImageVisibility,deviceMotionBody/headingBody - iPhone Mirroring compatibility – the always-portrait orientation trap, indirect trackpad/mouse input reaching custom gesture recognizers (
UIApplicationSupportsIndirectInputEvents, scroll-type masks), companion Face ID approval on the Mac (iOS 18), and cross-device drag and drop - Desktop-class input –
UIPointerInteractionpointer effects,UIHoverGestureRecognizer,UIKeyCommandwithdiscoverabilityTitlefor the hold-⌘ shortcut HUD, and Scribble (UIScribbleInteraction/UIIndirectScribbleInteraction) for Pencil handwriting - Apple Intelligence touchpoints (menu "Ask Siri", View Annotations, drag-and-drop resource loading)
- How to let Xcode 27's app-modernization agent do the mechanical rewrites
Related
- UIKit-SwiftUI Bridging – embedding SwiftUI in a modernized scene-based UIKit app
- App Composition – app-level integration and UIKit → SwiftUI migration priority
- SwiftUI Layout – size-class-driven adaptive layout, the recommended replacement for idiom/orientation checks