Aqui está o que você pode ter perdido no .NET 10 para desenvolvedores .NET MAUI direcionados ao iOS.
Os novos recursos em .NET 10 para .NET MAUI não pare! 😎 Neste artigo, vamos nos aprofundar nas atualizações específicas do iOS introduzidas no .NET 10 — melhorias que impactam diretamente o desempenho, a confiabilidade e a experiência geral de desenvolvimento de aplicativos móveis.
Descreveremos o que mudou, o que foi otimizado e o que você, como desenvolvedor .NET MAUI direcionado ao iOS, deve ter em mente para aproveitar ao máximo esta versão.
🔧 Plataformas Suportadas
Uma das primeiras perguntas que recomendo fazer ao adotar uma nova versão — especificamente neste caso para .NET iOS (embora se aplique a tudo) — é saber quais versões são oficialmente suportadas.
Por que? Porque isso informa quais versões de dispositivo e/ou emulador seu ambiente deve corresponder para aproveitar ao máximo os novos recursos!
Para iOS, tvOS, Mac Catalyst e macOSas seguintes versões são suportadas:
- iOS 18.2
- tvOS 18.2
- Mac Catalisador 18.2
- macOS 15.2
Pré-visualização 7: Xcode 26 Beta 4
Por enquanto, o Preview 7 ainda não inclui compilações completas para .NET 10, mas introduz compatibilidade inicial com Xcode 26 Beta 4focado em Projetos .NET 9.
Colocando isso em prática, para utilizar as novas APIs/bindings do iOS 26 (Xcode 26), você deve adicionar dois elementos importantes dentro do seu marcação:
➖ Adicione a tag TargetFramework:
Especifica a versão do ambiente de desenvolvimento, por exemplo:
<TargetFramework>net9.0-ios26TargetFramework>
➖ Então você deve adicionar um NoWarn:
<NoWarn>$(NoWarn);XCODE_26_0_PREVIEWNoWarn>
⚠️ Isso NoWarn é necessário porque o Xcode 26 ainda está em Beta e evita que o projeto mostre avisos de compatibilidade.
Um exemplo completo ficaria assim:
net9.0-ios26
$(NoWarn);XCODE_26_0_PREVIEW
Problemas de renderização do shell .NET MAUI
⚠️ Anteriormente, havia um problema com Concha .NET MAUI renderização no iOS 26. Agora você pode ter certeza de que esse problema foi resolvido em Versão de serviço .NET MAUI 9 11 e NET MAUI 10 RC1.
Para saber mais sobre o .NET 10 no iOS, tvOS, Mac Catalyst e macOS, a documentação oficial recomenda revisar o problemas conhecidos no .NET 10.
Você também pode explorar as notas de lançamento das versões prévias do .NET 10.0.1xx:
Aparador
O trimmer é uma ferramenta .NET que realiza uma espécie de “operação de limpeza” no código do seu aplicativo. Ele analisa seu projeto, detecta código não utilizado e o remove. Em outras palavras, ajuda seu aplicativo a ficar mais leve, mais eficiente e muito mais rápido de carregar.
No .NET 10, foram introduzidas duas melhorias importantes relacionadas ao seu comportamento.
1. Trimmer habilitado em mais configurações
Com o .NET 10, esse “limpador inteligente” — o Trimmer — agora pode ser habilitado por padrão em mais cenários, como:
- Simulador iOS/arm64 (todas as configurações)
- tvOS Simulator/arm64 (todas as configurações)
- Mac Catalyst/arm64 (todas as configurações)
Quando você vê todas as configuraçõesisso significa que se aplica a diferentes configurações de compilação, como Depurar, Liberar e outros.
2. Avisos do aparador ativados por padrão
Anteriormente, os avisos do trimmer estavam desativados por padrão. Isso ocorreu porque a biblioteca de classes base produzia seus próprios avisos de corte, impossibilitando o desenvolvedor de corrigir todos os avisos detectados.
A boa notícia é que no .NET 9, todos os avisos de corte relacionados ao iOS foram resolvidos e, graças a isso, os avisos de corte agora estão habilitados por padrão.
No entanto, se por algum motivo você quiser desativá-los, poderá fazê-lo facilmente. Basta adicionar o SuprimirTrimAnalysisWarnings propriedade ao seu arquivo .csproj da seguinte forma:
true
Agrupando recursos originais em bibliotecas
Os projetos de biblioteca podem conter diferentes tipos de recursos, como:
- Storyboards
- XIBs
- Listas de propriedades (plist)
- Imagens
- Modelos CoreML
- E outros
Esses recursos exigem tarefas de processamento como compilação de storyboards ou XIBs, otimização de arquivos plist e muito mais. Esse processamento vem com algumas considerações importantes, como:
- Executando em um Mac, porque a compilação de storyboards/XIBs só é possível no macOS.
- Usando o conjunto de ferramentas da Apple (xcodebuild, ibtool, actool, etc.).
Todos esses requisitos podem complicar a construção de bibliotecas porque:
- Você nem sempre tem acesso a um Mac.
- Você não pode tomar decisões no aplicativo final com base nos recursos originais, porque eles já foram “processados”.
- Você obtém apenas a versão processada.
- E, portanto, isso limita a flexibilidade do projeto que consome a biblioteca.
Mas agora temos uma melhoria 😎
No .NET 9foi introduzido suporte opcional (opt-in) que permitiu incluir os recursos originais dentro da biblioteca sem processá-los.
No .NET 10as coisas ficam ainda melhores! 😍 Esse suporte agora é o comportamento padrão (opt-out).
Isso torna nossos aplicativos mais flexíveis, elimina a forte dependência de ter um Mac disponível e resulta em compilações de CI/CD muito mais consistentes.
Como faço para ativar ou desativar esta opção?
Se por algum motivo você quiser reverter esse comportamento padrão – o que significa que você não deseja incluir os recursos originais e prefere que a biblioteca contenha os processados - você pode fazer isso adicionando a seguinte tag em seu arquivo de projeto:
false
Crie projetos vinculativos no Windows
Antes, os projetos de vinculação dependiam das ferramentas do ecossistema da Apple (o que significa que você precisava de um Mac para compilá-los).
😎 Com o .NET 10, isso mudou!
Projetos vinculativos agora podem ser construídos inteiramente no Windowssem exigir um Mac ou qualquer conexão remota. Isto resulta em compilações muito mais rápidas no Windows. Uau! 🎉
Este é um MUITO grande melhoria para quem trabalha em dispositivos Windows!
🔐 NSUrlSessionHandler não define mais o protocolo TLS mínimo automaticamente
Caso você não saiba, TLS (Segurança da Camada de Transporte) é um protocolo de segurança que protege a comunicação entre dois endpoints — por exemplo, seu aplicativo e o servidor.
Anteriormente, tínhamos um comportamento assim:
NSUrlSessionHandlerconfiou no valor deServicePointManager.SecurityProtocolpara determinar o protocolo TLS mínimo a ser usado.- Mas essa abordagem está agora obsoleta, porque
ServicePointManagernão é mais usado.
Portanto, a partir do .NET 10, se você quiser definir o protocolo TLS mínimo, deverá fazê-lo manualmente antes de criar o NSUrlSessionHandlerconforme mostrado abaixo:
var sessionConfiguration = NSUrlSessionConfiguration.DefaultSessionConfiguration;
sessionConfiguration.TlsMinimumSupportedProtocolVersion = TlsProtocolVersion.Tls13;
var handler = new NSUrlSessionHandler(sessionConfiguration);
🚫 A propriedade NSUrlSessionHandler.BypassBackgroundSessionCheck agora foi ignorada
Essa propriedade existia como solução alternativa para um problema antigo no tempo de execução do Mono. Como não é mais necessário, a propriedade agora é ignorada.
Conclusão
E é isso! 🎉 Neste artigo, você explorou as principais melhorias que o .NET 10 traz para o desenvolvimento de iOS, tvOS, macOS e Mac Catalyst. Desde o suporte expandido ao trimmer e o gerenciamento aprimorado de recursos até compilações de vinculação mais rápidas baseadas no Windows e padrões de rede atualizados, essas mudanças trabalham juntas para criar uma experiência de desenvolvimento mais eficiente, consistente e moderna.
Agora você tem uma compreensão mais clara de como essas atualizações afetam seu fluxo de trabalho, ajudando você a criar aplicativos mais leves, reduzir o atrito específico da plataforma e aproveitar ao máximo o que o .NET 10 oferece para plataformas Apple.
Se você tiver alguma dúvida ou quiser que eu aborde mais tópicos relacionados, fique à vontade para deixar um comentário – ficarei feliz em ajudá-lo! 💚
Vejo você no próximo artigo! 🙋♀️✨
Referências
A explicação foi baseada na documentação oficial: