Trabalhar offline: um app que não quebra no elevador
A suposição de base
Uma rede celular não é um interruptor liga/desliga, mas um espectro: lento, intermitente, conectado mas sem throughput. Um app que assume uma boa conexão mostra um spinner infinito exatamente quando o usuário mais precisa.
A abordagem certa: o dispositivo mantém uma fonte de verdade local, e a rede é um processo de sincronização em segundo plano.
Três mecanismos
Cache de leitura. O que carregou uma vez é exibido novamente de imediato, com uma marca sutil de 'atualizando'.
Fila de escrita. Ações do usuário são salvas localmente e enviadas quando houver conexão. A interface mostra o resultado imediatamente.
Resolução de conflito. O que acontece quando dois dispositivos mudaram o mesmo item. Decida com antecedência: o último vence, mesclagem por campo ou perguntar ao usuário.
O que o usuário precisa ver
O estado de sincronização de forma silenciosa mas clara, e o que ainda não foi enviado. Ocultar completamente o estado gera desconfiança no momento em que algo desaparece.
Indo mais fundo
Guarde uma versão ou timestamp de atualização do servidor em cada registro, e envie de volta na escrita para detectar um conflito. Sem isso, duas atualizações paralelas se sobrescrevem silenciosamente — o pior tipo de perda de dados, porque ninguém recebe um erro.