En avril 2026, Vodafone et Aqualia officialisaient un partenariat pour moderniser le contrôle et la gestion de l’eau en Espagne. L’idée : déployer des capteurs connectés en NB-IoT sur le réseau de distribution, collecter les données en continu, et passer d’une logique de relevé manuel trimestriel à une surveillance en temps réel qui détecte une fuite avant qu’elle ne devienne une rupture de canalisation.

On a lu cette annonce en pensant à nos dashboards Lighthouse.

On fait exactement l’inverse de ce que Vodafone et Aqualia construisent. On lance un audit une fois par mois, on regarde le score, on se félicite d’être passé de 72 à 78, et on ferme l’onglet. Pendant ce temps, les vrais utilisateurs subissent des LCP à 5 secondes parce qu’un script tiers a changé de CDN sans prévenir.

Ce partenariat industriel pose une question que personne ne pose en SEO technique : pourquoi mesure-t-on la performance web comme on relevait les compteurs d’eau en 1985 ?

Le monitoring temps réel change la donne

Le cœur du projet Vodafone-Aqualia repose sur le NB-IoT, un protocole réseau basse consommation conçu pour transmettre de petites quantités de données à intervalles réguliers depuis des capteurs enterrés ou immergés. Chaque capteur remonte pression, débit, turbidité. Le tout aboutit dans une plateforme qui agrège, alerte, et déclenche des interventions avant que l’usager ne constate un problème.

C’est une architecture de monitoring continue. Elle ne remplace pas l’inspection humaine, elle la rend ciblée. On n’envoie plus une équipe vérifier 40 vannes « au cas où » ; on envoie une équipe sur la vanne qui présente une dérive de pression depuis 4 heures.

Appliquez ce raisonnement à la performance web. Un audit Lighthouse mensuel, c’est l’équivalent d’un technicien qui passe relever le compteur avec son carnet. Il note le chiffre, il repart. Le problème, c’est que votre LCP ne fluctue pas de façon linéaire et prévisible. Il explose quand un utilisateur sur un mobile 4G à Barcelone charge une landing produit avec une image de fond non optimisée pour l’écran. Ou quand une edge function redémarre à froid et que le TTFB triple pendant 12 minutes.

C’est là que le Real User Monitoring prend tout son sens. Pas comme un tableau de bord qu’on regarde en réunion mensuelle, mais comme un système d’alerte qui signale une dégradation avant qu’elle ne tape votre taux de conversion.

⚠️ Attention : confondre données de lab et données de terrain, c’est piloter un réseau d’eau avec une photo satellite datant de trois semaines. Lighthouse mesure ce qui se passe sur une machine de test dans un centre de données. Le RUM mesure ce qui arrive à l’utilisateur sur son téléphone, dans son salon, avec sa connexion réelle. Les deux sont complémentaires. Un seul vous dit si vos utilisateurs souffrent.

Lighthouse est un thermomètre qu’on utilise une fois par mois

!A vintage mercury thermometer with a glowing web page reflection on its bulb, placed on a wooden desk beside a coffee mu

Un audit Lighthouse mensuel tournant sur Chromium émulé depuis Francfort à 3 ms du serveur d’origine ne dit rien d’un visiteur mobile avec 80 ms de RTT. On a vu un site e-commerce perdre 18 points de conversion mobile en une semaine sans que le score ne bouge d’un dixième : LCP lab à 1,8 seconde, LCP terrain au p75 à 4,7 secondes.

Le problème n’est pas Lighthouse. C’est la fréquence à laquelle on l’utilise et la confiance qu’on lui accorde.

Ce que le RUM voit et que Lighthouse manque

Le Real User Monitoring capture des données que Lighthouse ne peut pas voir par construction. La raison est simple : Lighthouse simule un utilisateur unique sur une connexion propre, sans cache navigateur pollué, sans extension, sans script tiers chargé en arrière-plan par un autre onglet. C’est une soufflerie aérodynamique. Le RUM, c’est la route ouverte avec le vent de face et l’asphalte déformé.

Prenons trois écarts concrets.

D’abord, l’impact des scripts publicitaires. Un site média qu’on auditait affichait un LCP lab de 2,1 secondes. En conditions réelles, le CMP de consentement injectait un délai de 800 ms avant le chargement du contenu principal, et une régie publicitaire ajoutait 1,2 seconde de latence sur les requêtes de bannières. Résultat : un LCP terrain à 4,5 secondes. Lighthouse ne chargeait ni le CMP ni les bannières dans son scénario par défaut.

