Every Chrome extension built today uses Manifest V3. If you read tutorials or documentation older than 2024, you'll see references to Manifest V2 — and most of those examples won't run anymore. This post explains what Manifest V3 is, what changed from V2, and why the change matters for extensions you build today.
What is a manifest file?
Every Chrome extension has a manifest.json file at its root. The manifest tells Chrome:
- The extension's name and version
- What permissions it requires
- Which scripts run, where, and when
- What UI elements (popup, options page, etc.) the extension provides
The manifest is the contract between your extension and Chrome. The format version of that contract is the "manifest version."
What changed in V3
Three changes matter more than the rest:
1. Service workers replaced background pages. In V2, an extension could keep a persistent background page running indefinitely. In V3, background logic runs in service workers — which Chrome can shut down when idle and wake up when needed. The practical effect: extensions consume far less memory.
2. chrome.scripting replaced chrome.tabs.executeScript. Programmatic content script injection got a more capable API. You can inject CSS, JavaScript, or both, scoped to specific frames, with cleaner error handling.
3. Stricter content security policy. Remote code execution is largely banned. Extensions can no longer load JavaScript from external servers and run it. This closes a major attack vector (and breaks some extension patterns, especially those that used to fetch and eval third-party scripts).
Why Google made the switch
Two reasons:
Security. V2's permissive model meant a single compromised extension could exfiltrate huge amounts of user data. V3's stricter model significantly reduces what a malicious or compromised extension can do.
Performance. Persistent background pages were a major source of Chrome memory bloat. Service workers reduce overall memory consumption across the browser.
Critics argue V3 also conveniently makes ad-blockers less powerful (the declarativeNetRequest API replaces webRequest.blocking, which had been the foundation of uBlock Origin's matching engine). Google's official position is that V3 is about security; the ad-blocking implication is a side effect, not a goal. Reasonable people disagree.
What this means for extensions you build today
If you're using PlugThis or any other current builder, you're building V3 extensions by default. The output is Manifest V3 compliant, uses service workers, and respects the new CSP rules. You don't have to think about manifest versions — the tooling handles it.
The only place you might run into V2 references is in old tutorials. If you find a tutorial that talks about "persistent background pages" or "browser_action," it's outdated. Look for content from 2024 onward.
When will V3 change again?
There's no announced V4. Chrome typically holds extension API contracts stable for years between major versions. V3 was announced in 2018 and only became mandatory in 2024. If V4 ever arrives, expect a similar multi-year deprecation period for V3.
In the meantime, V3 is the foundation. Every extension in our catalog uses it. Every competitor we've rebuilt uses it. The format isn't going anywhere soon.
Udaya writes about Chrome extensions, AI tooling, and the shifting economics of building your own software.