Versões e compatibilidade retroativa em apps
A realidade
Mesmo com atualização automática ativada, a distribuição de versões se estende por meses. Qualquer mudança que quebre a interface do servidor derruba usuários reais sem que entendam por quê.
Então: extenda, não mude. Adicione campos, não remova; adicione rotas, não mude o comportamento das existentes.
Mecanismos de controle
Versão de interface. Declare em cada requisição para saber quem está falando com você.
Atualização forçada. Uma tela que bloqueia versões que não têm mais suporte. Econômico, e precisa estar lá desde o primeiro dia — não dá para adicionar retroativamente a uma versão antiga.
Switches de capacidade. Ligar e desligar capacidades remotamente, por versão e por porcentagem de usuários.
Quando parar o suporte
Decida por dados, não por sensação: quando menos de um por cento do uso ativo vem de uma versão, e depois de um aviso prévio dentro do app. Documente a política para não renegociar em cada lançamento.
Indo mais fundo
Execute testes de integração das duas últimas versões suportadas contra a interface atual a cada publicação do servidor. Compatibilidade retroativa que não é testada automaticamente quebra silenciosamente, e só aparece nas avaliações da loja.