Ensuite, la géographie. Votre serveur d’origine est peut-être à Francfort, mais vos utilisateurs sont à Séville, à Barcelone, à Madrid. Sans CDN correctement configuré, chaque kilomètre de fibre optique ajoute environ 5 microsecondes de latence théorique, mais le vrai tueur, c’est le dernier kilomètre mobile. Le RUM segmente ces données. Lighthouse vous donne un chiffre unique depuis un data center que vous n’avez pas choisi.

Enfin, l’état du navigateur. Un utilisateur qui revient pour la troisième fois dans la journée a un cache HTTP partiellement chaud, un cache de police chargé, peut-être un Service Worker actif. Lighthouse vide tout à chaque exécution. Le RUM capture ce que vivent les visiteurs fidèles comme les nouveaux arrivants. La distribution est bimodale : vous pouvez avoir un LCP médian à 2 secondes pour les retours, et à 6 secondes pour les premières visites. Une moyenne sur ces deux populations n’a aucun sens.

Brancher le RUM sans plomber le TTFB

!A network cable gently plugged into a monitoring device with blue LED indicators, a small digital screen shows low laten

Un SDK de 80 Ko en blocage de rendu dans le <head> ajoute 200 ms au TTFB perçu sur mobile. C’est un capteur de débit qui réduit le diamètre de la canalisation qu’il surveille.

Trois principes pour l’éviter.

Chargez le script de collecte en async, avec une priorité basse. Les données de performance que vous voulez capturer sont de toute façon disponibles via l’API PerformanceObserver ; vous n’avez pas besoin que le SDK bloque le moindre rendu.

Utilisez un endpoint de collecte sur un domaine distinct, idéalement derrière une CDN qui accepte les requêtes en HTTP/2 ou HTTP/3. Si votre SDK envoie des batches de données toutes les 5 secondes vers votre domaine principal, chaque requête de télémétrie entre en compétition avec les requêtes critiques de votre application. Un sous-domaine dédié (metrics.votredomaine.com) isolé de votre trafic principal résout le problème.

Enfin, échantillonnez. Personne n’a besoin de collecter 100 % des sessions utilisateur pour avoir un tableau fiable des Core Web Vitals. Un échantillon de 10 à 15 % du trafic suffit à produire des mesures exploitables, à condition que l’échantillonnage soit aléatoire et non biaisé vers les utilisateurs les plus rapides. Si vous ne mesurez que les sessions qui aboutissent à une conversion, vous excluez les sessions lentes qui ont abandonné avant. C’est le biais du survivant appliqué à la performance web.

Sur un projet Next.js récent, la logique de monitoring tenait dans un chunk chargé après consentement, géré avec Zustand : store léger, pas de Provider à wrapper, initialisation paresseuse. Aucun impact sur l’INP initial.

Le piège des moyennes qui cachent la casse

Une moyenne de LCP à 2,8 secondes, c’est rassurant. Le problème, c’est qu’une moyenne ne vous dit rien sur la distribution. Vous pouvez avoir 70 % des utilisateurs à 1,5 seconde et 30 % à 7 secondes. La moyenne est bonne. Le taux de conversion, lui, s’effondre sur ce tiers de visiteurs qui attendent sept secondes devant un écran blanc.

Google le sait, c’est pourquoi les Core Web Vitals sont évalués au 75e percentile, pas à la moyenne. Le 75e percentile signifie que 75 % des utilisateurs ont une expérience égale ou meilleure que cette valeur. Si votre LCP au p75 est de 3,9 secondes, vous êtes au-dessus du seuil « passable » de 2,5 secondes, même si la moitié de vos utilisateurs chargent en moins de 2 secondes. C’est contre-intuitif vu d’une culture de la moyenne, mais parfaitement cohérent avec une logique de monitoring industriel. On ne contrôle pas la pression moyenne dans une canalisation, on contrôle le pic de pression qui risque de la rompre.

On a vu un dashboard RUM qui affichait un LCP moyen de 2,1 secondes, un p75 de 2,8 secondes, et un p90 de 6,4 secondes. Le client nous disait « tout va bien, on est dans le vert ». Le p90 à 6,4 secondes représentait les utilisateurs sur mobile 3G en zone rurale. Ils étaient minoritaires, mais ils représentaient 40 % du chiffre d’affaires de certaines régions. Le score global était un mensonge statistique.

