UIKit의 Scene 의무화: iOS 27에서 실행되지 않는 앱
Apple의 마이그레이션 문서는 iOS 27 사이클에서 가장 어려운 요구 사항을 한 문장으로 못 박습니다. “iOS 27, iPadOS 27, Mac Catalyst 27, tvOS 27, visionOS 27부터, 최신 SDK로 빌드한 앱은 scene 기반 생명 주기를 채택해야 하며 그렇지 않으면 실행되지 않습니다.”1 더 이상 사용되지 않는다(deprecated)거나, 경고를 받는다거나, 느려지는 것이 아닙니다. 실행 자체가 되지 않습니다. 세션 278도 똑같이 명확하게 말합니다. “이제 최신 SDK로 빌드할 때는 UIScene 생명 주기가 필수입니다. 이것이 없으면 애플리케이션이 더 이상 실행되지 않습니다.”2 여전히 기존 app-delegate 생명 주기로 동작하는 모든 UIKit 앱은 iOS 27 SDK를 기준으로 빌드하기 전까지 마이그레이션을 끝내야 하며, 경고 단계는 이미 수년째 진행되어 왔습니다.
세션 278의 2:36에서 언급된 요구 사항입니다.
핵심 요약
- iOS 27 SDK로 빌드한 앱은 iOS, iPadOS, Mac Catalyst, tvOS, visionOS 27 전반에 걸쳐 UIKit의 scene 기반 생명 주기를 사용해야 하며, 그렇지 않으면 실행되지 않습니다.1 이전 SDK로 빌드된 기존 바이너리는 계속 동작합니다. 벽이 되는 것은 빌드 대상 SDK입니다.
- 단계적으로 강화되었습니다. UIKit은 이미 iOS 18.4 시절부터 마이그레이션 메시지를 로그로 남기기 시작했고, 26 릴리스에서 그 메시지가 바뀌었습니다. iOS 27에서는 이 로그가 실행 실패로 바뀝니다.1
- 다음 두 조건 중 하나라도 해당하면 마이그레이션이 필요합니다. Info.plist에 설정이 포함된
UIApplicationSceneManifest키가 없거나, app delegate가 scene 구성 메서드를 구현하지 않은 경우입니다.1 - 최소한의 마이그레이션은 작습니다. property list에 scene manifest 항목을 추가하거나, 동적 구성을 위한 delegate 메서드를 추가하면 됩니다. 여러 scene 지원은 선택 사항으로 남습니다.1
- Xcode 27에는 앱을 scene 생명 주기로 변환하고, 메인 화면 및 방향(orientation) 검사를 재작성하며, 복잡한 작업에 대해 명확화 질문을 던지고, 한 세션에서 끝내지 못한 작업에 대해 주석을 남기는 앱 현대화 agent skill이 함께 제공됩니다.2
의무화이지 deprecation이 아닙니다
27 사이클에는 대체 API가 성숙하고 한 릴리스 뒤에 기존 API를 정리하는 패턴이 있습니다. ImageCreator는 iOS 27에서 동작을 멈추고, MXMetricManager는 그 대체 API가 출시된 바로 그 주에 27.0 deprecation을 동반합니다. scene 요구 사항은 이 패턴에서 가장 영향이 큰 항목인데, 하나의 기능이 아니라 앱 전체를 가로막기 때문입니다. Image Playground를 한 번도 건드리지 않는 앱은 이번 가을에 잃을 것이 없습니다. scene 생명 주기를 무시하는 앱은 새 SDK로 빌드하는 날 실행이 멈춥니다.
이 일정은 Apple이 강제하기 전에 얼마나 긴 유예 기간을 두었는지 보여줍니다. iOS 18.4, iPadOS 18.4, Mac Catalyst 18.4, tvOS 18.4, visionOS 2.4부터 UIKit은 마이그레이션하지 않은 앱에 대해 메시지를 로그로 남겼고, 26 릴리스에서 그 메시지가 바뀌었습니다.1 두 번의 릴리스에 걸친 경고, 그리고 바닥이 꺼집니다. 개념적 토대는 더 오래되었습니다. 이 세션은 “기기 회전은 애니메이션이 적용된 bounds 변경에 불과하다”는 Bruce Nilo의 정의를 WWDC 2014까지 거슬러 올라가 인용하며, 크기 조절이 가능한 iPad 윈도우와 크기 조절이 가능한 iPhone 앱이 등장한 지금 “오늘날 이 통찰은 그 어느 때보다 더 의미가 있다”고 짚습니다.2
정확히 말해 둘 만한 경계가 하나 있습니다. 이 요구 사항은 “최신 SDK로 빌드한” 앱을 구속합니다.1 iOS 26 이하 SDK를 기준으로 빌드되어 출시된 바이너리는 계속 실행됩니다. 새로운 기능을 가져오려고 Xcode 27의 SDK로 다시 빌드하는 순간, scene 생명 주기가 함께 따라옵니다.
정말로 마이그레이션이 필요한가요?
문서는 두 조건짜리 테스트를 제시합니다. information property list에 UIApplicationSceneManifest 키가 없거나(또는 지정된 구성이 없거나), app delegate가 scene 구성 메서드를 구현하지 않는다면 마이그레이션하세요.1 2019년 이후에 시작한 대부분의 앱은 이미 이 테스트를 통과합니다. 그때부터 Xcode 템플릿이 scene 기반 프로젝트를 생성해 왔기 때문입니다. 이 의무화에 걸리는 앱은, 여전히 AppDelegate가 윈도우를 소유하는 오래된 앱들입니다.
최소한의 수정에는 두 가지 경로가 있습니다. 정적 경로는 property list에 scene 구성을 포함한 UIApplicationSceneManifest 키를 추가하는 것으로, target의 General 설정에서 Deployment Info 아래 “Scene manifest”를 통해 접근할 수 있습니다.1 동적 경로는 대신 scene 구성 delegate 메서드를 구현하는 것으로, 사용자 활동을 기준으로 scene을 커스터마이즈하거나 서로 다른 scene 역할을 처리하는 앱을 위한 것입니다. 문서의 예제는 세션의 role 속성을 사용해 어떤 scene을 생성할지 결정합니다.1 storyboard에서 루트 뷰 컨트롤러를 로드하는 앱은 scene manifest에 storyboard 이름을 포함하며, 시스템이 윈도우 scene과 루트 뷰 컨트롤러를 자동으로 구성합니다.1
이 의무화가 요구하지 않는 것은 여러 개의 scene입니다. 문서는 여러 scene 지원이 선택 사항으로 남으며 데이터 모델을 scene별로 만들기 위해 재구성이 필요할 수 있다고 명확히 밝히고, 활성화하기 전에 사용자 경험에 도움이 되는지 따져 보라고 말합니다.1 마이그레이션이란 생명 주기 이벤트를 앱 수준에서 scene 수준으로 옮기는 것을 의미하며, 여기서 UIApplicationDelegate는 프로세스 수준의 이벤트를 유지하고 scene delegate가 UI 관련 이벤트를 맡습니다.1 구성에서 발목을 잡는 세부 사항이 하나 있습니다. 일반 UIScene 객체가 아니라 UIWindowScene 객체를 지정해야 하며, CarPlay scene은 자체적인 template-application scene 타입을 사용합니다.1
왜 지금인가: 모든 것이 크기 조절됩니다
이 의무화는 크기 조절을 보편화하는 바로 그 릴리스와 함께 도착하며, 세션 278은 이 둘을 하나의 이야기로 제시합니다. iOS 및 macOS 27에서는 Mac의 iPhone Mirroring 윈도우를 자유롭게 크기 조절할 수 있고, iPad에서 실행되는 iPhone 전용 앱은 “다른 여느 iPad 앱과 마찬가지로 완전히 크기 조절이 가능”해집니다.2 scene 생명 주기는 세션의 표현을 빌리자면 “모든 적응형 앱의 토대”이며, 세션이 고치라고 요구하는 다른 모든 것의 전제 조건입니다.2
수정 목록은 화면 중심의 가정을 걷어내는 작업입니다. 메인 화면에 대한 참조는 scene이 다른 디스플레이에 자리 잡는 순간 잘못된 정보를 반환합니다. 그래서 세션은 윈도우의 윈도우 scene을 통해 화면에 동적으로 접근하거나, 더 나아가 화면 참조를 아예 제거하라고 말합니다. 화면 스케일은 trait collection의 displayScale이 되고, 화면 bounds는 윈도우 scene의 실효 geometry 또는 단순히 주변 뷰의 크기가 됩니다.2 자동 trait 추적은 마이그레이션을 한결 수월하게 만듭니다. 시스템은 layoutSubviews 같은 레이아웃 및 그리기 메서드 안에서 어떤 trait 속성을 읽는지 추적하고, 추적된 trait이 변경되면 그 메서드를 다시 호출합니다.2
오래된 두 가지 신호는 레이아웃에서의 의미를 완전히 잃습니다. user-interface idiom은 “그 어떤 레이아웃 결정에도 더 이상 의미가 없습니다.” iPad에서 실행되는 iPhone 앱이 완전히 크기 조절이 가능하면서도 여전히 phone idiom을 보고하기 때문입니다. 그리고 지원하는 인터페이스 방향은 크기 조절 가능한 환경에서 시스템이 무시하는 선호 값이 되며, iPhone Mirroring은 윈도우의 종횡비와 무관하게 항상 세로(portrait)를 보고합니다.2 둘 다의 대체재는 size class입니다. 게임은 면제가 아니라 별도의 조치를 받습니다. UIRequiresFullscreen은 iOS 27부터 크기 조절 가능한 환경의 iPhone에서 존중되지만, 그 동작은 이산적 크기 조절(discrete resizing)로 바뀝니다. 크기를 조절할 때마다 scene을 일치하는 화면 구성으로 전환시켜, 게임이 가용한 공간에서 최고 품질로 렌더링되도록 합니다.2
전체 조합을 테스트하는 비용도 같은 사이클에서 낮아졌습니다. Device Hub와 Xcode Previews에 기기 가장자리를 자유롭게 끌 수 있는 “크기 조절 모드 진입”이 추가되었으며, 세션은 그 뒤에 iPhone Mirroring과 iPad의 실제 기기에서 점검할 것을 권합니다.2
마이그레이션에는 agent skill이 있습니다
세션은 요구 사항의 규모를 인정하며 마무리하고, Xcode 27의 해답을 가리킵니다. 세션이 설명하는 “적응성 작업에 대한 깊은 이해”를 갖춘 새로운 앱 현대화 skill입니다.2 앱을 더 적응성 있게 만들어 달라고 요청하면, 이 agent는 메인 화면 호출을 trait-collection 또는 scene-bounds 검사로 변환하고 필요한 곳에 무효화(invalidation) 로직을 넣으며, 인터페이스 방향 검사를 size class로 교체하고, “여러분의 앱을 scene 생명 주기를 사용하도록 변환하기까지 합니다.”2 복잡한 작업에 대해서는 명확화 질문을 던지고, 한 세션에서 처리하기에 너무 큰 작업에 대해서는 남은 부분을 표시하는 주석을 남깁니다.2
배포 방식은 이번 WWDC에서 Apple이 밀고 있는 다른 skill들과 동일합니다. xcrun agent skills export는 다른 도구로 가져올 수 있는 markdown 파일을 생성하며, 이는 Xcode 27의 agent skills export에서 다룬 것과 같은 메커니즘입니다.2 SDK가 강제하는 마이그레이션을, 그 마이그레이션을 수행하는 skill과 짝지은 것은, agent 시대에 Apple이 breaking change를 어떻게 흡수시키려 하는지를 지금까지 가장 분명하게 보여 줍니다. 플랫폼이 바닥을 끌어올리고, 도구가 여러분을 그 위로 넘겨 줍니다.
FAQ
기존 앱이 iOS 27에서 동작을 멈추나요?
이 요구 사항만으로는 아닙니다. 이 의무화는 “최신 SDK로 빌드한” 앱에 적용됩니다.1 이미 이전 SDK로 출시된 바이너리는 iOS 27에서도 계속 실행됩니다. 실패는 scene 기반 생명 주기를 갖추지 않은 채 iOS 27 SDK를 기준으로 다시 빌드할 때 발생합니다.
내 앱이 영향을 받는지 어떻게 알 수 있나요?
두 가지를 확인하세요.1 Info.plist에 설정이 포함된 UIApplicationSceneManifest 키가 없고, app delegate가 scene 구성 메서드를 구현하지 않는다면, 여러분의 앱은 app-delegate 생명 주기에 있으며 iOS 27 SDK로 빌드하면 실행에 실패합니다. UIKit은 iOS 18.4부터 영향을 받는 앱에 대해 마이그레이션 메시지를 로그로 남겨 왔습니다.1
이것 때문에 여러 윈도우를 지원해야 하나요?
아닙니다. 여러 scene 지원은 선택 사항으로 남으며, 데이터 모델을 scene별로 만들어야 할 수 있으므로 Apple 문서는 활성화하기 전에 사용자 경험에 도움이 되는지 따져 보라고 권합니다.1 이 의무화는 scene 기반 생명 주기 그 자체만을 요구합니다. 즉, 생명 주기 이벤트를 전역이 아니라 scene별로 처리하는 것입니다.
agent가 마이그레이션을 해 줄 수 있나요?
Xcode 27에는 앱을 scene 생명 주기로 변환하고, 메인 화면 참조를 재작성하며, 방향 검사를 size class로 교체할 수 있다고 세션이 밝힌 앱 현대화 skill이 함께 제공됩니다. 변경이 모호한 곳에서는 명확화 질문을 던지고, 끝내지 못한 작업에 대해서는 주석을 남깁니다.2 이 skill은 xcrun agent skills export를 통해 다른 도구로 내보냅니다.2 그 결과물은 다른 모든 agent가 작성한 마이그레이션과 동일하게 다루세요. 특히 상태 복원과 윈도우 설정 부분을 중심으로 diff를 검토하세요.
이 의무화는 이번 사이클의 한 가지 주제를 완성합니다. ImageCreator의 단종이 더 작은 표면에서 동일한 단계적 강화를 보여 준 데 이어, Apple이 27 경계에서 마이그레이션을 권하는 데 그치지 않고 강제하는 것입니다. agent-skill 해답은 Xcode 27, 어디서나 내보낼 수 있는 Agent Skills 출시의 더 넓은 skill 흐름과 이어집니다. 전체 시리즈 허브는 Apple Ecosystem Series입니다.
참고 문헌
-
Apple, Transitioning to the UIKit scene-based life cycle, Apple Developer Documentation. Source for the requirement (“Beginning in iOS 27, iPadOS 27, Mac Catalyst 27, tvOS 27, and visionOS 27, apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch”), the staged warnings (UIKit logging a migration message starting in iOS 18.4, iPadOS 18.4, Mac Catalyst 18.4, tvOS 18.4, and visionOS 2.4, with the message changing in the 26 releases), the two-condition migration test (missing
UIApplicationSceneManifestkey or no scene-configuration delegate method), the property-list and dynamic-configuration migration routes including the General settings “Scene manifest” location and the session-role example, the storyboard-name note with automatic window-scene configuration, multiple-scene support remaining optional with the data-model caution, the app-versus-scene split of life-cycle responsibilities, the guidance to specifyUIWindowSceneobjects rather thanUISceneobjects, and the CarPlay scene type. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC 2026 session 278, Modernize your UIKit app. Official transcript; presented by Michael Ochs, engineering manager on the UI Frameworks team. Source for the requirement statement (“UIScene lifecycle is now required when building with the latest SDKs. Without it, your application will no longer launch”), iPhone Mirroring resizing and iPhone-only apps running fully resizable on iPad, the scene life cycle as “the basis for any adaptive app,” the main-screen guidance (dynamic access through the window scene,
displayScalevia the trait collection, effective geometry and surrounding-view size over screen bounds), automatic trait tracking across layout and drawing methods, the idiom and interface-orientation guidance including the always-portrait behavior in iPhone Mirroring and the move to size classes, theUIRequiresFullscreendiscrete-resizing behavior for games, the Bruce Nilo WWDC 2014 quote (“a device rotation is only an animated bounds change”) and its framing, the Device Hub and Xcode Previews resize mode, and the app modernization skill (deep understanding of the adaptivity tasks, converting main-screen calls with invalidation logic, replacing orientation checks with size classes, converting apps to the scene life cycle, clarifying questions, progress comments, and export throughxcrun agent skills export). ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