What Manifest V3 is and why it changed everything
Manifest V3 is the current Chrome extension specification. Google replaced Manifest V2 with V3 starting in 2021, and V2 extensions were fully removed from the Chrome Web Store in 2024. Every new Chrome extension must be Manifest V3. There's no exception.
The shift from V2 to V3 invalidated almost every Chrome extension tutorial on the internet. Background pages were replaced with service workers. The webRequest API was constrained. Content scripts work differently. Permission models tightened. Most Stack Overflow answers about Chrome extensions reference dead APIs.
What a Manifest V3 generator produces
The minimum viable Manifest V3 extension needs:
A manifest.json file with the V3 schema — manifest_version: 3, name, version, description, content scripts declarations, permissions list, action (popup) declaration, background service worker registration, icon declarations at 16/48/128 sizes, host permissions if applicable, and CSP declarations.
The content scripts the manifest references — usually one or more JavaScript files plus optional CSS, scoped to specific URL patterns.
The background service worker — a JavaScript file that handles extension events, message passing, alarms, storage, and any logic that needs to persist beyond a single page interaction.
The popup HTML and JavaScript — what shows when the user clicks the extension icon.
Optional pieces — options page, dev tools panel, side panel (Chrome 114+), web accessible resources for content script-injected files.
A working Manifest V3 extension has all of this stitched together correctly. Permissions match what code uses. Content script paths match actual file locations. Service worker registration uses the right format.
PlugThis generates all of this from a description. Validates the manifest before output. Cross-checks permissions against actual code usage. The output loads in Chrome on the first try.
Common Manifest V3 mistakes PlugThis avoids
Hand-coded V3 extensions fail in predictable ways. Forgetting to register the service worker correctly (silent fail, no error message). Declaring permissions in the wrong format (V2 used permissions for everything, V3 splits into permissions and host_permissions). Using chrome.runtime.getBackgroundPage() (deprecated). Missing the default_locale declaration when localizing. Setting the wrong CSP for popup scripts. Trying to use blocking webRequest (forbidden in V3, requires declarativeNetRequest instead).
PlugThis knows about these traps because it's been built specifically for V3. You don't run into them.
V3 service workers vs V2 background pages
The biggest mental model shift between V2 and V3 is service workers. V2 had persistent background pages — JavaScript that ran continuously while the browser was open, with full access to DOM APIs and persistent variables. V3 replaced these with service workers — short-lived, event-driven, no DOM access, and they get killed after periods of inactivity.
This means state persistence has to use Chrome storage APIs, not in-memory variables. Long-running tasks have to use alarms. Some patterns from V2 simply don't work in V3 and need rearchitecting.
PlugThis handles all of this automatically. You describe what should happen ("remember the user's selection," "run a check every 5 minutes," "save data when the tab closes") and the generator implements it correctly with V3 service worker patterns.