La Beacon API est une interface web qui permet d’envoyer de petites quantités de données (télémétrie, analytics, diagnostics) du navigateur vers un serveur de manière asynchrone et non-bloquante. Sa particularité : elle garantit la livraison de ces données même si l’utilisateur quitte la page, ferme l’onglet ou change de site.
Le Problème Résolu (Le cœur du sujet : la fin de session)
Pour comprendre son utilité, il faut comprendre le comportement classique des navigateurs :
- Sans Beacon API (Fetch / XHR classique) : Lorsqu’un utilisateur clique sur un lien pour quitter une page, le navigateur annule toutes les requêtes JavaScript en cours pour libérer de la mémoire et charger la nouvelle page. Résultat : on perd les données de tracking (ex: « temps passé sur la page » ou « clic sur le bouton de sortie »).
- Avec Beacon API (
navigator.sendBeacon()) : Le navigateur place la requête dans une file d’attente prioritaire et l’envoie en arrière-plan, après que la page ait commencé à se décharger. Les données sont livrées sans retarder la navigation suivante.
L’Intérêt Professionnel (Pourquoi c’est crucial pour la Data et la Perf ?)
Dans une stratégie de mesure et d’optimisation, la Beacon API est indispensable pour trois raisons :
- Fiabilité de la Data (Analytics) : Elle élimine les « angles morts » du tracking. Les outils comme Google Analytics (GA4), Hotjar ou les solutions de A/B testing l’utilisent massivement pour capturer les événements de fin de session (bounce rate, durée réelle, abandon de panier à la sortie).
- Préservation de la Performance (UX) : En ne bloquant pas le « Main Thread » du navigateur, elle évite de dégrader les Core Web Vitals (comme le TTI ou le LCP) de la page vers laquelle l’utilisateur navigue.
- Optimisation des ressources : Conçue spécifiquement pour être légère, elle est optimisée pour la batterie (mobile) et le réseau, et gère nativement les retries (nouvelles tentatives) en arrière-plan si le réseau est instable.
« La Beacon API, c’est l’assurance-vie de nos données de tracking : elle garantit que les informations arrivent bien au serveur même si l’utilisateur ferme l’onglet précipitamment, sans jamais sacrifier la vitesse de chargement de la page suivante. »