🤷 Le problème
Vous publiez sur NPM. Vous avez des statistiques de téléchargements, mais vous ne savez pas vraiment :
- 🤷 Qui utilise réellement votre package en production
- 🌐 Sur quels sites web il tourne
- 📊 Quelles versions sont déployées sur le terrain
- ⚠️ Combien de sites utilisent des versions obsolètes
Les statistiques NPM ne montrent que les téléchargements, pas l'usage réel !
Un npm install ne signifie pas que le code tourne en production. Les CI/CD, bots et installations de développement gonflent artificiellement les chiffres.
De plus, ces statistiques ne trackent pas les utilisateurs finaux, seulement les développeurs qui installent le package.
✅ La solution : Tracking NPM
Tracking NPM est un système léger et automatique qui vous donne une visibilité complète sur l'utilisation réelle de votre package JavaScript dans les navigateurs.
Tracking d'usage réel en production
Découvrez exactement quels sites web utilisent votre package, avec quelle version, et depuis quand.
📦 Ce que vous obtenez
📍 Tracking d'usage réel
- Liste complète des domaines utilisant votre package
- Statistiques d'usage réelles, pas juste des téléchargements
- Détection automatique des nouveaux sites
📊 Visibilité sur les versions
- Quelle version tourne sur quel site
- Dashboard centralisé de toutes les installations
- Détection automatique des versions obsolètes
🎯 Intérêts légitimes
- 📊 Connaître le nombre d'installations en production
- 🔄 Gérer les migrations de versions
- 🛡️ Améliorer la sécurité (alertes en cas de vulnérabilité)
- 🛠️ Améliorer la maintenance du package
- 📈 Mesurer l'adoption réelle (vs téléchargements NPM)
🔧 Comment ça marche ? Intégration simple (2 minutes)
Étape 1 : Connectez-vous via GitHub — c'est gratuit & rapide
Oui, sinon impossible de vérifier la propriété du package !
Rendez-vous dans Licence > Tracking NPM, puis ajoutez vos packages.
Tous les formats de noms npm sont acceptés :
@votre-scope/votre-package— format scopé (recommandé)votre-package— format classique (non scopé)@organisation/module-tracking— pour les packages d'entreprise@synapxlab/cookie-consent— exemple de package publicmon-module-local— pour un package privé ou local
Tracking NPM génère une clé unique par package à copier/coller dans votre librairie.
Étape 2 : Intégrez le script Tracking NPM dans votre package
npm install @synapxlab/tracking-npm
// --- Initialisation du Tracking NPM ---
import '@synapxlab/tracking-npm';
if (window.trackingnpm?.init) {
window.trackingnpm.version = '2.4.0'; // 🔢 Version de votre package (optionnel)
window.trackingnpm.package_key = 'NPM_XXXXXXXXXXX'; // 📦 Clé unique générée dans l'espace membre (obligatoire)
window.trackingnpm.init();
}
Étape 3 : C'est tout ! Le reste est entièrement automatique.
Fonctions additionnelles (optionnelles)
// 🎲 Fréquence d'échantillonnage (1 à 100) — 10% par défaut
window.trackingnpm.scale = 10;
// ⏱️ Délai avant exécution (en millisecondes)
// Permet de différer le check pour ne pas bloquer le chargement
// 10 secondes par défaut
window.trackingnpm.delay = 10_000;
// 🧠 Mode debug — active des logs console
window.trackingnpm.debug = false;
Fonctionnement discret
Ça ralentit les sites ? Non. Exécution en idle time, après 10s, pour seulement 10% des visiteurs. Impact : ~0ms.
- ⏱️ Différé : attend 10 secondes après le chargement
- ⚡ Non bloquant : s'exécute pendant les périodes d'inactivité
- 🎲 Échantillonnage : seulement 10% des visiteurs
- 🚫 Respectueux : s'annule si l'onglet devient inactif ou se ferme
Objectif : Faire le moins d'appels possible, mais au moins 1 par semaine pour confirmer l'activité du site.
💼 Cas d'usage concrets
🎨 Librairie de composants UI
"Je maintiens une librairie React avec 500+ sites en prod. Grâce à Tracking NPM, j'ai pu identifier que 35% utilisaient encore une version avec une faille de sécurité. Emails envoyés automatiquement, 95% ont migré en 2 semaines."
💳 SDK de paiement
"Pour des raisons de conformité PCI-DSS, je dois forcer la mise à jour. Tracking NPM me permet d'identifier les vieilles versions et de contacter directement les utilisateurs pour migration."
🍪 Widget embarqué
"Mon widget Cookie Consent est utilisé par des milliers de sites. Tracking NPM m'a permis de découvrir que certains sites utilisaient encore une version non-conforme RGPD. J'ai pu les alerter rapidement."
📊 Analytics library
"Je propose une alternative éthique à Google Analytics. Tracking NPM m'aide à comprendre quels sites adoptent ma solution et à mesurer la croissance réelle, pas juste les téléchargements NPM."
🚀 Commencer maintenant
1️⃣ Créez votre compte
Connectez-vous via GitHub sur http://synapx.fr/sdk/tracking/
2️⃣ Installation
npm install @synapxlab/tracking-npm
3️⃣ Configuration
import '@synapxlab/tracking-npm';
if (window.trackingnpm?.init) {
window.trackingnpm.version = '2.5.0';
window.trackingnpm.package_key = 'NPM_XXXXXXXXXXX'; // Votre clé unique
window.trackingnpm.init();
}
4️⃣ Publiez votre package
Publiez la nouvelle version sur NPM. Les sites qui utilisent votre package commenceront à apparaître dans votre dashboard sous 24-48h.
🎉 C'est fait !
Consultez votre dashboard sur http://synapx.fr/sdk/tracking/ pour voir les statistiques en temps réel.
⚡ Download
Nom de fichier : PakageName.json
{
"package": "@synapxlab\/cookie-consent",
"sk_live": "8c0cf425d8bf3a7a5591d41916ba4357bf5f48d6ea5fe9e5e5c6ab98eb7cec7c",
"total_hosts": 12,
"hosts": [
{
"host": "example.com",
"version": "2.1.3"
"last_ping": "2025-10-27 09:12:00"
"total_pings": 5
},
{
"host": "autre-site.fr",
"version": "2.1.3"
"last_ping": "2025-10-27 09:12:00"
"total_pings": 15
}
...
]
}
Les champs last_ping et total_pings
sont essentiels pour ajuster intelligemment la fréquence de ping côté client
(scale, delay, etc.).
L’objectif est d’obtenir une configuration stable avec environ
1 ping par semaine et par domaine —
suffisant pour garantir des statistiques fiables sans générer de surcharge inutile.
⚡ Performance & Scalabilité
Impact minimal sur les utilisateurs finaux
- ~3KB gzippé pour le tracker
- 0ms de blocking time (idle execution)
- 10% sampling par défaut = 90% des visiteurs non impactés
- 10 secondes d'attente minimum avant le check
- Impossible de faire ralentir ou planter votre package (silent fail)
🔍 Pourquoi l'échantillonnage aléatoire suffit ?
Exemple concret : Découverte d'un nouveau site
Jour 1 : Le site example.com installe votre librairie v2.4.0
- Le site reçoit 10 000 visiteurs
- 10% des pages sont affichées plus de 10 secondes
- 10% font le check (1 000 tentatives)
- ~30% annulés (page fermée rapidement) = 700 checks effectifs
- Résultat : Le site est détecté en quelques minutes !
Jours suivants : Pas besoin de re-détecter 700 fois/jour
- Le domaine est déjà en base de données
- Les pings occasionnels (10%) permettent juste de vérifier :
- ✅ Le site est toujours actif
- ✅ La version n'a pas changé
- ✅ Dernière activité = "vu aujourd'hui"
Après 1 semaine sans ping :
- Le site est marqué "inactif" ou "désinstallé"
- Votre dashboard affiche uniquement les sites vraiment actifs
🔒 RGPD & Respect de la vie privée
✅ RGPD-friendly
- ❌ Aucun cookie posé
- ❌ Aucune donnée utilisateur final collectée
- ❌ Aucune IP personnelle stockée (anonymisation serveur)
- ✅ Seulement le domaine du site (information publique)
- ✅ Données privées accessibles uniquement au propriétaire du package
- ✅ Serveurs hébergés en France (OVH Roubaix)
- ✅ Rétention des données : 90 jours maximum
🛡️ Ce que nous collectons (exhaustif)
{
"package_key": "NPM_a1b2c3d4e5f6",
"version": "2.5.0",
}
C'est TOUT. Aucune autre donnée n'est transmise ou stockée.
Base légale RGPD :
Le traitement repose sur l'intérêt légitime du mainteneur du package (Art. 6.1.f RGPD). Aucune donnée personnelle des utilisateurs finaux n'est collectée. Le nom de domaine d'un site web est une information publique (DNS).
🔐 Politique de confidentialité
- ✅ HTTPS uniquement (TLS 1.3)
- ✅ Vérification de propriété du package via GitHub/NPM
- ✅ Clé unique par package (non devinable)
- ✅ Rate limiting côté serveur (1 ping/heure max par domaine)
- ✅ Pas d'exécution de code distant
- ✅ Open source (code auditable)
Ce que nous NE collectons PAS
Aucune donnée personnelle des utilisateurs finaux
- ❌ Nom, prénom, email; Données bancaires; Numéro de téléphone; Adresse postale
Aucun tracking comportemental
- ❌ Pages visitées; Clics de souris; Temps passé sur le site; Parcours de navigation
Aucune empreinte digitale (fingerprinting)
- ❌ Canvas, WebGL, Font, Audio fingerprinting; Battery API ou autres techniques de tracking
Aucun tracking tiers
- ❌ Google Analytics; Facebook Pixel; Trackers publicitaires
4. Base légale (RGPD)
Le traitement repose sur l'intérêt légitime du mainteneur du package NPM (Article 6.1.f du RGPD).
5. Qui a accès aux données ?
| Entité | Accès | Finalité |
|---|---|---|
Créateur du package |
✅ Complet | Consulter les sites utilisant son package |
SynapxLab |
✅ Technique | Hébergement et maintenance |
Tiers |
❌ Aucun | Nous ne vendons jamais vos données |
🏆 Fonctionnalité à venir : Hall of Fame
Une page publique valorisera bientôt les développeurs les plus actifs de la communauté, avec classement par pays. Participation entièrement optionnelle : vous choisissez d'apparaître ou de rester anonyme (défaut) depuis vos paramètres.
Données affichées : Pseudo GitHub, pays (optionnel), nombre de packages trackés, total de sites en production. Aucune donnée.
🇫🇷 Hébergement 100% français
Fournisseur : OVH - Roubaix, France RBX (Roubaix)- Union Européenne (RGPD strict)
Certification : OVH est certifié ISO 27001, ISO 27017, ISO 27018, SOC 1 & 2
Responsable du traitement :
SynapxLab - Lock Ness Informatique
Lyon, Rhône-Alpes, France
Email : contact@synapxlab.com
🛠️ Développement
git clone https://github.com/synapxLab/tracking_npm.git
cd tracking_npm
npm install
npm run dev # Serveur de développement
npm run build # Build production minifié
🤝 Contribuer
Les contributions sont les bienvenues ! Consultez le dépôt GitHub pour :
- 🐛 Reporter des bugs
- 💡 Proposer des améliorations
- 📖 Améliorer la documentation
- 🔧 Soumettre des pull requests
📜 Licence
MIT – Utilisez, modifiez, redistribuez librement. Merci de conserver la mention de licence.
Code source disponible sur GitHub.