Falha no Google Firebase trava milhares de aplicativos iOS

Escrito por
Jardeson Márcio
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista...

Entenda como um erro no SDK do Firebase travou milhares de apps iOS simultaneamente.

Uma falha no Google Firebase provocou uma onda de travamentos em aplicativos iOS que já estavam publicados e funcionando normalmente, sem que os desenvolvedores tivessem lançado uma nova versão. O problema foi associado ao Google Analytics para Firebase, que recebeu uma resposta de configuração malformada e acabou levando o SDK a encerrar o aplicativo durante a inicialização.

O caso chama atenção porque o código problemático não precisou ser incluído em uma atualização do aplicativo. Na prática, uma alteração no conteúdo recebido por um componente externo foi suficiente para transformar uma biblioteca voltada principalmente à telemetria e análise de uso em um fator capaz de impedir a abertura do aplicativo.

Para desenvolvedores, o episódio vai além de um bug específico. Ele mostra como aplicações modernas podem ficar expostas a falhas de dependências de terceiros, especialmente quando componentes considerados secundários são executados em etapas críticas do ciclo de inicialização.

O erro no SDK do Firebase afetou a inicialização dos aplicativos

Os primeiros relatos públicos apontaram para o Firebase Analytics, especificamente para o processamento de uma resposta obtida pelo SDK por meio do mecanismo sdk-exp. O problema foi registrado no repositório oficial do Firebase Apple SDK na issue #16728. Relatos de desenvolvedores indicaram que aplicativos já publicados começaram a apresentar crashes sem qualquer atualização recente no código.

O comportamento registrado era particularmente preocupante. A falha aparecia depois que o SDK recebia uma resposta HTTP bem-sucedida, mas algum conteúdo dessa resposta era posteriormente processado de maneira incorreta.

Entre os erros observados estava:

Fatal Exception: NSInvalidArgumentException

e:

