Apps mobile · Misto

Trabalhar offline: um app que não quebra no elevador

Em uma linha: Projete o app em torno da suposição de que não há rede, e você ganha de graça um app que também parece rápido quando há.

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.