As web technologies evolve, so do the standards and practices around building and maintaining web applications, including Chrome extensions. Google’s introduction of Manifest V3 represents a significant shift in the way Chrome extensions are developed, promising improved security, privacy, and performance. Transitioning from Manifest V2 to V3 can be daunting, but it’s essential for extension developers to adapt to these changes to ensure compatibility and functionality. This post will guide you through the key changes in Manifest V3 and offer practical advice on how to smoothly transition your Chrome extensions.

Understanding the Key Changes in Manifest V3

Manifest V3 introduces several changes that impact how extensions are built and function. The most notable changes include:

  • Service Workers Instead of Background Pages: Manifest V3 replaces persistent background pages with service workers, which are event-driven scripts that run in the background. This change aims to reduce the resources consumed by extensions, as service workers are terminated when not in use and restarted when needed.
  • Declarative Net Request API: This new API replaces the Web Request API for blocking and modifying network requests. The Declarative Net Request API is more privacy-focused, as it allows Chrome to handle network requests according to rules declared by the extension without requiring the extension to have access to the data in the request.
  • Changes to Host Permissions: Manifest V3 encourages more granular and limited permissions. Extensions will request permissions at runtime rather than at installation, increasing transparency and trust among users.
  • Restrictions on Remote Code: There is a more stringent policy on executing remotely hosted code, which aims to prevent security vulnerabilities caused by executing unreviewed code loaded at runtime.

Steps to Transition to Manifest V3

  1. Update the Manifest File: Start by updating the manifest.json file to use "manifest_version": 3. This change is essential to tell Chrome that your extension is using the new version.
  2. Migrate to Service Workers: Convert any background scripts to use a service worker. This involves moving the logic in your existing background page into an event-driven service worker script. You’ll need to manage the lifecycle of the service worker and ensure it activates and deactivates correctly according to your extension’s needs.
  3. Adopt the Declarative Net Request API: Replace any use of the Web Request API with the Declarative Net Request API. You’ll need to define rules in JSON format that tell Chrome how to handle network requests instead of programmatically modifying network requests in your code.
  4. Adjust Permissions: Review and minimize the permissions your extension requires. Use optional permissions to request access at runtime when necessary, enhancing user trust and adhering to the principle of least privilege.
  5. Remove Remote Code: Ensure that your extension does not load and execute remote code. All code must be included in the extension’s package, except for resources loaded using CORS.
  6. Test Thoroughly: Test your updated extension thoroughly in different scenarios to ensure it behaves as expected. Pay particular attention to how service workers are initialized and terminated, and how well the new permissions and net request rules work.


Transitioning to Manifest V3 is not just about maintaining compatibility with Chrome; it’s also about embracing modern web standards that prioritize security, efficiency, and user privacy. While the shift may require significant changes to your extension’s architecture and code, the long-term benefits of improved performance and enhanced security make this transition worthwhile. By following the steps outlined above, you can ensure that your Chrome extension continues to provide value to users while complying with the latest standards.

Podobne wpisy