-[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil

Em termos simples, o código tentou inserir um valor em uma estrutura do tipo Dictionary utilizando uma chave nil, algo que não é permitido nesse contexto. O resultado foi uma exceção não tratada capaz de encerrar o processo do aplicativo.

O detalhe mais importante é que o problema estava relacionado ao processamento de uma configuração recebida externamente. Isso significa que um aplicativo poderia estar utilizando exatamente o mesmo binário que havia funcionado durante dias e, ainda assim, começar a apresentar falhas quando o conteúdo remoto processado pelo SDK mudasse.

O incidente foi associado ao tratamento de configurações experimentais do Analytics, com referências a componentes internos como APMExperimentWorkerQueue, APMESnapshot e APMETaskManager. A issue também relacionou os crashes à resposta obtida no endpoint sdk-exp.

m89usmHK falha no google firebase trava apps ios
Imagem: Android Authority

A reação dos desenvolvedores diante da falha no Google Firebase

A situação criou um cenário particularmente confuso para quem mantinha os aplicativos afetados. Normalmente, uma explosão repentina de crashes depois de uma atualização leva os desenvolvedores a investigar mudanças recentes no código, nas dependências ou no sistema operacional.

Dessa vez, porém, havia um problema fundamental: não havia necessariamente uma nova versão do aplicativo.

Relatos publicados pela comunidade mostraram desenvolvedores observando aumentos abruptos nos crashes em versões que já estavam disponíveis na App Store. Alguns chegaram a identificar o comportamento simultaneamente em diferentes builds do mesmo aplicativo.

Esse tipo de incidente pode consumir horas de investigação. Equipes começam verificando alterações próprias, certificados, configurações de produção, servidores, APIs e versões do iOS. Quando a causa está em um SDK de terceiros e depende de uma resposta remota, a origem pode permanecer invisível até que diferentes equipes percebam um padrão comum.

A comunidade também relatou volumes expressivos de crashes em pouco tempo. Esses números são relatos individuais, e não uma medição oficial do total afetado, mas ajudam a dimensionar a percepção de impacto entre os desenvolvedores.

A correção chegou rápido, mas o cache prolongou o problema

O aspecto mais interessante da falha no Google Firebase foi que uma correção do lado do serviço poderia resolver o problema sem exigir uma atualização do aplicativo na App Store.

Segundo o resumo atribuído à equipe do Firebase na discussão do incidente, o problema começou em 28 de setembro de 2026, às 17h41 no horário do Pacífico, e a correção foi totalmente distribuída às 19h52 do mesmo dia. O próprio comunicado explicou que determinados aplicativos ainda poderiam apresentar crashes por até quatro horas após a conclusão da correção, devido ao comportamento de cache.

Esse detalhe é fundamental para entender por que a recuperação não foi instantânea.

Quando um aplicativo recebe e armazena determinadas informações localmente, corrigir o conteúdo no servidor não significa necessariamente que todos os dispositivos passarão imediatamente a utilizar a versão corrigida. Alguns aparelhos ainda podem possuir dados previamente obtidos e mantê-los disponíveis até que o cache expire ou seja substituído.

Assim, mesmo depois de uma correção no backend, o comportamento observado pelos usuários pode continuar durante algum tempo.

O fenômeno também demonstra uma característica importante de sistemas distribuídos: a recuperação técnica e a recuperação percebida pelo usuário podem ocorrer em momentos diferentes.

O que a falha no Google Firebase revela sobre dependências de terceiros

O incidente levanta uma questão arquitetural importante: um componente de analytics deveria ter capacidade de impedir a abertura de um aplicativo?

Não existe uma resposta universal para todas as arquiteturas, mas o princípio de engenharia é bastante conhecido. Componentes que não são essenciais para a função principal do produto deveriam, sempre que possível, falhar de maneira isolada.

Analytics, publicidade, telemetria, experimentos remotos e sistemas semelhantes normalmente são importantes para o negócio, mas não necessariamente para a execução básica do aplicativo.

Se o usuário precisa apenas abrir o aplicativo para consultar seus dados, escrever um documento, acessar uma conta ou executar uma função local, um problema no componente responsável por registrar métricas não deveria necessariamente transformar essa operação em um crash.

É justamente aí que surge o conceito de Single Point of Failure (SPOF). Um SPOF é um componente cuja indisponibilidade ou falha é capaz de comprometer todo o sistema.

O caso do Firebase Analytics mostra que uma dependência pode se transformar em um SPOF mesmo quando, do ponto de vista funcional, ela parece secundária.

O problema não é simplesmente usar SDKs externos

É importante evitar uma conclusão simplista. Utilizar SDKs de terceiros é uma prática normal no desenvolvimento moderno e pode reduzir drasticamente o esforço necessário para implementar analytics, pagamentos, autenticação, mapas, notificações, publicidade e diversas outras funcionalidades.

O risco aparece quando a arquitetura assume que essas dependências sempre funcionarão corretamente.

Uma integração mais resiliente considera que bibliotecas podem apresentar bugs, serviços podem ficar indisponíveis e respostas remotas podem chegar com formatos inesperados.

O próprio histórico do Firebase demonstra que problemas em SDKs não são uma hipótese meramente teórica. As notas oficiais de versões recentes registram correções de diferentes tipos, inclusive problemas relacionados a Analytics e crashes em componentes do ecossistema.

O que os desenvolvedores podem aprender com o incidente

A principal lição da falha no Google Firebase é que uma dependência externa precisa ser tratada como uma possível fonte de falha, mesmo quando sua finalidade parece não estar relacionada à função principal do aplicativo.

Uma estratégia de arquitetura pode começar separando componentes essenciais e não essenciais. Se o Analytics falhar, o aplicativo deve continuar funcionando sempre que isso for tecnicamente possível.

Também é importante evitar inicializações excessivamente rígidas. Uma chamada de configuração, coleta de métricas ou processamento de dados experimentais não deveria derrubar todo o processo caso uma resposta inesperada seja recebida.

Outras práticas úteis incluem:

  • Monitorar crashes por versão, inclusive em versões que não receberam atualizações recentes.
  • Observar mudanças abruptas na taxa de falhas, que podem indicar problemas externos.
  • Isolar SDKs de terceiros durante a inicialização sempre que a arquitetura permitir.
  • Tratar exceções e respostas inválidas antes que elas alcancem componentes críticos.
  • Manter inventário das dependências, incluindo versões e componentes transitivos.
  • Testar cenários de indisponibilidade e respostas malformadas em ambientes de homologação.
  • Ter mecanismos de desligamento ou configuração remota para componentes não essenciais.
  • Evitar que analytics, publicidade ou experimentos remotos sejam pré-requisitos absolutos para iniciar o aplicativo.

Também vale observar que a própria documentação do Firebase mostra que dados e relatórios podem depender de mecanismos de cache e envio posterior, reforçando que telemetria e execução principal são conceitos que podem ser tratados separadamente.

Um alerta para arquiteturas cada vez mais dependentes da nuvem

O episódio é um lembrete de que a computação moderna está criando aplicações cada vez mais conectadas a serviços remotos, SDKs, APIs e plataformas de terceiros.

Essa abordagem oferece velocidade e escala, mas também amplia a superfície de dependências. Uma aplicação pode ter dezenas de bibliotecas externas e, em alguns casos, componentes capazes de buscar configurações adicionais depois que o aplicativo já foi distribuído.

Isso cria uma situação paradoxal: o binário instalado no dispositivo pode permanecer inalterado enquanto seu comportamento muda devido a dados recebidos externamente.

Para equipes de desenvolvimento, essa distinção é essencial. O processo de gerenciamento de risco não deve considerar apenas o código que será compilado e enviado para a loja. Também precisa considerar os serviços, configurações remotas e SDKs que continuam participando da execução depois que o software chega ao usuário.

A falha no Google Firebase, portanto, não representa apenas mais um bug em uma biblioteca. Ela funciona como um exemplo concreto de como telemetria, configuração remota e código de terceiros podem atravessar a fronteira entre uma função auxiliar e um componente crítico.

Quanto mais dependências uma aplicação incorpora, mais importante se torna definir quais delas podem falhar sem interromper o produto.

Para os desenvolvedores, fica uma pergunta importante: se um SDK usado apenas para analytics parar de funcionar amanhã, seu aplicativo continuará abrindo normalmente? Se a resposta for não, talvez essa dependência esteja ocupando um lugar mais crítico na arquitetura do que deveria.

Compartilhe este artigo
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista em Android, Apple, Cibersegurança e diversos outros temas do universo tecnológico. Seu foco é trazer análises aprofundadas, notícias e guias práticos sobre segurança digital, mobilidade, sistemas operacionais e as últimas inovações que moldam o cenário da tecnologia.