A obrigatoriedade de scenes do UIKit: o que não inicia no iOS 27
A documentação de migração da Apple enuncia a exigência mais difícil do ciclo do iOS 27 em uma única frase: “A partir do iOS 27, iPadOS 27, Mac Catalyst 27, tvOS 27 e visionOS 27, apps compilados com o SDK mais recente precisam adotar o ciclo de vida baseado em scenes ou não iniciam.”1 Não depreciados, não avisados, não mais lentos: não iniciam. A sessão 278 diz isso com a mesma clareza: “O ciclo de vida de UIScene agora é obrigatório ao compilar com os SDKs mais recentes. Sem ele, sua aplicação não vai mais iniciar.”2 Todo app UIKit que ainda roda no antigo ciclo de vida baseado em app delegate tem até compilar contra o SDK do iOS 27 para migrar, e a fase de aviso já dura anos.
A exigência, declarada aos 2:36 na sessão 278.
TL;DR
- Apps compilados com o SDK do iOS 27 precisam usar o ciclo de vida baseado em scenes do UIKit ou não iniciam, em iOS, iPadOS, Mac Catalyst, tvOS e visionOS 27.1 Binários existentes compilados com SDKs mais antigos continuam funcionando; a barreira é o SDK contra o qual você compila.
- A escalada foi gradual: o UIKit começou a registrar uma mensagem de migração lá no iOS 18.4, e a mensagem mudou no iOS 26. O iOS 27 é onde o log vira uma falha de inicialização.1
- Você precisa migrar se qualquer uma das condições for verdadeira: seu Info.plist não tem a chave
UIApplicationSceneManifestcom uma configuração, ou seu app delegate não implementa o método de scene-configuration.1 - A migração mínima é pequena: uma entrada de scene manifest na property list, ou o método delegate para configurações dinâmicas. O suporte a múltiplas scenes continua opcional.1
- O Xcode 27 vem com uma agent skill de modernização de apps que converte apps para o ciclo de vida de scenes, reescreve verificações de main screen e de orientação, faz perguntas de esclarecimento em tarefas complexas e deixa comentários no trabalho que não consegue concluir em uma sessão.2
Uma obrigatoriedade, não uma depreciação
O ciclo do 27 tem um padrão de podar APIs um lançamento depois de seus substitutos amadurecerem: o ImageCreator para de funcionar no iOS 27, e o MXMetricManager traz uma depreciação 27.0 na mesma semana em que seu substituto foi lançado. A exigência de scenes é a entrada mais consequente desse padrão porque ela bloqueia o app inteiro, não um recurso. Um app que nunca toca no Image Playground não perde nada neste outono. Um app que ignora o ciclo de vida de scenes para de iniciar no dia em que compilar com o novo SDK.
O cronograma mostra quanto tempo de margem a Apple gastou antes de impor. A partir do iOS 18.4, iPadOS 18.4, Mac Catalyst 18.4, tvOS 18.4 e visionOS 2.4, o UIKit registrava uma mensagem para apps que não tinham migrado, e nos lançamentos 26 a mensagem mudou.1 Dois lançamentos de avisos, e então o piso cai. A base conceitual é ainda mais antiga: a sessão volta à WWDC 2014 para a formulação de Bruce Nilo de que “uma rotação de dispositivo é apenas uma mudança animada de bounds”, e observa que com janelas redimensionáveis no iPad e apps redimensionáveis no iPhone, “hoje essa percepção é mais relevante do que nunca.”2
Vale enunciar com precisão um limite: a exigência vincula apps “compilados com o SDK mais recente.”1 Binários em produção compilados contra os SDKs do iOS 26 ou anteriores continuam iniciando. No momento em que você recompilar com os SDKs do Xcode 27 para incorporar qualquer novidade, o ciclo de vida de scenes vem junto.
Você realmente precisa migrar?
A documentação dá um teste de duas condições. Migre se a chave UIApplicationSceneManifest estiver ausente da sua information property list (ou não tiver configurações especificadas), ou se seu app delegate não implementar o método de scene-configuration.1 A maioria dos apps iniciados depois de 2019 já passa; os templates do Xcode geram projetos baseados em scenes desde então. Os apps pegos pela obrigatoriedade são os de longa vida, cujo AppDelegate ainda é dono da window.
A correção mínima segue uma de duas rotas. A rota estática adiciona uma chave UIApplicationSceneManifest com uma scene configuration à property list, acessível pelas configurações General do target em “Scene manifest”, dentro de Deployment Info.1 A rota dinâmica implementa o método delegate de scene-configuration, para apps que personalizam scenes com base em atividades do usuário ou lidam com diferentes papéis de scene; o exemplo da documentação usa a propriedade role da session para determinar qual scene criar.1 Apps que carregam o root view controller a partir de um storyboard incluem o nome do storyboard no scene manifest, e o sistema configura a window scene e o root view controller automaticamente.1
O que a obrigatoriedade não exige são múltiplas scenes. A documentação é explícita ao dizer que o suporte a múltiplas scenes continua opcional e pode exigir reestruturar seu modelo de dados para ser específico por scene; ela diz para você considerar se a experiência do usuário se beneficia antes de habilitar isso.1 Migrar significa mover eventos do ciclo de vida do nível do app para o nível da scene, onde o UIApplicationDelegate mantém os eventos de nível de processo e o scene delegate assume os específicos de UI.1 Um detalhe que atrapalha na configuração: especifique objetos UIWindowScene em vez de objetos UIScene simples, e scenes de CarPlay usam seu próprio tipo de scene template-application.1
Por que agora: tudo redimensiona
A obrigatoriedade chega no mesmo lançamento que torna a redimensionabilidade universal, e a sessão 278 as apresenta como uma história só. No iOS e macOS 27, janelas de iPhone Mirroring no Mac redimensionam livremente, e um app só de iPhone rodando no iPad se torna “totalmente redimensionável como qualquer outro app de iPad.”2 O ciclo de vida de scenes é, nas palavras da sessão, “a base de qualquer app adaptável”: o pré-requisito para tudo o mais que a sessão pede para você corrigir.2
A lista de correções é uma limpeza de pressupostos centrados na tela. Referências à main screen retornam informações incorretas assim que sua scene passa a viver em um display diferente, então a sessão diz para acessar a tela dinamicamente pela window scene da window, ou melhor, remover as referências de tela por completo: a escala da tela vira o displayScale da trait collection, e os bounds da tela viram a geometria efetiva da window scene ou simplesmente o tamanho da view ao redor.2 O rastreamento automático de traits suaviza a migração: o sistema rastreia quais propriedades de trait são lidas dentro de métodos de layout e de desenho como layoutSubviews e os chama de novo quando uma trait rastreada muda.2
Dois sinais de longa data perdem completamente seu significado de layout. O idiom da interface do usuário “não é mais relevante para nenhum tipo de decisão de layout”, porque um app de iPhone no iPad roda totalmente redimensionável enquanto ainda reporta o idiom de telefone; e a orientação de interface suportada vira uma preferência que o sistema ignora em ambientes redimensionáveis, com o iPhone Mirroring sempre reportando retrato independentemente da proporção da window.2 O substituto para ambos são as size classes. Jogos ganham uma acomodação em vez de uma isenção: UIRequiresFullscreen é respeitado no iPhone em ambientes redimensionáveis a partir do iOS 27, mas seu comportamento muda para redimensionamento discreto, transicionando a scene para uma configuração de tela correspondente a cada redimensionamento, de modo que o jogo renderize em qualidade máxima no espaço disponível.2
Testar a matriz inteira ficou mais barato no mesmo ciclo: o Device Hub e o Xcode Previews ganham um “entrar no modo de redimensionamento” que arrasta as bordas do dispositivo livremente, com a sessão aconselhando verificações em dispositivo real no iPhone Mirroring e no iPad depois.2
A migração tem uma agent skill
A sessão encerra reconhecendo o tamanho do pedido e apontando para a resposta do Xcode 27: uma nova skill de modernização de apps com “um entendimento profundo das tarefas de adaptabilidade” que a sessão descreve.2 Quando se pede para tornar um app mais adaptável, o agent converte chamadas de main screen em verificações de trait-collection ou de scene-bounds com lógica de invalidação onde necessário, substitui verificações de orientação de interface por size classes, e “vai até converter seu app para usar o ciclo de vida de scenes.”2 Para tarefas complexas ele faz perguntas de esclarecimento, e para trabalho grande demais para uma sessão ele deixa comentários marcando o que resta.2
A história de distribuição combina com o resto do esforço de skills da Apple nesta WWDC: xcrun agent skills export produz arquivos markdown que você pode importar para outras ferramentas, o mesmo mecanismo abordado em exportação de agent skills do Xcode 27.2 Uma migração imposta pelo SDK, combinada com uma skill que executa a migração, é a expressão mais clara até agora de como a Apple espera que mudanças incompatíveis sejam absorvidas na era dos agents: a plataforma eleva o piso, e a tooling carrega você por cima dele.
FAQ
Meu app existente vai parar de funcionar no iOS 27?
Não por causa só desta exigência. A obrigatoriedade se aplica a apps “compilados com o SDK mais recente.”1 Binários já lançados com SDKs mais antigos continuam iniciando no iOS 27. A falha ocorre quando você recompila contra o SDK do iOS 27 sem o ciclo de vida baseado em scenes implementado.
Como sei se meu app é afetado?
Verifique duas coisas.1 Se seu Info.plist não tem uma chave UIApplicationSceneManifest com uma configuração, e seu app delegate não implementa o método de scene-configuration, você está no ciclo de vida de app delegate e o app não inicia quando compilado com o SDK do iOS 27. O UIKit registra uma mensagem de migração para apps afetados desde o iOS 18.4.1
Isso me obriga a suportar múltiplas janelas?
Não. O suporte a múltiplas scenes continua opcional, e a documentação da Apple aconselha avaliar se a experiência do usuário se beneficia antes de habilitar isso, já que pode exigir tornar seu modelo de dados específico por scene.1 A obrigatoriedade só exige o próprio ciclo de vida baseado em scenes: eventos do ciclo de vida tratados por scene em vez de globalmente.
Um agent pode fazer a migração?
O Xcode 27 vem com uma skill de modernização de apps que, segundo a sessão, pode converter um app para o ciclo de vida de scenes, reescrever referências de main screen e substituir verificações de orientação por size classes, fazendo perguntas de esclarecimento onde a mudança é ambígua e deixando comentários para o trabalho não concluído.2 Ela exporta para outras ferramentas via xcrun agent skills export.2 Trate sua saída como qualquer migração escrita por agent: revise o diff, especialmente em torno de state restoration e configuração de window.
A obrigatoriedade completa um tema deste ciclo: a Apple impondo migrações na fronteira do 27 em vez de sugeri-las, depois que a descontinuação do ImageCreator mostrou a mesma escalada gradual em uma superfície menor. A resposta da agent skill se conecta ao arco mais amplo de skills em o Xcode 27 vem com agent skills que você pode exportar para qualquer lugar. O hub completo da série é a Série Apple Ecosystem.
Referências
-
Apple, Transitioning to the UIKit scene-based life cycle, Documentação para Desenvolvedores da Apple. Fonte para a exigência (“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”), os avisos graduais (o UIKit registrando uma mensagem de migração a partir do iOS 18.4, iPadOS 18.4, Mac Catalyst 18.4, tvOS 18.4 e visionOS 2.4, com a mensagem mudando nos lançamentos 26), o teste de migração de duas condições (chave
UIApplicationSceneManifestausente ou nenhum método delegate de scene-configuration), as rotas de migração de property list e de configuração dinâmica incluindo a localização “Scene manifest” nas configurações General e o exemplo de session-role, a nota sobre o nome do storyboard com configuração automática de window scene, o suporte a múltiplas scenes permanecendo opcional com a ressalva sobre o modelo de dados, a divisão de responsabilidades do ciclo de vida entre app e scene, a orientação para especificar objetosUIWindowSceneem vez de objetosUIScene, e o tipo de scene de CarPlay. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, sessão 278 da WWDC 2026, Modernize your UIKit app. Transcrição oficial; apresentada por Michael Ochs, engineering manager da equipe de UI Frameworks. Fonte para a declaração da exigência (“UIScene lifecycle is now required when building with the latest SDKs. Without it, your application will no longer launch”), o redimensionamento do iPhone Mirroring e apps só de iPhone rodando totalmente redimensionáveis no iPad, o ciclo de vida de scenes como “a base de qualquer app adaptável”, a orientação sobre main screen (acesso dinâmico pela window scene,
displayScalevia trait collection, geometria efetiva e tamanho da view ao redor em vez dos bounds da tela), o rastreamento automático de traits em métodos de layout e desenho, a orientação sobre idiom e orientação de interface incluindo o comportamento sempre-retrato no iPhone Mirroring e a mudança para size classes, o comportamento de redimensionamento discreto deUIRequiresFullscreenpara jogos, a citação de Bruce Nilo na WWDC 2014 (“a device rotation is only an animated bounds change”) e sua formulação, o modo de redimensionamento do Device Hub e do Xcode Previews, e a skill de modernização de apps (entendimento profundo das tarefas de adaptabilidade, conversão de chamadas de main screen com lógica de invalidação, substituição de verificações de orientação por size classes, conversão de apps para o ciclo de vida de scenes, perguntas de esclarecimento, comentários de progresso e exportação viaxcrun agent skills export). ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