El mandato de escenas de UIKit: qué deja de iniciarse en iOS 27
La documentación de migración de Apple plantea el requisito más exigente del ciclo de iOS 27 en una sola frase: “A partir de iOS 27, iPadOS 27, Mac Catalyst 27, tvOS 27 y visionOS 27, las apps creadas con el SDK más reciente deben adoptar el ciclo de vida basado en escenas o no se inician.”1 No queda obsoleto, no recibe una advertencia, no se vuelve más lento: no se inicia. La sesión 278 lo dice con la misma claridad: “El ciclo de vida de UIScene ahora es obligatorio al compilar con los SDK más recientes. Sin él, tu aplicación dejará de iniciarse.”2 Cada app de UIKit que sigue ejecutándose con el antiguo ciclo de vida del app delegate tiene plazo hasta que se compile contra el SDK de iOS 27 para migrar, y la fase de advertencia ya lleva años en marcha.
El requisito, enunciado en el minuto 2:36 de la sesión 278.
TL;DR
- Las apps creadas con el SDK de iOS 27 deben usar el ciclo de vida de UIKit basado en escenas o no se inician, en iOS, iPadOS, Mac Catalyst, tvOS y visionOS 27.1 Los binarios existentes compilados con SDK anteriores siguen funcionando; el muro es el SDK contra el que compilas.
- La escalada se realizó por etapas: UIKit comenzó a registrar un mensaje de migración ya en iOS 18.4, y el mensaje cambió en iOS 26. En iOS 27 el registro se convierte en una falla de inicio.1
- Necesitas migrar si se cumple cualquiera de estas condiciones: tu Info.plist no tiene una clave
UIApplicationSceneManifestcon una configuración, o tu app delegate no implementa el método de configuración de escenas.1 - La migración mínima es pequeña: una entrada de manifiesto de escena en la property list, o el método del delegate para configuraciones dinámicas. Admitir varias escenas sigue siendo opcional.1
- Xcode 27 incluye una agent skill de modernización de apps que las convierte al ciclo de vida de escenas, reescribe las comprobaciones de pantalla principal y de orientación, hace preguntas aclaratorias en tareas complejas y deja comentarios para el trabajo que no puede terminar en una sola sesión.2
Un mandato, no una obsolescencia
El ciclo 27 sigue un patrón de podar APIs una versión después de que sus reemplazos maduran: ImageCreator deja de funcionar en iOS 27, y MXMetricManager arrastra una obsolescencia 27.0 la misma semana en que llegó su reemplazo. El requisito de escenas es la entrada más trascendental de ese patrón porque condiciona toda la app, no una función. Una app que nunca toca Image Playground no pierde nada este otoño. Una app que ignora el ciclo de vida de escenas deja de iniciarse el día en que se compila con el nuevo SDK.
El cronograma muestra cuánta pista quemó Apple antes de exigirlo. A partir de iOS 18.4, iPadOS 18.4, Mac Catalyst 18.4, tvOS 18.4 y visionOS 2.4, UIKit registró un mensaje para las apps que no habían migrado, y en las versiones 26 el mensaje cambió.1 Dos versiones de advertencias, y luego se cae el piso. La base conceptual es aún más antigua: la sesión se remonta a la WWDC 2014 para recuperar la idea de Bruce Nilo de que “la rotación de un dispositivo no es más que un cambio animado de los bounds”, y señala que con las ventanas redimensionables de iPad y las apps de iPhone redimensionables, “hoy esta idea es más relevante que nunca.”2
Vale la pena precisar un límite: el requisito obliga a las apps “creadas con el SDK más reciente.”1 Los binarios en producción compilados contra los SDK de iOS 26 o anteriores siguen iniciándose. En el momento en que recompiles con los SDK de Xcode 27 para incorporar cualquier novedad, el ciclo de vida de escenas viene incluido.
¿Realmente necesitas migrar?
La documentación ofrece una prueba de dos condiciones. Migra si falta la clave UIApplicationSceneManifest en tu information property list (o no tiene configuraciones especificadas), o si tu app delegate no implementa el método de configuración de escenas.1 La mayoría de las apps iniciadas después de 2019 ya la superan; desde entonces las plantillas de Xcode generan proyectos basados en escenas. Las apps que el mandato atrapa son las de larga vida cuyo AppDelegate todavía es dueño de la ventana.
La corrección mínima sigue una de dos rutas. La ruta estática agrega una clave UIApplicationSceneManifest con una configuración de escena a la property list, accesible a través de la configuración General del target, bajo “Scene manifest” en Deployment Info.1 La ruta dinámica implementa en su lugar el método delegate de configuración de escenas, para apps que personalizan escenas según las actividades del usuario o manejan distintos roles de escena; el ejemplo de la documentación usa la propiedad de rol de la sesión para determinar qué escena crear.1 Las apps que cargan el view controller raíz desde un storyboard incluyen el nombre del storyboard en el manifiesto de escena, y el sistema configura automáticamente la window scene y el view controller raíz.1
Lo que el mandato no exige son varias escenas. La documentación es explícita en que admitir varias escenas sigue siendo opcional y puede requerir reestructurar tu modelo de datos para que sea específico por escena; te indica considerar si la experiencia del usuario se beneficia antes de habilitarlo.1 Migrar significa trasladar los eventos del ciclo de vida del nivel de la app al nivel de la escena, donde UIApplicationDelegate conserva los eventos a nivel de proceso y el scene delegate asume los específicos de la UI.1 Un detalle que complica la configuración: especifica objetos UIWindowScene en lugar de objetos UIScene simples, y las escenas de CarPlay usan su propio tipo de escena de aplicación basada en plantilla.1
Por qué ahora: todo se redimensiona
El mandato llega en la misma versión que hace universal la redimensionabilidad, y la sesión 278 las presenta como una sola historia. En iOS y macOS 27, las ventanas de iPhone Mirroring en la Mac se redimensionan libremente, y una app exclusiva de iPhone ejecutándose en iPad se vuelve “totalmente redimensionable, como cualquier otra app de iPad.”2 El ciclo de vida de escenas es, en palabras de la sesión, “la base de cualquier app adaptable”: el requisito previo para todo lo demás que la sesión te pide corregir.2
La lista de correcciones es una purga de supuestos centrados en la pantalla. Las referencias a la pantalla principal devuelven información incorrecta en cuanto tu escena vive en una pantalla distinta, así que la sesión recomienda acceder a la pantalla de forma dinámica a través de la window scene de la ventana o, mejor aún, eliminar por completo las referencias a la pantalla: la escala de pantalla se convierte en displayScale de la trait collection, y los bounds de la pantalla se convierten en la geometría efectiva de la window scene o, sencillamente, en el tamaño de la vista circundante.2 El seguimiento automático de traits suaviza la migración: el sistema rastrea qué propiedades de trait se leen dentro de los métodos de layout y dibujo como layoutSubviews y los vuelve a llamar cuando cambia un trait rastreado.2
Dos señales de larga data pierden su significado de layout por completo. El user-interface idiom “ya no es significativo para ningún tipo de decisión de layout”, porque una app de iPhone en iPad se ejecuta totalmente redimensionable mientras sigue reportando el idiom de teléfono; y la orientación de interfaz admitida se convierte en una preferencia que el sistema ignora en entornos redimensionables, con iPhone Mirroring reportando siempre vertical sin importar la relación de aspecto de la ventana.2 El reemplazo de ambas son las size classes. Los juegos reciben una adaptación en lugar de una exención: UIRequiresFullscreen se respeta en iPhone en entornos redimensionables a partir de iOS 27, pero su comportamiento cambia a un redimensionamiento discreto, que transiciona la escena a una configuración de pantalla coincidente en cada cambio de tamaño para que el juego se renderice con calidad total en el espacio disponible.2
Probar toda la matriz se abarató en el mismo ciclo: Device Hub y Xcode Previews incorporan un “modo de redimensionamiento” que arrastra libremente los bordes del dispositivo, y la sesión aconseja verificar después en dispositivos reales con iPhone Mirroring e iPad.2
La migración tiene una agent skill
La sesión cierra reconociendo la magnitud de lo que pide y apuntando a la respuesta de Xcode 27: una nueva skill de modernización de apps con “un profundo conocimiento de las tareas de adaptabilidad” que la sesión describe.2 Cuando se le pide hacer una app más adaptable, el agente convierte las llamadas a la pantalla principal en comprobaciones de trait collection o de scene bounds, con lógica de invalidación donde haga falta, reemplaza las comprobaciones de orientación de interfaz por size classes e “incluso convertirá tu app para que use el ciclo de vida de escenas.”2 Para tareas complejas hace preguntas aclaratorias, y para el trabajo demasiado grande para una sola sesión deja comentarios que marcan lo que queda pendiente.2
La estrategia de distribución coincide con el resto del impulso de skills de Apple en esta WWDC: xcrun agent skills export produce archivos markdown que puedes importar a otras herramientas, el mismo mecanismo que se cubre en la exportación de agent skills de Xcode 27.2 Una migración impuesta por el SDK, acompañada de una skill que realiza la migración, es la expresión más clara hasta ahora de cómo Apple espera que se absorban los cambios incompatibles en la era de los agentes: la plataforma sube el piso, y las herramientas te llevan por encima de él.
Preguntas frecuentes
¿Mi app actual dejará de funcionar en iOS 27?
No por este requisito solo. El mandato se aplica a las apps “creadas con el SDK más reciente.”1 Los binarios ya distribuidos con SDK anteriores siguen iniciándose en iOS 27. La falla ocurre cuando recompilas contra el SDK de iOS 27 sin tener implementado el ciclo de vida basado en escenas.
¿Cómo sé si mi app está afectada?
Verifica dos cosas.1 Si tu Info.plist carece de una clave UIApplicationSceneManifest con una configuración, y tu app delegate no implementa el método de configuración de escenas, estás en el ciclo de vida del app delegate y la app no se inicia cuando se compila con el SDK de iOS 27. UIKit registra un mensaje de migración para las apps afectadas desde iOS 18.4.1
¿Esto me obliga a admitir varias ventanas?
No. Admitir varias escenas sigue siendo opcional, y la documentación de Apple aconseja sopesar si tu experiencia de usuario se beneficia antes de habilitarlo, ya que puede requerir hacer que tu modelo de datos sea específico por escena.1 El mandato solo exige el ciclo de vida basado en escenas en sí: eventos del ciclo de vida manejados por escena en lugar de globalmente.
¿Un agente puede hacer la migración?
Xcode 27 incluye una skill de modernización de apps que, según la sesión, puede convertir una app al ciclo de vida de escenas, reescribir las referencias a la pantalla principal y reemplazar las comprobaciones de orientación por size classes, haciendo preguntas aclaratorias donde el cambio es ambiguo y dejando comentarios para el trabajo sin terminar.2 Se exporta a otras herramientas mediante xcrun agent skills export.2 Trata su salida como cualquier migración escrita por un agente: revisa el diff, sobre todo en torno a la restauración de estado y la configuración de la ventana.
El mandato completa un tema de este ciclo: Apple imponiendo migraciones en el límite de la versión 27 en lugar de sugerirlas, después de que la discontinuación de ImageCreator mostrara la misma escalada por etapas en una superficie más pequeña. La respuesta de la agent skill conecta con el arco más amplio de las skills en Xcode 27 incluye agent skills que puedes exportar a cualquier herramienta. El centro completo de la serie es la serie del ecosistema de Apple.
Referencias
-
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). ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