Le SDK enregistre chaque événement localement avant de l’envoyer. Une coupure réseau, un onglet fermé trop tôt ou une API momentanément indisponible ne font pas perdre d’événements.

Cycle de vie d’un événement

File locale

  • Stockée dans IndexedDB (analytics_sdk_queue), ou dans le localStorage (analytics_event_queue) si IndexedDB n’est pas disponible.
  • 1 000 événements au maximum.
  • track(), identify() et page() se résolvent dès l’écriture dans la file : l’interface n’attend jamais le réseau.

Envoi par lots

Un lot part dès que l’une de ces conditions est remplie : Les requêtes utilisent fetch avec keepalive: true, pour qu’un lot envoyé à la fermeture de la page puisse aboutir.

Nouvelles tentatives

Dédoublonnage

Chaque événement a un eventId fixé à sa création et jamais régénéré. Si un lot est renvoyé après une erreur réseau alors que le serveur l’avait déjà reçu, l’API reconnaît les eventId et n’enregistre pas de doublon.

Limites

Tester le mode hors ligne

1

Couper le réseau

Outils de développement → Network → Offline.
2

Naviguer

Changez de page, cliquez. Les événements s’accumulent dans IndexedDB (onglet Application → IndexedDB → analytics_sdk_queue).
3

Rétablir le réseau

Repassez en No throttling. Les événements partent au prochain envoi.