Dev.to
7/6/2026

The original title is "5 Manifest V3 Gotchas That Cost Me Way More Time Than They Should Have"
Original: 5 Manifest V3 Gotchas That Cost Me Way More Time Than They Should Have
Short summary
Chrome's Manifest V3 introduces breaking changes that silently cause production failures. Five critical gotchas: service workers don't persist state in memory, event listeners must register synchronously before Chrome discards them, inline scripts violate CSP policies, async message passing requires explicit channel-keep-open flags, and broad permissions trigger store review scrutiny. Understanding these upfront prevents days of debugging.
- •Service workers lose memory state; use chrome.storage for persistence across lifecycle resets
- •Event listeners must register synchronously at script load, not inside promises or callbacks
- •Manifest V3's CSP bans inline scripts and eval; refactor to external files with JS event listeners
- •Async message passing requires 'return true' to keep channels open for late sendResponse calls
- •Avoid <all_urls> permissions; use activeTab and optional_permissions for user trust and store approval
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



