Mardi 24 septembre 2024 à 17:41

gibbon-replay n'enregistre pas les sessions de Safari sous MacOS et iOS.

En analysant le problème, j'ai découvert le message d'erreur suivant :

Beacon API cannot load ... Reached maximum amount of queued data of 64Kb for keepalive requests

Je n'ai trouvé la limitation de 64Kb ni dans https://www.w3.org/TR/beacon/, ni dans https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon.
Cela semble être une spécificité de Safari.

#JaiDécouvert que posthog-js utilise fflate pour compresser les données. La compression a été ajoutée en décembre 2020, dans cette Merge Request : Compress events using fflate (gzip-js).

Ce que je compte faire pour corriger le bug que j'ai sous Safari :

  • Si les données à envoyer ont une taille supérieure à 50ko, alors utiliser fetch sinon utiliser sendBeacon ;
  • Utiliser fflate pour compresser les données.

Quitter le mode Zen