rest-api-optimistic-update-race-condition

Par divinevideo · divine-mobile

Skill documentant le pattern de mise à jour optimiste pour corriger les bugs de disparition de contenu liés au décalage d'indexation d'une REST API dans l'app Flutter Divine Mobile.

npx skills add https://github.com/divinevideo/divine-mobile --skill rest-api-optimistic-update-race-condition

Rôle du skill

Ce skill, présent dans le repository divinevideo/divine-mobile, documente et encapsule une solution concrète à un problème d'architecture courant : la race condition entre le chemin d'écriture et le chemin de lecture dans les applications utilisant une indexation asynchrone. Il est destiné à être utilisé par Claude comme référence lorsqu'il travaille sur le code de l'app Divine Mobile et qu'il rencontre des symptômes liés à ce pattern.

Problème adressé

Divine Mobile repose sur une architecture duale : les événements sont publiés via Nostr (WebSocket / écriture directe), mais les listes de contenu sont récupérées via une REST API alimentée par un backend d'indexation asynchrone (ClickHouse, Elasticsearch, etc.). Ce décalage provoque un bug caractéristique : un contenu publié apparaît brièvement, puis disparaît lors d'un rechargement, car la REST API renvoie encore les données précédant l'indexation.

Contenu du skill

Contrairement à la plupart des skills squelettes, celui-ci est entièrement rédigé et opérationnel. Il propose trois options de résolution — mise à jour optimiste de l'état local (recommandée), approche hybride avec réconciliation différée, et cache write-through — accompagnées d'exemples de code Dart tirés directement du provider ProfileFeedProvider de l'app. Il inclut également une procédure de vérification, des notes sur les cas limites (doublons, contenu en cours de traitement), et des références aux patterns associés (CQRS, Event Sourcing, Optimistic UI).

Quand l'utiliser

Ce skill doit être invoqué dès que l'on travaille sur une fonctionnalité de publication de contenu dans Divine Mobile et que l'on observe — ou risque d'introduire — un re-fetch immédiat depuis la REST API après une opération d'écriture. Il s'applique aux vidéos, posts, commentaires, ou tout autre contenu dont l'apparition dans un feed ou un profil dépend d'un pipeline d'indexation asynchrone.

Skills similaires