Sari la conținut
31 iulie 2026 · Manual

Manual: construirea extensiilor de browser

Acest articol descrie produsul la data publicării. Vezi AI Builder și Echipe de agenți pentru capabilitățile actuale.

Manual: construirea extensiilor de browser

Priya — m-ai întrebat săptâna trecută dacă instrumentul de urmărire a scăderilor de preț pe care îl construiești ar trebui să interogheze pagina produsului o dată la un minut "ca să fie sigur". Înainte să-l implementăm așa, hai să trecem prin toate detaliile, pentru că intervalul de interogare este de fapt cea mai mică decizie de aici, și stabilirea corectă a structurii de la început te va scuti de un ciclu de revizuire sau două înainte de lansare.

Începe cu prompt-ul propriu-zis. Mi-ai spus "o extensie care urmărește această pagină și mă anunță când scade prețul", și e o idee bună, dar nu e încă o specificație — builder-ul trebuie să știe când acționează, nu doar ce face. Instrumentul tău de urmărire este a treia dintre cele trei forme de declanșare, și merită să știi și celelalte două chiar dacă nu ai nevoie de ele, pentru că forma determină permisiunile, iar permisiunile determină calendarul revizuirii.

  • Click-to-act este cea mai economică variantă: un popup care rulează o singură dată pe pagina curentă când cineva apasă pe iconița din bara de instrumente — de exemplu "adună toate prețurile de pe această pagină într-o listă".
  • Script de conținut permanent activ rulează automat pe un tipar de URL specificat de tine — util pentru ceva de genul evidențierii numelui unui concurent pe fiecare pagină dintr-un domeniu, dar trebuie să spui explicit tiparul, pentru că "pe site-urile noastre interne" este interpretat mai restrictiv decât ai intenționat.
  • Cazul tău este al treilea: un instrument de urmărire în fundal, cu stare care persistă indiferent dacă fila este deschisă sau nu, rulând pe un service worker sub MV3, semnalizând iconița când se schimbă ceva.

Este singura formă în care builder-ul ar trebui să îți pună o întrebare de clarificare, și o va face — pentru că numărul de interogări este un compromis real, nu o formalitate.

Ceea ce mă aduce înapoi la instinctul tău de "la fiecare minut". Am cerut aproape exact build-ul tău acum ceva timp — urmărește o pagină, marchează iconița la o schimbare de preț — și prima variantă interoga la fiecare 60 de secunde. Funcționa bine pentru o singură persoană care testa local. Înmulțește asta cu oricâți oameni instalează efectiv aplicația și bombardezi pagina de produs a cuiva fără niciun motiv, pentru că prețurile de pe o listare de retail obișnuită nu se schimbă mai mult de câteva ori pe zi. Spune-i builder-ului "verifică la fiecare 30 de minute" în prompt. Nu e un compromis, e cererea mai onestă — nimeni nu are nevoie de alerte sub un minut de la o extensie de browser, și-ți vei mulțumi mai târziu când nu va trebui să explici unui reviewer de ce extensia ta contactează serverul de 1.440 de ori pe zi.

Părțile la care nu trebuie să te gândești

Ai menționat că ești neliniștit în privința manifestului — nu fi, e exact lucrul de care chiar nu trebuie să te atingi. Ambele magazine cer acum Manifest V3; MV2 nu mai este acceptat pentru listări noi, iar Chrome elimină activ extensiile MV2 încă active. Schimbarea principală în MV3 este că logica ta din fundal rulează ca un service worker în loc de o pagină de fundal persistentă — pornește la un eveniment, browserul o poate opri între evenimente, iar starea trebuie să treacă prin chrome.storage în loc să stea pur și simplu într-o variabilă. Acesta e exact genul de detaliu de ciclu de viață pe care builder-ul îl scrie corect implicit. Nu vei vedea niciodată un fișier manifest decât dacă mergi să-l cauți.

Ce ar trebui să-ți concentrezi atenția în realitate sunt permisiunile, pentru că acestea decid cât de repede merge recenzia ta, nu codul. Watcher-ul tău are nevoie de alarms pentru interogare și probabil de storage pentru a reține ultimul preț — nu are nevoie de tabs sau <all_urls>, iar dacă ceri "posibilitatea de a funcționa pe orice site pe viitor" pentru că s-ar putea să o extinzi mai târziu, builder-ul va construi conform acelei cerințe și vei solicita acces larg la hosturi pentru o funcție care încă nu există. Aceasta e cea mai înfricoșătoare linie din dialogul de instalare — "citește și modifică date pe orice site pe care îl vizitezi" — și este totodată lucrul care transformă o recenzie automată într-una manuală. Descrie ce face astăzi. Extinde mai târziu, dacă chiar ai nevoie.

