À propos du projet
Visitor Analytics SDK est une bibliothèque d'analyse TypeScript conçue pour les applications web. Elle fonctionne avec n'importe quel framework frontend tel que React, Vue, Svelte, Solid, Astro, ainsi qu'avec le JavaScript vanilla. Le SDK met l'accent sur la confidentialité : il ne collecte jamais d'informations personnelles identifiables et toutes les données sont anonymisées.
Les fonctionnalités principales comprennent :
- Fonctionnement indépendant des cadres avec des paquets d'intégration dédiés pour les principaux frameworks.
- Architecture modulaire basée sur des plugins permettant des collecteurs personnalisés, des adaptateurs de stockage et des plugins.
- API type-safe avec des définitions TypeScript strictes et aucune utilisation de type 'any'.
- Modules ESM tree-shakables afin que seules les parties nécessaires soient regroupées.
- Aucune dépendance à l'exécution et performances optimisées grâce à des écouteurs passifs, requestIdleCallback, gestionnaires débouncés et lectures DOM groupées.
- Prise en charge hors ligne avec une file d'attente qui se synchronise lorsque le réseau est disponible, ainsi que des tentatives de reprise exponentielle et un repli sur sendBeacon pour le déchargement de la page.
- Options configurables telles que la taille du lot, l'intervalle de vidage, les limites de tentative, la compression, la déduplication, le délai d'inactivité de session et les champs de données personnalisés.
Le SDK fournit une fonction createAnalytics de base qui retourne une instance d'analyse. Cette instance offre des méthodes pour démarrer, arrêter, vider, synchroniser, réessayer les téléchargements échoués, ajouter ou supprimer des collecteurs, installer des plugins, interroger les enregistrements stockés, exporter des données, suivre manuellement les changements de route, s'abonner aux événements et détruire l'instance.
Les collecteurs recueillent une large gamme de données : nom et version du navigateur, système d'exploitation et plateforme de l'appareil, dimensions de l'écran, métriques de performance (temps de navigation, temps de peinture, LCP, CLS, INP), détails de l'environnement (fuseau horaire, langue, schéma de couleur), prise en charge des fonctionnalités (WebGL, WebGPU, WASM, Service Worker) et interactions utilisateur (durée de session, profondeur de défilement, nombre de clics, changements de route, paramètres UTM). Tous les collecteurs sont optionnels et peuvent être étendus avec des implémentations personnalisées.
Des adaptateurs de stockage sont fournis pour la mémoire, localStorage et IndexedDB, avec la possibilité d'insérer des backends personnalisés tels qu'un adaptateur Redis. L'envoyeur regroupe les enregistrements, gère les nouvelles tentatives avec une backoff exponentielle, dédoublonne les lots et peut compresser les charges utiles lorsque le navigateur prend en charge CompressionStream.
Les exemples d'intégration couvrent React (AnalyticsProvider, useAnalytics, usePageView), Vue (createAnalyticsPlugin, useVueAnalytics), Svelte (createAnalyticsStore), SolidJS (AnalyticsProvider, createAnalyticsHook), Astro et JavaScript simple. Chacune des intégrations montre comment initialiser le SDK, accéder aux données collectées et déclencher des téléchargements manuels.
Le SDK inclut un système de plugins. Les plugins peuvent enregistrer des collecteurs supplémentaires ou modifier le comportement lors de l'installation et effectuer un nettoyage lors de la désinstallation. Un exemple de plugin d'AB-test ajoute la variante d'expérience actuelle à chaque enregistrement.
Les garanties de confidentialité sont explicites : aucun nom, email, mot de passe, contenu de cookies, saisie de formulaires, adresse IP exacte, coordonnées GPS, frappes de touches, coordonnées de clics ou identifiants de fingreprint persistants ne sont jamais collectés. Les identifiants de session sont des UUID aléatoires générés par instance et ne sont pas conservés entre les sessions.
Les limitations connues incluent le délai d'inactivité basé sur l'activité, les écritures non atomiques lors de l'utilisation de LocalStorage dans les scénarios multi-onglets (IndexedDB est recommandé), et la compression gzip optionnelle nécessitant un support récent du navigateur.
Les optimisations de performance comprennent des écouteurs d'événements passifs, requestIdleCallback pour les tâches lourdes, une gestion débouncée du défilement et du redimensionnement, une initialisation paresseuse des collecteurs, des lectures DOM groupées via requestAnimationFrame et une livraison fiable utilisant navigator.sendBeacon lors du déchargement.
Le SDK est publié sous licence MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.