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.

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.

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.

powershell

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.

text

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
“ExtensionManifestV2Availability”=dword:00000002

Execute the following command in the Terminal:

shell

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

Add the following content to the file /etc/opt/chrome/policies/managed/enable-manifestv2.json:

json

{
  "ExtensionManifestV2Availability": 2
}    
Note

This method is applicable for Chrome versions 110 through 138.

For more details, please see the official documentation: https://chromeenterprise.google/policies/#ExtensionManifestV2Availability

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
Note

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.

  1. Open chrome://flags/#temporary-unexpire-flags-m137 and set it to Enabled.
  2. Restart Chrome, then navigate to and configure the following flags:
    • chrome://flags/#extension-manifest-v2-deprecation-warningDisabled
    • chrome://flags/#extension-manifest-v2-deprecation-disabledDisabled
    • chrome://flags/#extension-manifest-v2-deprecation-unsupportedDisabled
    • chrome://flags/#allow-legacy-mv2-extensionsEnabled
Note

This method is applicable for Chrome versions 138 and 139.

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:

text

chrome --disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled
Note

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.

Note

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.

about_flags.cc;l=9511-9528

about_flags.cc;l=11662-11667

expired_flags_list.cc;l=435-437

expired_flags_list.cc;l=30

generated temporary-unexpire-flags-m flag

gen temporary-unexpire-flags-m script

extension_features.cc;l=83-107

Chrome main version

flag-metadata.json;l=4749-4761

flag-metadata.json;l=151-155

CalculateCurrentExperimentStage

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

https://www.v2ex.com/t/1144711

https://www.tjsky.net/tutorial/1186

Related Content