1. Úvod
1.1 Co je Manifest V3
Manifest V3 (MV3) je aktuální standard pro WebExtensions v prohlížečích založených na Chromiu (Chrome, Edge, Brave, Vivaldi). Firefox zatím zachovává podporu Manifest V2 (MV2), ale MV3 již podporuje také. Safari používá vlastní formát, ale konvergoval na většinu konceptů MV3.
MV3 přináší:
bezpečnostní omezení (žádný
eval
, žádné dynamické skripty)Service Workers místo perzistentního
background.js
deklarativní
host_permissions
aaction
omezené API (např. WebRequest nahrazeno
declarativeNetRequest
)
1.2 Podpora napříč prohlížeči
Chrome, Edge, Brave, Vivaldi – pouze MV3
Firefox – MV2 i MV3 (https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Manifest_Version_3)
Safari – vlastní WebExtensions adaptace MV3 (https://developer.apple.com/documentation/safariservices/safari_web_extensions)
1.3 Rozdíly MV2 vs. MV3
Perzistentní vs. event-driven background
Dynamické skripty vs. deklarativní povolení
Plné webRequest API vs.
declarativeNetRequest
2. Anatomie rozšíření
2.1 manifest.json
Povinný kořenový soubor, definuje:
název, verzi, popis
permissions
,host_permissions
background.service_worker
action
(popup)content_scripts
web_accessible_resources
Viz: https://developer.chrome.com/docs/extensions/mv3/manifest
2.2 Background skript – Service Worker
Nahradil
background.js
Běží pouze při události (např. klik, zpráva)
Nutnost explicitní registrace listenerů
2.3 Content skripty
Vstřikují se do stránek (HTML/JS)
Komunikace s background skriptem přes
chrome.runtime.sendMessage
aonMessage
2.4 UI komponenty
action.default_popup
: popup.htmloptions_page
nebooptions_ui
side_panel
vlastni stránky pomocí
chrome-extension://
URL
2.5 Ikony, styly, assets
Ikony v PNG: 16px, 48px, 128px
CSS/JS pro popup/options
web_accessible_resources
– co lze načítat ze stránky
3. Technologie a nástroje
3.1 Jazyk a knihovny
TypeScript / JavaScript
React, Svelte, Vue (přes bundler)
3.2 Bundlery
Webpack, Rollup, Vite – výstup do
dist/
složky
3.3 Speciální frameworky
Plasmo (https://www.plasmo.com/): starter pro MV3 s HMR, auto-bundlingem popupu a backgroundu
Bedframe: struktura pro multi-platformní rozšíření
4. AI asistovaný vývoj
4.1 VS Code
Doporučeno jako primární editor
Pluginy pro linting, autoformátování, testování, debug
4.2 Cursor.com
Prompt-based vývoj s kontextovou znalostí celého projektu
4.3 Windsurf.com
Podobný přístup jako Cursor, zaměřený na širší tok dokumentace a roadmap
4.4 Využití LLM
Generování boilerplate kódu
Tvorba testů, typů, anotací
Dokumentace přes JSDoc / TSDoc generovaná automaticky
5. Dokumentace
5.1 Komentáře v kódu
JSDoc/TSDoc – pro VSCode i generování dokumentace
5.2 Generování dokumentace
TypeDoc, Docusaurus, GitHub Pages
Automatické z README.md / src¨
5.3 Changelog a verzování
Conventional Commits + Semantic Release
5.4 Roadmapy
Mermaid.js – https://mermaid.js.org/
Auto-generace z YAML nebo Markdownu
5.5 Automatizace
CI/CD generuje dokumentaci po každém commitu do hlavní větve
6. Testování
6.1 Jednotkové testy
Jest, Mocha
Mockování
chrome.*
pomocísinon-chrome
nebojest-chrome
6.2 End-to-End testy
Playwright, Puppeteer – testy s reálným uživatelským chováním
6.3 Debugging
chrome://extensions
→ aktivace "Developer mode"Načtení rozšíření z
dist/
Debug přes
chrome.runtime
, DevTools
7. CI/CD a publikace
7.1 CI/CD
GitHub Actions: build → test → verzování → zip → publikace
7.2 Automatické verzování
Semantic Release, conventional commits
Generování changelogu a tagů
7.3 Publikace
Chrome Web Store: https://chromewebstore.google.com/devconsole
Mozilla AMO: https://addons.mozilla.org/en-US/developers/
Edge Add-ons: https://partner.microsoft.com/en-us/dashboard/microsoftedge
Safari: přes Xcode / Apple Developer ID
7.4 Oddělené verze
Firefox může potřebovat MV2 fallback nebo polyfill
browser.*
vs.chrome.*
7.5 ZIP balíček
zip -r extension.zip dist/*
Lint přes
web-ext lint
8. Vývojový workflow
8.1 Od nápadu k návrhu
Identifikace problému / potřeby
Návrh architektury (popup, background, content, storage)
8.2 Iterativní vývoj
Lokální testování + hot reload
V dev režimu:
manifest.json
s "host_permissions": ["<all_urls>"]
8.3 Pre-review checklist
Oprávnění pouze nutná
Žádný eval ani inline JS
Vysvětlení oprávnění v popisu rozšíření
8.4 Publikace
Review (několik dní u Chrome)
Dodržet pravidla:
https://developer.chrome.com/docs/webstore/program_policies/
8.5 Údržba
CI testy + hlídání deprekovaných API
Automatická dokumentace + GitHub Issues
9. Open-source příklady
9.1 Bitwarden
Komplexní UI + background + crypto + storage
9.2 MetaMask
MV3 adaptace, silné oddělení vrstev
9.3 Dark Reader
Pokročilé content scripty, transformace CSS v reálném čase
9.4 React DevTools
https://github.com/facebook/react/tree/main/packages/react-devtools-extensions
Pokročilý panel a hooky do webové stránky
9.5 uBlock Origin Lite (MV3)
Verze Lite jako MV3 kompatibilní filtrační systém
9.6 Refined GitHub
Modulární rozšíření pro vylepšení UI GitHubu
🔗 Zdroje:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
https://learn.microsoft.com/cs-cz/microsoft-edge/extensions-chromium/landing/
https://github.com/jhen0409/react-chrome-extension-boilerplate
1. Úvod
1.1 Co je Manifest V3
1.2 Podpora napříč prohlížeči
1.3 Rozdíly mezi MV2 a MV3
2. Anatomie rozšíření (složková struktura a role souborů)
2.1 Povinný soubor manifest.json
2.2 Background skript (Service Worker)
2.3 Content skripty
2.4 Uživatelské rozhraní:
- Popup
- Options page
- Side panel
- Extension pages
2.5 Ikony, styly a web_accessible_resources
3. Technologie a nástroje
3.1 TypeScript, React, Svelte, Vite
3.2 Webpack/Rollup – bundlování
3.3 Speciální frameworky (Plasmo, Bedframe)
4. AI asistovaný vývoj
4.1 VS Code a jeho rozšíření
4.2 Cursor.com – promptování a generování
4.3 Windsurf.com – kontextová editace a údržba
4.4 Využití LLM pro testy, strukturu a komentáře
5. Dokumentace
5.1 JSDoc / TSDoc
5.2 Docusaurus a uživatelská dokumentace
5.3 Changelog a verzování
5.4 Mermaid.js – roadmapy jako diagramy
5.5 Automatizace generování dokumentace
6. Testování
6.1 Jednotkové testy (Jest, Mocha)
6.2 Mockování chrome.*
API
6.3 End-to-end testy (Puppeteer, Playwright)
6.4 Debugging přes chrome://extensions
, DevTools
7. CI/CD a publikace
7.1 GitHub Actions, Semantic Release
7.2 Automatické verze, Changelog
7.3 Publikace do:
- Chrome Web Store
- Mozilla AMO
- Microsoft Edge Add-ons
- Safari App Store (základní info)
7.4 Oddělené verze pro Chrome a Firefox
7.5 ZIP balíček a GitHub Releases
8. Vývojový workflow
8.1 Od nápadu k architektuře
8.2 Iterativní vývoj s reloadem
8.3 Pre-review checklist
8.4 Publikace a propagace
8.5 Údržba a budoucí verze
9. Open-source příklady
9.1 Bitwarden
9.2 MetaMask
9.3 Dark Reader
9.4 React DevTools
9.5 uBlock Origin Lite
9.6 Refined GitHub
🧾 SOUHRN
-
Manifest V3 je nový standard pro tvorbu rozšíření, povinný pro Chrome, doporučený pro ostatní (Firefox ho zatím podporuje i vedle MV2).
-
Každé rozšíření musí obsahovat
manifest.json
, kde se definují oprávnění, skripty, popupy, content scripty atd. -
Background skript v MV3 běží jako Service Worker – neperzistentní, reaguje jen na události.
-
Content skripty pracují uvnitř webových stránek – injektují se přes manifest a komunikují s pozadím přes messaging.
-
UI komponenty (popup, options, side panel) jsou HTML stránky s JS a plným přístupem k API rozšíření.
-
MV3 zakazuje dynamické načítání kódu z webu – vše musí být zabalené.
-
Vývoj se provádí často v TypeScriptu + React/Svelte s bundlery jako Vite/Webpack.
-
Pomáhají AI nástroje (Cursor, Windsurf) – generují kód, refaktorují, dokumentují.
-
Doporučuje se psát JSDoc/TSDoc komentáře a generovat dokumentaci (např. pomocí TypeDoc nebo Docusaurus).
-
Testy: jednotkové (např. pomocí Jest + mock chrome.* API) i end-to-end (Puppeteer, Playwright).
-
Automatizace pomocí CI/CD (GitHub Actions): build, test, verzování, publikace do obchodů.
-
Publikace do obchodů (Chrome, Firefox, Edge, Safari) má svá pravidla – žádné
eval
, odůvodněná oprávnění. -
Roadmapy lze udržovat v Markdownu s Mermaid diagramy.
-
Příklady: Bitwarden, MetaMask, Dark Reader, React DevTools – ukazují různé přístupy a architektury.
-
Důraz na modularitu, oddělení vrstev, správu stavů a respektování omezení MV3.
#dev
Žádné komentáře:
Okomentovat