Le pendant de ce problème, c’est le choix des segments. Un RUM bien configuré segmente par type d’appareil (mobile vs desktop), par type de connexion (4G, 5G, Wi-Fi), et par plage géographique. Si vous avez un LCP global à 2,5 secondes mais que votre LCP mobile 4G en Andalousie est à 5 secondes, c’est ce dernier chiffre qui doit déclencher une alerte et un ticket dans votre outil de suivi.

L’infrastructure de collecte est un produit, pas un plugin

On traite souvent le RUM comme une case à cocher dans une checklist SEO technique. On installe le script, on vérifie que les données remontent, et on passe au sujet suivant. La réalité, c’est qu’une infrastructure de collecte de données terrain se maintient comme n’importe quel autre composant critique. Les SDK évoluent, les API de navigateur changent, et les seuils de Google sont mis à jour.

En 2024, le passage de First Input Delay à Interaction to Next Paint a rendu obsolètes des centaines de dashboards qui mesuraient le FID sans capturer l’INP. Les équipes qui avaient traité leur RUM comme un produit avec une roadmap ont migré en deux semaines. Les autres ont continué à regarder une métrique qui ne comptait plus dans les signaux de classement.

Autre angle mort : la corrélation entre les données RUM et les données de la Search Console. La Search Console vous donne un aperçu des URLs qui échouent aux Core Web Vitals, mais avec un délai de plusieurs semaines et sans segmentation fine. Votre RUM doit vous dire aujourd’hui ce que la Search Console vous dira dans trois semaines. Si les deux ne corrèlent pas, c’est que votre instrumentation rate une partie du trafic ou que votre échantillonnage introduit un biais.

Quand Vodafone et Aqualia déploient des capteurs sur 800 kilomètres de réseau, ils ne se contentent pas de les allumer et d’espérer. Ils calibrent, ils testent la remontée, ils vérifient que les données corrèlent avec les mesures physiques ponctuelles. Le RUM demande la même rigueur. Un script de collecte mal configuré qui mesure le LCP avant que le chargement ne soit terminé, ou qui ne capture pas les sessions abandonnées, produit des données faussement optimistes sur lesquelles vous prendrez des décisions stratégiques.

L’outillage de dev compte ici. Un IDE qui trace les appels à PerformanceObserver et lit vos logs de perf valide que l’instrumentation collecte vraiment ce qu’elle prétend. La question Claude Code vs Cursor IDE prend alors une dimension très pratique.

Questions fréquentes

Pourquoi ne pas se contenter des données Core Web Vitals dans la Search Console ?

La Search Console agrège les données de Chrome User Experience Report, avec un délai de 28 jours et une segmentation limitée. Elle vous dit si une URL est dans le rouge, pas pourquoi ni pour quels utilisateurs. Le RUM vous donne la cause (un script tiers, une image non optimisée, une géographie spécifique) et vous permet d’agir dans l’heure, pas dans le mois.

Est-ce que le RUM remplace complètement Lighthouse ?

Non. Lighthouse reste utile en développement local et en CI pour détecter des régressions avant la mise en production. Le RUM capture l’expérience réelle après déploiement. Les deux se complètent, mais c’est le RUM qui reflète ce que Google mesure effectivement pour le classement via le CrUX. Un score Lighthouse parfait ne vous sauvera pas si le RUM est dans le rouge.

Quel niveau de trafic faut-il pour que le RUM soit statistiquement fiable ?

La question dépend plus de la variance de vos métriques que du volume brut. Avec 10 000 visites par mois, un échantillon de 1 000 sessions peut suffire pour une page à faible variabilité. Mais si votre trafic est segmenté en 15 pays avec des conditions réseau très différentes, chaque segment devient trop petit pour être exploitable. Mieux vaut réduire le nombre de segments et avoir des données solides sur chacun que d’éclater le trafic en micro-groupes sans signification statistique.

Quiz personnalisé

Votre recommandation sur vodafone-aqualia

Trois questions pour cibler la config / le produit fait pour votre usage.

Q1 Votre usage principal ?
Q2 Votre budget ?
Q3 Votre contrainte prioritaire ?