Dexie

Quand j’ai commencé à travailler sur le mode hors ligne de Farmitrax, une application web de gestion de ferme laitière, j’ai rapidement compris que le choix de la couche de stockage locale allait être critique.

Connexion instable, utilisateurs peu techniques, données sensibles, besoin de fiabilité : ce n’était pas un “offline sympa”, mais une vraie contrainte métier.

Dans cet article, je partage mon retour d’expérience avec Dexie : pourquoi je l’ai choisi, ce que ça m’a apporté, les pièges que j’ai rencontrés, et dans quels cas je le recommanderais (ou pas).

Le contexte : pourquoi le offline était non négociable

  • Producteurs en zone rurale
  • Connexion cellulaire intermittente
  • Saisie de données sur le terrain (étable, pâturage, déplacements)
  • Impossible de dire à un utilisateur : « reviens quand tu auras du réseau »

Le offline n’était pas un bonus, c’était une condition de survie de l’application.

Pourquoi Dexie plutôt que l’IndexedDB “pure”

  • IndexedDB est puissante mais pénible
  • API verbeuse
  • Callbacks / promesses difficiles à lire
  • Risque d’erreurs silencieuses
  • Schéma déclaratif
  • Syntaxe fluide
  • Gestion des versions de base
  • Performance très correcte pour des volumes raisonnables

Dexie apporte une couche d’abstraction très propre : schémas clairs, requêtes lisibles, transactions compréhensibles. Pour un développeur solo, ça compte énormément.

Ce que Dexie fait très bien en pratique

  • Cache structuré des données métier
  • Lecture instantanée hors ligne
  • Réactivité de l’interface
  • Développement plus rapide qu’avec IndexedDB natif

Pour le CRUD local pur, Dexie est un vrai plaisir.

Là où Dexie commence à montrer ses limites

Synchronisation

  • Dexie ne résout pas la sync serveur
  • File d’attente, conflits, retries → à faire soi-même

🔹 Logique métier

  • Le offline force à repousser de la logique côté client
  • Risque de divergence si mal conçu

🔹 Debugging

  • IndexedDB reste opaque
  • Debug plus lent que du SQL classique

Dexie simplifie IndexedDB, mais ne supprime pas la complexité conceptuelle du offline.

Ce que j’ai appris (et referais différemment)

  • Définir le périmètre offline exact dès le départ
  • Séparer clairement :
    • données locales
    • état de synchronisation
    • source de vérité
  • Ne pas sous-estimer le coût mental du offline

Le offline, ce n’est pas une feature. C’est une architecture.

À qui je recommande Dexie (et à qui non)

✅ Je recommande Dexie si :

  • Application métier
  • Développeur solo ou petite équipe
  • Besoin offline réel
  • Données structurées

❌ Je serais plus prudent si :

  • Synchronisation complexe multi-utilisateurs
  • Besoin temps réel strict
  • Équipe backend très lourde

Conclusion

Dexie.js a été un excellent choix pour mon cas d’usage, mais ce n’est pas une solution magique.

Il faut accepter que le offline impose des compromis architecturaux, et Dexie rend ces compromis plus lisibles, pas inexistants.

Si vous construisez une application web sérieuse avec de vraies contraintes terrain, Dexie mérite clairement sa place dans votre boîte à outils.

Comments

Laisser un commentaire

Votre adresse courriel ne sera pas publiée. Les champs obligatoires sont indiqués avec *