Priya — tu m'as demandé la semaine dernière si le surveilleur de baisse de prix que tu construis devait simplement interroger la page produit toutes les minutes « pour être sûr ». Avant que tu n'intègres ça, laisse-moi t'expliquer l'ensemble, car l'intervalle d'interrogation est en fait la plus petite décision ici, et bien poser les bases dès le départ t'évitera un ou deux cycles de révision avant ton lancement.
Commence par le prompt lui-même. Tu m'as dit « une extension qui surveille cette page et me prévient quand le prix baisse », et c'est une bonne idée mais ce n'est pas encore une spécification — le builder a besoin de savoir quand il agit, pas seulement ce qu'il fait. Ton surveilleur est le troisième de trois types de déclencheurs, et il vaut la peine de connaître les deux autres même si tu n'en as pas besoin, car le type détermine les permissions, et les permissions déterminent ton délai de validation.
- Le clic pour agir est le moins coûteux : un popup qui s'exécute une seule fois sur la page actuelle quand quelqu'un clique sur l'icône de la barre d'outils — pense à « récupérer tous les prix de cette page dans une liste ».
- Le script de contenu toujours actif s'exécute automatiquement sur un modèle d'URL que tu spécifies — utile pour, par exemple, surligner le nom d'un concurrent sur chaque page d'un domaine, mais tu dois indiquer explicitement le modèle, car « sur nos sites internes » sera interprété de façon plus restrictive que prévu.
- Ton cas est le troisième : un surveilleur en arrière-plan, un état qui persiste que l'onglet soit ouvert ou non, s'exécutant sur un service worker sous MV3, avec un badge sur l'icône lorsque quelque chose change.
C'est le seul cas où le builder devrait te poser une question de suivi, et il le fera — car le nombre d'interrogations est un vrai compromis, pas une simple formalité.
Ce qui me ramène à ton instinct de « toutes les minutes ». J'ai reçu une demande presque identique à la tienne il y a quelque temps — surveiller une page, badger l'icône lors d'un changement de prix — et la première version interrogeait toutes les 60 secondes. Ça fonctionnait bien pour une personne testant en local. Multiplie ça par le nombre de personnes qui installent réellement cette extension et tu bombardes la page produit de quelqu'un sans raison, car les prix d'une fiche produit classique ne changent pas plus de quelques fois par jour. Dis au builder « vérifier toutes les 30 minutes » dans le prompt. Ce n'est pas un compromis, c'est la demande la plus honnête — personne n'a besoin d'alertes en moins d'une minute d'une extension de navigateur, et tu te remercieras plus tard de ne pas avoir à expliquer à un évaluateur pourquoi ton extension appelle chez elle 1 440 fois par jour.
Les parties auxquelles tu n'as pas à réfléchir
Tu m'as dit être nerveuse à propos du manifeste — ne le sois pas, c'est bien la seule chose à laquelle tu n'as vraiment pas besoin de toucher. Les deux boutiques exigent désormais Manifest V3 ; MV2 n'est plus accepté pour les nouvelles fiches et Chrome retire activement les extensions MV2 encore en ligne. Le principal changement sous MV3 est que ta logique en arrière-plan s'exécute comme un service worker plutôt que comme une page d'arrière-plan persistante — il démarre sur un événement, le navigateur peut le tuer entre les événements, et l'état doit passer par chrome.storage au lieu de simplement vivre dans une variable. C'est exactement le genre de détail de cycle de vie que le builder gère correctement par défaut. Tu ne verras jamais un fichier manifeste à moins d'aller le chercher toi-même.
Ce à quoi tu devrais vraiment accorder ton attention, ce sont les permissions, car c'est ce qui détermine la rapidité de ton examen, pas le code. Ton surveilleur a besoin de alarms pour l'interrogation et probablement storage pour se souvenir du dernier prix — il n'a pas besoin de tabs ou <all_urls>, et si tu demandes « la possibilité de fonctionner un jour sur n'importe quel site » parce que tu pourrais vouloir l'étendre plus tard, le builder construira en fonction de cela et tu demanderas un accès étendu à des hôtes pour une fonctionnalité qui n'existe pas encore. C'est la ligne la plus effrayante de la boîte de dialogue d'installation — « lire et modifier les données sur tous les sites que vous visitez » — et c'est aussi ce qui fait basculer un examen automatisé vers un examen manuel. Décris ce que ça fait aujourd'hui. Élargis plus tard si tu en as réellement besoin.
Deux autres points méritent trente secondes d'attention avant de considérer ceci terminé : l'interface du popup et les icônes.
- Interface du popup — une page d'options par défaut, de simples cases à cocher, sans hiérarchie, est une vraie source d'avis à une étoile qui n'ont rien à voir avec le bon fonctionnement de l'extension. La tienne n'a que quelques paramètres (l'URL, peut-être l'intervalle), mais elle devrait quand même donner l'impression d'appartenir à un produit, pas à un simple formulaire.
- Icônes — fais vérifier l'icône aux quatre tailles de Chrome (16, 32, 48, 128 px, avec une matrice légèrement différente pour Firefox), car un logo net à 128 devient flou à 16, exactement là où il se trouve la plupart du temps, dans une barre d'outils chargée.
Avant de toucher à l'une ou l'autre des boutiques
Teste ceci pour de vrai, pas seulement dans l'aperçu du chat. Ce que tu obtiens du build est une véritable extension chargeable, alors va sur chrome://extensions, activez le mode développeur, « charger l'extension non empaquetée » et lancez-la sur la vraie page produit qui vous intéresse — pas une version simulée. Je vérifierais en particulier deux choses à la main : est-ce que l'invite de permission à l'installation dit bien ce à quoi on s'attend vu ce qui a été demandé, et que se passe-t-il si le content script tombe un jour sur une page pour laquelle il n'a pas été conçu — échoue-t-il silencieusement ou lève-t-il quelque chose de visible ? Les deux prennent moins d'une minute et sont exactement le genre de bug évident dès qu'on regarde, et invisible sinon.
Quand tu seras prête à publier réellement, tu passeras par tes propres comptes développeur sur les deux boutiques — c'est toi qui possèdes la fiche, cette plateforme ne la gère pas à ta place. Et je veux souligner que les deux boutiques ne sont absolument pas symétriques, car je ne veux pas que tu planifies ta date de lancement en supposant le contraire.
| Store | Processus de soumission |
|---|---|
| Chrome | Remplit automatiquement la fiche — titre, description, catégorie, et le texte de justification des permissions que l'examinateur lit réellement, généré à partir de ce que fait le code plutôt que rédigé séparément, ce qui compte car des justifications incohérentes sont à elles seules un motif fréquent de rejet. |
| Firefox | Essentiellement automatique ; le pipeline de Mozilla est plus léger et la soumission passe directement. |
Le kit de fiche généré une fois ton build terminé produira aussi des captures d'écran prises depuis ton extension en fonctionnement réel (pas une maquette), le texte de la fiche, et les réponses sur les pratiques de confidentialité vérifiées par rapport au code réel plutôt que remplies de mémoire. Ce dernier point est plus important qu'il n'y paraît pour quelque chose qui communique avec une page externe : le questionnaire de confidentialité de Chrome pose des questions fermées sur le traitement des données, et répondre « non » à « ceci collecte-t-il des données » alors que ton surveilleur interroge et stocke des prix est le genre de petit mensonge qui fait retirer l'extension après le lancement, pas seulement la rejeter avant. Faire vérifier les réponses par rapport au code comble automatiquement cet écart pour toi.
| Store | Délai d'examen habituel |
|---|---|
| Firefox | Quelques heures, parfois moins d'une |
| Chrome | Quelques jours, parfois près de deux lors d'une mauvaise semaine |
Les extensions à persistance en arrière-plan comme la tienne sont plus susceptibles de tomber dans la file d'examen manuelle, plus lente, qu'une simple extension à clic pour agir. Aucun de nous deux ne peut agir sur cette file d'attente. Planifie ton annonce en fonction du calendrier de Chrome, pas de celui de Firefox, et ne prévois rien le jour même de ta soumission.
Une dernière chose, puisque je te connais — tu penses déjà à ajouter « synchroniser ma liste de surveillance entre appareils » et « suivre l'historique des prix dans le temps » une fois lancé. C'est très bien, mais sache que chacune de ces fonctionnalités est une nouvelle permission, et une nouvelle permission peut signifier un examen plus lent que celui que tu viens de traverser. Si tu es sûre de vouloir la version plus complète, il est réellement préférable de la demander maintenant dans le prompt et d'accepter un examen plus lent plutôt que d'ajouter les permissions une à une. Si tu n'es pas encore sûre, publie ce que tu as — un surveilleur au périmètre restreint passe vite, te donne un usage réel, et un usage réel vaut plus en ce moment qu'une liste de fonctionnalités plus longue coincée dans la file de Chrome. Tu pourras toujours demander plus plus tard ; tu ne pourras pas récupérer ce lancement une fois bloqué en examen manuel pour quelque chose dont tu n'avais pas encore besoin.



