La plupart des échecs offline-first que nous avons vus viennent du fait que la connectivité est traitée comme un bit unique — on ou off. Sur le terrain, c'est un spectre : haute latence, à moitié défaillante, partielle, lossy. Un design offline-first utile accepte que le réseau soit un continuum, pas un interrupteur.
Le stockage local-first est la fondation. Toute écriture qui compte atterrit sur un stockage local durable avant tout le reste, avec un identifiant clair, un timestamp horloge murale et un acteur. La synchronisation est un processus séparé qui peut échouer, retry et reprendre sans que l'utilisateur ne le remarque.
C'est sur la résolution de conflits que beaucoup de designs cassent. Nous nous appuyons par défaut sur une résolution déterministe côté serveur — le client n'a jamais à trancher. Lorsque le conflit est réellement ambigu, nous le faisons remonter explicitement plutôt que de laisser last-write-win écraser silencieusement le travail d'un collègue.
Le résultat : un système où les équipes terrain arrêtent de penser à la connectivité. Elles ouvrent l'application, font leur travail, et la plateforme rend le problème réseau invisible.