Mai sunt două lucruri care merită treizeci de secunde de atenție înainte să declari asta gata: interfața popup-ului și iconițele.

  • Interfața popup-ului — o pagină de opțiuni implicită, cu simple casete de bifat, fără ierarhie, este o sursă reală de recenzii de o stea care nu au nicio legătură cu dacă extensia funcționează sau nu. A ta are doar câteva setări (URL-ul, poate intervalul), dar tot ar trebui să arate ca și cum aparține unui produs, nu ca un formular aruncat pe ecran.
  • Iconițele — verifică iconița la toate cele patru dimensiuni Chrome (16, 32, 48, 128px, cu o matrice ușor diferită pentru Firefox), pentru că un logo care e clar la 128 devine o pată la 16, exact acolo unde stă în bara de instrumente aglomerată în cea mai mare parte a zilei.

Înainte să atingi vreunul dintre magazine

Testează asta cu adevărat, nu doar în previzualizarea din chat. Ce primești din build este o extensie reală, încărcabilă, așa că mergi la chrome://extensions, activează modul dezvoltator, "încarcă necompactat" și rulează-o pe pagina de produs reală care te interesează — nu pe o versiune simulată a ei. Aș verifica manual în mod special două lucruri: mesajul de solicitare a permisiunilor la instalare spune ceea ce te-ai aștepta, dat fiind ce ai cerut, și ce se întâmplă dacă scriptul de conținut ajunge vreodată pe o pagină pentru care nu a fost construit — eșuează discret sau aruncă ceva vizibil? Ambele durează sub un minut și ambele sunt genul de bug evident în momentul în care te uiți și invizibil dacă nu o faci.

Când ești pregătit să lansezi efectiv, vei trece prin propriile tale conturi de dezvoltator din ambele magazine — tu deții listarea, această platformă nu ți-o gestionează. Și vreau să subliniez că cele două magazine nu sunt deloc simetrice, pentru că nu vreau să-ți planifici data de lansare presupunând că sunt.

MagazinProcesul de trimitere spre aprobare
ChromeCompletează automat listarea — titlu, descriere, categorie și textul de justificare a permisiunilor pe care recenzia chiar îl citește, generat din ceea ce face codul, nu tastat separat — ceea ce contează, pentru că justificările nepotrivite sunt un motiv comun de respingere, de sine stătător.
FirefoxPractic fără intervenție; pipeline-ul Mozilla este mai lejer și trimiterea trece pur și simplu.

Kitul de listare care se generează după terminarea build-ului tău va produce, de asemenea, capturi de ecran realizate din rularea reală a extensiei tale (nu un mockup), textul de listare și răspunsuri privind practicile de confidențialitate verificate în raport cu codul real, nu completate din memorie. Acest ultim aspect contează mai mult decât pare pentru ceva care comunică cu o pagină externă: chestionarul de confidențialitate al Chrome pune întrebări simple de tip da/nu despre gestionarea datelor, iar a răspunde "nu" la "colectează acest lucru date" atunci când watcher-ul tău interoghează și stochează prețuri este genul de mică necinste care duce la retragerea aplicației după lansare, nu doar la respingere înainte. Faptul că răspunsurile sunt verificate în raport cu ceea ce face codul închide automat acest decalaj pentru tine.

Specific pentru data ta de lansare:
MagazinTimp tipic de recenzie
FirefoxOre, uneori sub una
ChromeCâteva zile, ocazional aproape două într-o săptămână proastă

Extensiile cu persistență în fundal, precum a ta, au mai multe șanse să ajungă pe culoarul mai lent, de recenzie manuală, decât una simplă de tip click-to-act. Niciunul dintre noi nu poate influența acea coadă. Planifică-ți anunțul în funcție de calendarul Chrome, nu al Firefox, și nu programa nimic pentru chiar ziua în care trimiți spre aprobare.

Un ultim lucru, pentru că te cunosc — probabil te gândești deja să adaugi "sincronizează lista mea de urmărire pe toate dispozitivele" și "urmărește istoricul prețurilor în timp" odată ce lansezi asta. E în regulă, dar să știi că fiecare dintre acestea este o permisiune nouă, iar o permisiune nouă poate însemna o recenzie mai lentă decât cea prin care tocmai ai trecut. Dacă ești sigur că vrei versiunea mai amplă, chiar e mai bine să ceri asta acum și să accepți o recenzie mai lentă decât să adaugi permisiunile una câte una. Dacă nu ești încă sigur, lansează ce ai — un watcher cu domeniu de aplicare strâns trece rapid, îți aduce utilizare reală, iar utilizarea reală valorează mai mult acum decât o listă mai lungă de funcții care stă în coada Chrome. Poți oricând să ceri mai mult mai târziu; nu poți recupera această lansare odată ce e blocată în recenzie manuală pentru ceva de care nu aveai încă nevoie.

Manual
DistribuieXLinkedInFacebookRedditQuoraWhatsAppTelegramEmail
← Toate articolele