How to Keep Using Manifest V2 Extensions in Chrome 138/139 and Newer

Chrome 138 has just been officially released. Having previously written “How to Force Install the World’s Best Ad Blocker uBlock Origin on Chrome”, I decided to investigate ways to keep Manifest V2 support in Chrome. Chrome 138 is the last version to fully support Manifest V2. Starting with version 139, Manifest V2 will be disabled by default. However, there are still methods to keep it enabled in versions 139 and 140.
1 Use Chrome Enterprise Policy to Extend Manifest V2 Support
Starting from Chrome 128, the notification “This extension is no longer supported” will appear upon the first launch after an update. You need to re-enable the extension in the “Extensions” menu to use it. If you want to prevent this notification and stop Manifest V2 extensions from being automatically disabled, you can use a Chrome Enterprise Policy.
1.1 Windows
Choose one of the following two methods:
Method 1: Use the Command Line
Execute the following commands, then open chrome://policy
in Chrome and click the “Reload policies” button.
reg.exe add "HKLM\SOFTWARE\Policies\Google\Chrome" /v ExtensionManifestV2Availability /t REG_DWORD /d 2 /f
reg.exe query "HKLM\SOFTWARE\Policies\Google\Chrome" /v ExtensionManifestV2Availability
Method 2: Import a Registry File
Save the following content as ExtensionManifestV2Availability.reg
, then double-click the file to import it into the registry. Afterward, open chrome://policy
in Chrome and click the “Reload policies” button.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
“ExtensionManifestV2Availability”=dword:00000002
1.2 Mac
Execute the following command in the Terminal:
sudo tee /Library/Managed\ Preferences/com.google.Chrome.plist >/dev/null <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ExtensionManifestV2Availability</key>
<integer>2</integer>
</dict>
</plist>
EOF
1.3 Linux
Add the following content to the file /etc/opt/chrome/policies/managed/enable-manifestv2.json:
{
"ExtensionManifestV2Availability": 2
}
This method is applicable for Chrome versions 110 through 138.
For more details, please see the official documentation: https://chromeenterprise.google/policies/#ExtensionManifestV2Availability
2 Use Flags or Command-Line Arguments to Enable Manifest V2 Support
Although the ExtensionManifestV2Availability
policy will no longer work starting with version 139, there are still ways to continue using Manifest V2 extensions.
Chrome provides several flags to control the deprecation timeline for Manifest V2:
- extension-manifest-v2-deprecation-disabled
- extension-manifest-v2-deprecation-unsupported
- extension-manifest-v2-deprecation-warning
In Chrome 138 and 139, extension-manifest-v2-deprecation-unsupported
is Disabled by default, while extension-manifest-v2-deprecation-disabled
and extension-manifest-v2-deprecation-warning
are Enabled by default.
The last version these flags were available was 137. However, Chrome provides another flag (temporary-unexpire-flags-m{$recent_milestones}
, where recent_milestones refers to the previous two version numbers) to re-enable expired flags from the last two releases.
Additionally, the flag allow-legacy-mv2-extensions
is provided for developers to maintain (migrate, upgrade, etc.) unpacked Manifest V2 extensions. This flag is Disabled by default and its final available version is 139.
2.1 Using Flags to Enable Manifest V2 Support
- Open
chrome://flags/#temporary-unexpire-flags-m137
and set it to Enabled. - Restart Chrome, then navigate to and configure the following flags:
chrome://flags/#extension-manifest-v2-deprecation-warning
→ Disabledchrome://flags/#extension-manifest-v2-deprecation-disabled
→ Disabledchrome://flags/#extension-manifest-v2-deprecation-unsupported
→ Disabledchrome://flags/#allow-legacy-mv2-extensions
→ Enabled
This method is applicable for Chrome versions 138 and 139.
2.2 Using Command-Line Arguments to Enable Manifest V2 Support
Because the chrome://flags
page only lists two temporary-unexpire-flags-m… flags at a time (meaning it only supports re-enabling flags from the previous two milestones), so Chrome 140 will not have temporary-unexpire-flags-m137
. This makes it impossible to configure the extension-manifest-v2-deprecation-*
flags from the flags page.
However, the code related to Manifest V2 has not yet been removed in version 140. You can still use the --disable-features
command-line argument to disable the corresponding features (ExtensionManifestV2Unsupported, ExtensionManifestV2Disabled) and thereby re-enable Manifest V2 support.
add command line to chrome:
chrome --disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled
This method is applicable for Chrome versions 131.0.6754.0 and newer, up until the version right before Manifest V2 code is completely removed from Chrome.
Internally, each Chrome flag corresponds to a “feature.” For example, the flag extension-manifest-v2-deprecation-disabled
corresponds to the feature ExtensionManifestV2Disabled
. You can see the mapping in the Chromium source code.
Starting from version 140.0.1287.0, ExtensionManifestV2Unsupported is Enabled by default. See the relevant diff [Extensions MV2] Enable “ExtensionManifestV2Unsupported” by default .
It is anticipated that Manifest V2-related code may be completely removed in version 142.
2.3 Relate Code
expired_flags_list.cc;l=435-437
generated temporary-unexpire-flags-m flag
gen temporary-unexpire-flags-m script
extension_features.cc;l=83-107
flag-metadata.json;l=4749-4761
CalculateCurrentExperimentStage
3 Reference
https://github.com/uBlockOrigin/uBlock-issues/discussions/3690
https://github.com/uBlockOrigin/uBlock-issues/discussions/2977#discussioncomment-13593599
https://www.reddit.com/r/uBlockOrigin/comments/1itw1bz/end_of_support_for_ubo_on_chrome_chromium/
https://www.reddit.com/r/Adblock/comments/1luqxs1/whats_currently_the_best_way_to_force_reenable/
https://www.tjsky.net/tutorial/1009
https://meta.appinn.net/t/topic/73073
https://tg.okhk.net/posts/6182
https://www.v2ex.com/t/1144737