Dev.to
7/24/2026

The original title is "Shipping a Chrome Extension That Works Across Sites You Do Not Control"
Original: Shipping a Chrome Extension That Works Across Sites You Do Not Control
Short summary
Shipping a Chrome extension across uncontrolled sites means surviving service worker termination under MV3, content script isolation limits, and unpredictable DOM changes. Key lessons: persist state in chrome.storage not memory, use layered extraction fallbacks (semantic markup first, site-specific selectors last), prefer activeTab over broad permissions, and batch permission changes to avoid full re-reviews.
- •MV3 service workers die after ~30s; all state must go to chrome.storage
- •Layer extraction fallbacks: semantic markup first, site-specific selectors as last resort
- •Use activeTab + optional_host_permissions instead of <all_urls> for faster review and fewer install objections
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



