Back to Blog
July 8, 20265 min read

How Manifest V3 Affects Proxy Extensions — and How Vinea Adapts

Manifest V3 is a major upgrade to Chrome's extension spec with deep impact on proxy extensions. This post explains MV3's key changes (Service Worker, declarativeNetRequest, permission model) and how Vinea implements smart routing via chrome.proxy.settings under MV3.

#Technology#Manifest V3#Chrome Extension
Mu Chen

Mu Chen

Product & Content Lead

How Manifest V3 Affects Proxy Extensions — and How Vinea Adapts
Contents

Starting June 2024, Chrome forces all new extensions to be based on Manifest V3, and began phasing out MV2 extensions in mid-2025. MV3 is not a minor upgrade — it changed the extension runtime model, APIs, and permission system. For proxy extensions, the impact is especially deep — many legacy extensions (certain SwitchyOmega features, webRequest-based ad blockers) either don't work under MV3 or have reduced capabilities.

This post explains MV3's specific impact on proxy extensions and how Vinea fully preserves smart routing under MV3.

MV3's key changes

1. Service Worker replaces Background Page

MV2's background page was a persistent page that could hold state continuously. MV3 switches to Service Worker — event-driven, only wakes on external events, and idle for 30 seconds before sleeping.

Impact on proxy extensions: Can no longer rely on a persistent background process for real-time monitoring. Vinea's design is "configurator, not middleman" — once rules are set, the browser engine handles them, no background process needed. This naturally fits MV3.

2. declarativeNetRequest replaces webRequest (blocking)

MV2's webRequest.onBeforeRequest could block requests and rewrite URLs. MV3 switches to declarativeNetRequest — rules must be declared in advance, no dynamic blocking.

Impact on proxy extensions: Extensions that rewrite traffic via blocking webRequest fail under MV3. But proxy extensions use chrome.proxy.settings, not webRequest — this API is fully retained under MV3. Vinea uses chrome.proxy.settings to set the proxy server and bypass list, unaffected.

3. Permission model tightened

MV3 tightened review of sensitive permissions like <all_urls>, tabs, history. Extensions must declare specific permissions and minimize requests.

Impact on proxy extensions: Vinea only requests 7 permissions — proxy, storage, activeTab, webRequest (for 407 auth), identity, contextMenus, management — no <all_urls>, tabs, history, cookies. See Security & Privacy.

chrome.proxy.settings API status under MV3

chrome.proxy.settings is a long-stable Chrome API, available under both MV2 and MV3. It accepts:

  • value.mode: direct, auto_detect, pac_script, fixed_servers, system
  • value.pacScript.data: PAC script content
  • value.bypassList: list of domains not using the proxy

Vinea uses pac_script mode, compiling smart routing rules into a PAC script for the browser. This way:

  • The browser engine handles actual routing (fast)
  • The extension itself doesn't touch traffic (privacy-safe)
  • Rules still apply when the Service Worker is asleep (stable)

Vinea's MV3 adaptation

Vinea was built on MV3 from the start, no MV2 legacy. Specific adaptations:

| Dimension | MV2 approach | Vinea's MV3 approach | |-----------|-------------|----------------------| | Background | Persistent background page | Event-driven Service Worker, wakes on user action | | Rules | Real-time webRequest interception | chrome.proxy.settings + PAC script, browser engine routes | | Permissions | <all_urls> common | Only 7 specific permissions, no full-site access | | 407 auth | webRequest blocking | webRequest async (MV3 allows non-blocking 407 auth) | | Domain rules | Background process real-time match | PAC script pre-compiled, browser engine matches |

What proxy extensions can and can't do under MV3

Under MV3, proxy extensions can:

  • ✅ Set proxy server (chrome.proxy.settings)
  • ✅ Domain-level routing (PAC script bypass list)
  • ✅ 407 proxy auth (webRequest async)
  • ✅ Custom rule management (storage)

Under MV3, proxy extensions can't:

  • ❌ Block requests (declarativeNetRequest has limited support)
  • ❌ Rewrite request headers in real-time (requires declarativeNetRequest rules)
  • ❌ Persistent background monitoring (Service Worker sleeps)

Vinea's design fits exactly within "can do" — it doesn't intercept, monitor, or rewrite in real-time, it only configures the browser proxy + domain rules. This lets it fully retain capability under MV3, with clearer privacy boundaries.

What this means for users

For end users, MV3's impact is mostly invisible — extensions look and feel similar. The real changes are under the hood:

  • Better battery life on laptops. Service Workers sleep when idle, unlike MV2's persistent background pages. For proxy extensions, this means Vinea's impact on idle battery life is near-zero — it only wakes when you interact with it.
  • More stable browsing. Because Vinea doesn't intercept traffic in real-time (it only configures the browser's proxy settings), the Service Worker being asleep doesn't break your connection. Your rules keep working even when the extension's background is idle.
  • Tighter privacy boundaries. MV3's permission model forced extensions to justify each permission. Vinea requests no <all_urls>, no tabs, no history — only what's functionally needed. This is both an MV3 requirement and a deliberate design choice.
  • Some older extensions will break. Extensions that relied on blocking webRequest (some ad blockers, some proxy tools that rewrite traffic) lost capabilities under MV3. If you're migrating from such an extension, Vinea's approach is intentionally simpler — it doesn't try to do what MV3 disallows.

The net result: under MV3, proxy extensions that were designed for MV3 (like Vinea) are more private, more stable, and less resource-hungry than their MV2 predecessors. Extensions that were retrofitted from MV2 often have reduced functionality.

FAQ

After Manifest V3, are proxy extensions all dead?

No. MV3 restricted blocking webRequest, but chrome.proxy.settings remains available under MV3. Vinea uses this API for smart routing and is fully MV3-compatible.

Will using a Service Worker make Vinea slower to respond?

No. Vinea's proxy configuration is handled by the browser engine. The Service Worker only wakes on user-initiated actions (switching nodes, adding rules) and stays idle otherwise. Daily browsing feels identical to MV2.

Can domain-level routing still be done under MV3?

Yes. chrome.proxy.settings accepts a PAC script or bypass list — Vinea uses a bypass list for domestic/foreign domain routing. This is a different API path from MV3's declarativeNetRequest and is unaffected.


To learn how Vinea's smart routing works in detail, read Smart Routing Explained.

Vinea follows the principle of least privilege — see Vinea Security & Privacy.

Try Vinea Free

Smart routing, zero background processes, works right after install. New users get a 3-day free trial automatically.

Related posts

Smart Routing Explained: How Vinea Automatically Routes Traffic by Domain

Smart routing is Vinea's mechanism for automatically deciding whether browser traffic goes through the proxy or connects directly, based on the destination domain. It includes a built-in bypass list of 350+ domestic domains and supports custom rules.

GuideSmart RoutingDomain Rules

2026-07-06 · 5 min read