Cómo actualizar el manifiesto

Cómo convertir un manifiesto de V2 en un manifiesto de V3

El archivo manifest.json requiere un formato ligeramente diferente para Manifest V3 y para Manifest V2. En esta página, se describen los cambios que solo afectan al archivo manifest.json. Sin embargo, muchos de los cambios en las secuencias de comandos y las páginas también requieren cambios en el manifiesto. Esos cambios se incluyen en las tareas de migración que los requieren.

Cómo cambiar el número de versión del manifiesto

Cambia el valor del campo "manifest_version" de 2 a 3.

Manifest V2
{
  ...
  "manifest_version": 2
  ...
}
Manifest V3
{
  ...
  "manifest_version": 3
  ...
}

Actualiza los permisos de host

Los permisos de host en Manifest V3 son campos separados; no los especificas en "permissions" ni en "optional_permissions".

Las secuencias de comandos de contenido siguen en "content_scripts.matches". Consulta Cómo inyectar con declaraciones estáticas para obtener información sobre "content_scripts.matches".

Manifest V2
{
  ...
  "permissions": [
    "tabs",
    "bookmarks",
    "https://www.blogger.com/",
  ],
  "optional_permissions": [
    "unlimitedStorage",
    "*://*/*",
  ]
  ...
}
Manifest V3
{
  ...
  "permissions": [
    "tabs",
    "bookmarks"
  ],
  "optional_permissions": [
    "unlimitedStorage"
  ],
  "host_permissions": [
    "https://www.blogger.com/",
  ],
  "optional_host_permissions": [
    "*://*/*",
  ]
  ...
}

Actualizar recursos accesibles desde la Web

Los recursos accesibles en la Web son archivos dentro de una extensión a los que se puede acceder mediante páginas web y otras extensiones. Como se implementó en Manifest V2, el campo "web_accessible_resources" hizo que las extensiones fueran detectables por sitios web y atacantes si la extensión elegía exponer recursos. Esto generó oportunidades para la creación de huellas digitales o el acceso no intencional a los recursos.

Manifest V3 limita la exposición restringiendo los sitios web y las extensiones que pueden acceder a los recursos de tu extensión. En lugar de proporcionar una lista de archivos como antes, ahora proporcionas un array de objetos, que asigna un conjunto de recursos a un conjunto de URLs o IDs de extensión.

En el siguiente ejemplo, se comparan los recursos accesibles desde la Web entre Manifest V2 y Manifest V3. En Manifest V2, todos los sitios web podían acceder a los recursos especificados de forma predeterminada. En el código de Manifest V3 que se muestra a continuación, estos recursos solo están disponibles para https://example.com, mientras que solo algunas imágenes están disponibles para todos los sitios web.

Para obtener más información, consulta los Recursos accesibles de la Web y Patrones de coincidencia.

Manifest V2
{
  ...
  "web_accessible_resources": [
    "images/*",
    "style/extension.css",
    "script/extension.js"
  ],
  ...
}
Manifest V3
{
  ...
    "web_accessible_resources": [
    {
      "resources": [
        "images/*"
      ],
      "matches": [
        "*://*/*"
      ]
    },
    {
      "resources": [
        "style/extension.css",
        "script/extension.js"
      ],
      "matches": [
        "https://example.com/*"
      ]
    }
  ],
  ...
}