Le mode hors ligne se décide côté serveur
Faire fonctionner une application sans réseau n'est pas un problème d'interface. C'est un problème de synchronisation, et il se pose avant la première ligne de code client.
Le mode hors ligne est demandé comme une case à cocher. Il change en réalité le modèle de données, et cette conséquence apparaît généralement trop tard.
Le problème n’est pas la lecture
Servir du contenu déjà téléchargé est facile : un cache, une date de péremption, un indicateur de fraîcheur dans l’interface.
Le problème commence à l’écriture. Une personne crée un rapport d’intervention dans un sous-sol, un collègue modifie la même fiche depuis le bureau, et la connexion revient trois heures plus tard. Quelle version gagne ?
Trois décisions à prendre avant de coder
Qui attribue les identifiants ? Si le serveur les attribue, un enregistrement créé hors ligne n’en a pas et ne peut être référencé par rien. La solution habituelle est un identifiant généré côté client, unique par construction, que le serveur accepte tel quel.
Comment se résout un conflit ? Trois stratégies, par ordre de simplicité : le dernier écrit gagne, le serveur gagne toujours, ou la résolution est présentée à l’utilisateur. La première perd silencieusement du travail. La troisième est correcte mais demande une interface dédiée, qui n’est presque jamais budgétée.
Les opérations sont-elles ordonnées ? Créer une fiche puis la supprimer, rejoué dans le désordre, laisse une fiche fantôme. La file d’attente locale doit conserver l’ordre, et le serveur doit tolérer qu’une opération soit rejouée deux fois sans effet double.
Ce que l’interface doit montrer
Trois états, jamais deux : synchronisé, en attente de synchronisation, et en échec. Le troisième est celui qui est oublié, et c’est celui qui compte — une donnée refusée par le serveur et disparue sans message détruit la confiance dans l’application entière.
Un indicateur global ne suffit pas : l’état se porte sur chaque élément concerné.
La purge, oubliée jusqu’à saturation
Un cache qui ne s’efface jamais finit par occuper plusieurs gigaoctets, et l’application est désinstallée pour faire de la place. Une règle de purge — par ancienneté, par volume — se définit au début, pas quand le problème remonte.
Quand s’en passer
Si l’usage réel se déroule au bureau, en Wi-Fi, le mode hors ligne coûte plusieurs fois son bénéfice. La question à poser n’est pas « serait-ce bien ? », mais « combien de fois par semaine quelqu’un se retrouve-t-il réellement sans réseau, et que fait-il alors ? »