Что нового в расширениях Chrome

Часто проверяйте эту страницу, чтобы узнать об изменениях в расширениях Chrome, документации по расширениям, соответствующей политике или других изменениях. Другие уведомления вы найдете в списке рассылки расширений Chrome . В расписании Chrome указаны даты выпуска стабильных и бета-версий.

Видео: «Ударь крота» в браузере – возможно ли это!?

Опубликовано

Узнайте, как создать игру в браузере, в нашем последнем видео .

Видео: объяснение нового меню расширений Chrome

Опубликовано

Узнайте об экспериментальном меню новых расширений в нашем последнем видео, объясняющем новое меню расширений Chrome .

Видео: Расширения — это здорово!

Опубликовано

Узнайте, как начать разработку расширений в эпизоде ​​Extensions are Neat 1 , и насколько гибкой является настройка Chrome в эпизоде ​​2 !

Chrome 135: новый API userScripts.execute()

Опубликовано

Начиная с Chrome 135, в API chrome.userScripts доступен новый метод userScripts.execute() . Вы можете использовать это для внедрения пользовательского сценария один раз в произвольное время вместо необходимости его постоянной регистрации.

Chrome 132: просмотр и редактирование хранилища расширений в DevTools

Опубликовано

Начиная с Chrome 132, вы можете просматривать и редактировать данные, хранящиеся с помощью API chrome.storage в DevTools. Чтобы узнать больше, посетите новую страницу «Просмотр и редактирование хранилища расширений» в документации DevTools.

Сообщение в блоге: Новое меню расширений

Опубликовано

На Google I/O 2024 мы поделились некоторыми ранними проектами предстоящих изменений в меню расширений, которые дают пользователям больше контроля над сайтами, к которым могут получить доступ расширения. В ближайшее время мы собираемся начать тестирование этих изменений, начав с небольшого процента пользователей на Канарских островах и надеясь распространить их более широко в будущем.

Мы также представляем API chrome.permissions.addHostAccessRequest() .

Подробности читайте в нашем блоге .

Chrome 132: новое замороженное свойство в API вкладок

Опубликовано

Начиная с Chrome 132, свойство frozen в API вкладок указывает, была ли вкладка «заморожена» браузером. Сообщения, отправленные на замороженные вкладки, будут помещены в очередь и обработаны, когда вкладка будет разморожена.

Prompt API в расширениях Chrome

Опубликовано

Prompt API для расширений теперь доступен в пробной версии, поэтому вы можете создавать в браузере расширения Chrome, использующие Gemini Nano, нашу самую эффективную языковую модель.

Присоединяйтесь к пробной версии Prompt API Origin, работающей в Chrome 131–136, и поделитесь своими отзывами. Ваш вклад может напрямую повлиять на то, как мы создаем и реализуем будущие версии этого API, а также всех встроенных API-интерфейсов искусственного интеллекта.

Сообщение в блоге: Что происходит с расширениями Chrome, октябрь 2024 г.

Опубликовано

Пришло время еще раз рассказать о том, что происходит с расширениями Chrome: у нас есть интересные новости об интеграции искусственного интеллекта, новых API, мероприятиях и видео. Прочитайте все об этом в октябрьском выпуске «Что происходит с расширениями Chrome» !

Присоединяйтесь к конкурсу встроенного искусственного интеллекта

Опубликовано

Chrome запустил конкурс «Встроенный искусственный интеллект»: вам предлагается создавать инновационные веб-приложения и расширения Chrome, используя интегрированные модели искусственного интеллекта и API Chrome , и у вас есть шанс выиграть призы на общую сумму 65 000 долларов США.

Зарегистрируйтесь и получите дополнительную информацию на веб-сайте Integrated AI Challenge . Нам не терпится увидеть, что вы создадите, наполнив Интернет искусственным интеллектом!

Chrome 130: action.onUserSettingsChanged

Опубликовано

Начиная с Chrome 130, доступно событие action.onUserSettingsChanged . Это следует из предложения группы сообщества WebExtensions. Спасибо Microsoft за вклад в Chromium.

Chrome 130: StorageArea.getKeys()

Опубликовано

Начиная с Chrome 130, метод getKeys() доступен в интерфейсе StorageArea, используемом API chrome.storage . Это следует из предложения группы сообщества WebExtensions.

Chrome 128: сопоставление заголовка ответа в декларативном сетевом запросе

Опубликовано

Начиная с Chrome 128, мы добавляем поддержку сопоставления заголовков ответов в API декларативного сетевого запроса. Это был распространенный запрос, особенно для сопоставления заголовка Content-Type, и мы разработали подходящий API вместе с группой сообщества WebExtensions.

Мы обновили нашу ссылку на API, включив в нее новые поля responseHeaders и excludedResponseHeaders . Вы можете использовать их для проверки существования и значения данного заголовка.

В рамках этого обновления мы добавили в нашу документацию новый раздел оценки правил , в котором объясняется, как сопоставляются правила. В частности, для сопоставления заголовков правила могут выполняться только после получения заголовков ответа, поэтому они применяются на более позднем этапе, чем другие правила. Это означает, что запрос доходит до сервера, прежде чем блокируется или перенаправляется.

Видео: Что такое контент-скрипты?

Опубликовано

Узнайте о сценариях контента в расширениях Chrome, в том числе о том, как зарегистрировать CSS и JavaScript для запуска на определенной странице. Посмотрите полное видео .

Важные обновления политики

Опубликовано

Команда Интернет-магазина Chrome опубликовала серию обновлений на странице «Правила программы для разработчиков» , призванных стимулировать разработку высококачественных продуктов, предотвращать мошенническое поведение и обеспечивать информированное согласие пользователей. Ребекка Соарес, менеджер по политике Интернет-магазина Chrome, обобщила все обновления в статье «Расширения Chrome: важные обновления политики» .

Сообщение в блоге: Что происходит с расширениями Chrome, июль 2024 г.

Опубликовано

За последние три месяца мы выпустили несколько значительных обновлений и новых функций, включая начало поэтапного отказа от Manifest V2. Узнайте больше о том, что происходит в расширениях Chrome, июльский выпуск !

Видео: Что такое удаленно размещенный код?

Опубликовано

Патрик из команды расширений Chrome объясняет концепцию удаленно размещенного кода (RHC) в расширениях Chrome. Узнайте, почему RHC больше не разрешен, как это обнаружить и что делать, если ваше расширение необходимо обновить. Посмотрите полное видео .

Chrome 127: новый API action.openPopup

Опубликовано

Начиная с Chrome 127, API action.openPopup доступен для всех расширений. Раньше он был доступен только в Canary или для расширений, установленных политикой.

Видео: Интервью с командой доверия и безопасности

Опубликовано

Команда Chrome Extensions DevRel встретилась с командой Trust & Safety, которая проводит проверку в Интернет-магазине Chrome, чтобы задать вам вопросы. Посмотрите полное видео .

Сообщение в блоге: Начало поэтапного отказа от Manifest V2

Опубликовано

Начиная с 3 июня на каналах Chrome Beta, Dev и Canary, если у пользователей все еще установлены расширения Manifest V2, некоторые из них начнут видеть предупреждающий баннер при посещении своей страницы управления расширениями - chrome://extensions - информирующий их о том, что некоторые установленные ими расширения (Manifest V2) скоро перестанут поддерживаться. Подробности читайте в официальном сообщении.

Обновления пользовательского интерфейса боковой панели

Опубликовано

Недавно мы внесли некоторые изменения в пользовательский интерфейс боковой панели, в том числе добавили значок булавки и удалили глобальный значок на боковой панели. Узнайте больше в PSA и ознакомьтесь с нашей обновленной документацией и образцами .

Сообщение в блоге: Расширения Chrome на Google I/O 2024

Опубликовано

Очередной ввод-вывод Google позади, и мы рассмотрели все интересные обновления расширений! Зайдите на YouTube, чтобы посмотреть полное видео , а также прочитайте публикацию в нашем блоге, чтобы узнать о некоторых основных моментах.

Пропустить проверку для соответствующих изменений декларативного сетевого запроса

Опубликовано

Интернет-магазин Chrome теперь позволяет пропустить проверку допустимых изменений при использовании API декларативного сетевого запроса. Подробную информацию о праве на участие и о том, как подписаться, можно найти в документации Интернет-магазина Chrome .

DeployPercentage доступен в API Интернет-магазина Chrome.

Опубликовано

Недавно мы обновили нашу документацию по API Интернет-магазина Chrome, включив в нее информацию о deployPercentage , которая позволяет вам назначать процент частичного развертывания. Узнайте больше о deployPercentage .

Chrome 126: пробные версии Origin в расширениях

Опубликовано

В Chrome 126 представлено новое поле Manifest.json — trial_tokens , позволяющее вам выбрать использование пробных версий Origin и устаревших пробных версий для всех поверхностей расширений. Прочтите руководство для получения дополнительной информации.

Сообщение в блоге: Что происходит с расширениями Chrome — апрель 2024 г.

Опубликовано

Мы опубликовали новое издание « Что происходит с расширениями Chrome» . В посте обсуждается то, над чем команда расширения работала последние несколько месяцев. Сюда входит: откат версии в Интернет-магазине Chrome, улучшенная поддержка Firebase Auth, а также новые запуски и обновления API.

Откат версий на панели разработчика Интернет-магазина Chrome

Опубликовано

Откатите расширение до предыдущей опубликованной версии в Интернет-магазине Chrome — без дополнительной проверки! Прочтите сообщение в блоге и документацию для получения дополнительной информации.

Chrome 124: Расширенный API сканирования документов

Опубликовано

Расширенный API documentScan теперь доступен в ChromeOS для обнаружения и получения изображений с подключенных сканеров документов.

Chrome 124: поддержка WebGPU в Service Workers

Опубликовано

Начиная с Chrome 124, сервис-воркеры поддерживают WebGPU . Для быстрого начала ознакомьтесь с примером расширения WebGPU .

Chrome 123: API событий поддерживает фильтрацию по блокам CIDR.

Опубликовано

API событий теперь поддерживает фильтрацию по блокам бесклассовой междоменной маршрутизации (CIDR). Блок CIDR — это набор IP-адресов, имеющих общий сетевой префикс и одинаковое количество бит. Раньше разработчику, которому требовалось фильтровать несколько IP-адресов, нужно было настроить правило фильтрации для каждого адреса в диапазоне блоков. Теперь, когда расширение вызывает addListener() , переданное правило означает, что обработчик событий будет вызываться только в том случае, если хостовая часть URL-адреса является IP-адресом и содержится в любом из блоков CIDR, указанных в массиве.

Интернет-магазин Chrome: изменения в требованиях к длине имени расширения

Опубликовано

В Интернет-магазине Chrome теперь существует универсальное ограничение в 75 символов для поля "name" расширения в файле манифеста.json. Раньше ограничение для английского языка составляло 45 символов, а в других локалях ограничений на поле "name" не было.

Первоначально это было предназначено для учета культурных и языковых различий, которые невозможно отразить одним и тем же количеством символов. К сожалению, эта функция использовалась небольшим количеством разработчиков для рассылки спама в магазине. В результате мы вводим новый универсальный лимит — увеличение до 75 символов. Это ограничение распространяется почти на все расширения, имеющиеся на сегодняшний день в магазине, поэтому, скорее всего, в результате этого изменения от вас не потребуется никаких действий. Если вы попытаетесь загрузить расширение, имя которого превышает максимальный лимит, загрузка будет заблокирована магазином.

Сообщение в блоге: путь Eyeo к тестированию приостановки сервисных работников

Опубликовано

В этом посте команды Eyeo Extension Engine мы исследуем проблему тестирования работников служб расширений. В Манифесте V2 расширения размещались на фоновой странице, которая активна на протяжении всего жизненного цикла расширения. Вместо этого в Manifest V3 используются сервисные работники, а сервисные работники по замыслу экономят ресурсы, отключаясь, когда они не нужны. Это создает определенные проблемы при тестировании. В этом посте объясняется, как Eyeo справился с этими проблемами .

Chrome 123: будильники теперь срабатывают, когда устройство находится в спящем режиме.

Опубликовано

Сигналы тревоги, установленные с помощью API chrome.alarms больше не задерживаются, когда устройство переходит в спящий режим. Когда устройство выйдет из режима сна, будильник сработает один раз, независимо от того, сколько сигналов было пропущено. Например, предположим, что будильник настроен на срабатывание один раз в час, а устройство, на котором он установлен, спит с 00:55 до 2:05, тогда только будильник в 2:00 вызывает событие onAlarm . Он сработает как можно ближе к 2:00 ночи и сразу же, когда устройство проснется, если оно спит.

Это изменение приводит Chrome в соответствие с поведением, согласованным в группе сообщества веб-расширений.

Сообщение в блоге: Изменения в поведении bfcache с портами сообщений расширения

Опубликовано

Кэш назад/вперед (bfcache) — это оптимизация браузера, обеспечивающая мгновенную навигацию вперед и назад. Начиная с Chrome 123, когда страница с открытым портом расширения хранится в bfcache, канал сообщений закрывается, а это означает, что на эту страницу не будут отправляться никакие сообщения. Следовательно, сценарии расширения должны прослушивать события жизненного цикла, такие как onDisconnect , и устанавливать новое соединение при восстановлении страницы из BFCache.

Дополнительные сведения и пример кода см. в разделе Изменения в поведении BFCache с портами сообщений расширения .

Chrome 122: обещание поддержки API асинхронных расширений

Опубликовано

Мы завершили реализацию поддержки Promise для всех методов API асинхронных расширений. Это было сделано для модернизации методов API за счет улучшения эргономики работы с асинхронными операциями. Несколько методов (например, desktopCapture.chooseDesktopMedia() ) продолжают поддерживать только обратные вызовы, поскольку их текущие поверхности несовместимы с Promises. Для обратной совместимости по-прежнему поддерживаются обратные вызовы. Если вы обнаружите, что обещание не работает, сообщите об ошибке .

Новое руководство по общению в реальном времени

Опубликовано

Мы только что опубликовали руководства по опциям расширений в режиме реального времени . Обновления в реальном времени обеспечивают мгновенный путь связи с ваших серверов непосредственно к установленным вами расширениям. Кроме того, у нас есть новое руководство по использованию chrome.gcm , Web Push .

Новое руководство и образец: завершение тестирования сервисного работника

Опубликовано

Мы только что опубликовали руководство о том, как протестировать завершение сервисного работника с помощью Puppeteer . Сопровождающий пример демонстрирует это в Puppeteer и Selenium.

Обновленный образец встроенного обмена сообщениями

Опубликовано

Мы только что опубликовали обновленный образец встроенного обмена сообщениями. Этот API позволяет вашему расширению запускаться и взаимодействовать с другим приложением. Спасибо участнику GitHub Шубхам-Расалу за работу над этим.

Chrome 121: новое свойство LastAccessed на вкладках.Tab

Опубликовано

К объекту tabs.Tab было добавлено новое свойство с именем lastAccessed . Это свойство указывает, когда вкладка была активирована в последний раз. Возвращаемое значение находится в миллисекундах с начала эпохи.

Chrome 121: неподдерживаемые «фоновые» клавиши теперь выдают предупреждение

Опубликовано

При переходе от Манифеста V2 к Манифесту V3 дочерние элементы "background" ключа манифеста были изменены, чтобы обеспечить замену фоновых сценариев рабочими службами расширений. Раньше добавление ключей Manifest V2 "scripts" , "page" или "persistent" к "background" ключу расширения Manifest V3 приводило к ошибке. Присутствие этих ключей теперь вызывает предупреждение.

Это делается для того, чтобы можно было использовать один файл манифеста в расширениях в нескольких браузерах по предложению в группе сообщества .

Chrome 120: минимальная детализация сигналов тревоги уменьшена до 30 секунд.

Опубликовано

Начиная с Chrome 120, расширения Manifest V3 могут использовать API chrome.alarms с задержками или периодами в 30 секунд, а не требовать значений в 60 секунд и более.

Сообщение в блоге: Возобновление перехода на Manifest V3

Опубликовано

График поддержки Manifest V2 был обновлен. Подробности читайте в нашем блоге за ноябрь 2023 года .

Сообщение в блоге: Улучшения в поддержке фильтрации контента в Manifest V3

Опубликовано

Узнайте о том, как мы улучшили API declarativeNetRequest, в нашем новом посте в блоге .

Сообщение в блоге: Что нового в Chrome 120 для расширений

Опубликовано

Недавно была выпущена бета-версия Chrome 120 . Краткое описание важных обновлений, касающихся разработчиков расширений, можно найти в нашей новой записи в блоге: Что нового в Chrome 120 для расширений . Этот выпуск также знаменует собой важную веху, поскольку он удаляет последние два элемента (пользовательские сценарии и обработчик файлов в ChromeOS) из списка критических недостатков платформы .

PSA: изменение обработки URL-адресов политики конфиденциальности на панели разработчика.

Опубликовано

Политики конфиденциальности на панели разработчика теперь добавляются на уровне элементов. Это позволяет вам предоставлять разную политику конфиденциальности для каждого элемента. Подробнее об этом изменении читайте в нашем PSA .

Видео: Беседа с Мэттом Фрисби

Опубликовано

Мы только что опубликовали новое видео на YouTube-канале Chrome для разработчиков, в котором беседуем с экспертом Google Developer и автором Мэттом Фрисби. Посмотрите это здесь .

Новое руководство по тестированию расширений

Опубликовано

Мы только что опубликовали новое руководство по написанию автоматических тестов для расширений, в том числе по написанию модульных тестов , а также общее руководство и руководство по сквозному тестированию.

Сообщение в блоге: Что происходит с расширениями Chrome – октябрь 2023 г.

Опубликовано

Мы только что опубликовали второе издание книги «Что происходит с расширениями Chrome» . В посте обсуждается то, над чем команда расширения работала в течение последних нескольких месяцев, в том числе над решением проблем стабильности сервис-воркеров и достижением хорошего прогресса в устранении всех пробелов в платформе MV3. Мы также делимся интересными предстоящими выпусками API, такими как API списка чтения и API пользовательских сценариев.

Увеличены ограничения статического набора правил в API декларативного сетевого запроса.

Опубликовано

Следуя отзывам группы сообщества веб-расширений, мы значительно увеличиваем ограничение на количество включенных статических наборов правил с 10 до 50. Кроме того, мы увеличиваем общее количество разрешенных статических наборов правил с 50 до 100. В настоящее время это доступно на Canary.

Улучшенное руководство по удаленно размещенному коду.

Опубликовано

Требование Манифеста V3 заключается в том, что расширения больше не могут использовать удаленно размещенный код. Хотя это было частью нашего руководства по миграции с самого начала, мы подумали, что стоит улучшить руководство по этому вопросу. На этой странице теперь содержится больше информации, описывающей возможности Manifest V3 и предоставляющей дополнительную информацию о стратегиях обновления.

Существует соответствующее дополнение к разделу «Устранение нарушений в Интернет-магазине Chrome» . В новом разделе описаны распространенные причины отклонения расширений с удаленно размещенным кодом.

Chrome 118: isUrlFilterCaseSensitive теперь по умолчанию имеет значение false

Опубликовано

Начиная с Chrome 118, свойство isUrlFilterCaseSensitive в API chrome.declarativeNetRequest было изменено со значения по умолчанию на false . Если вы хотите сохранить старое поведение, вы можете явно установить для isUrlFilterCaseSensitive значение true в правилах declarativeNetRequest.

Это следует за обсуждениями в группе сообщества веб-расширений. Firefox и Safari уже реализовали подобное изменение.

Документация по файлам cookie и API веб-хранилища

Опубликовано

Мы опубликовали новое руководство о том, как файлы cookie и API веб-хранилища работают в расширениях Chrome . Он включает подробную информацию об изменениях в разделах файлов cookie и хранилища в Privacy Sandbox , продолжающемся проекте по отказу от использования сторонних файлов cookie посредством создания серии новых API-интерфейсов веб-платформы, а также подробную информацию о том, как они работают в расширениях.

Образцы расширений теперь доступны для поиска

Опубликовано

Недавно мы создали страницу, на которой можно искать образцы расширений Chrome . Страница поиска имеет несколько опций. Поле поиска позволяет искать текст в примерах заголовков. Вы можете ограничить поиск по разрешению или расширению API. Дополнительный фильтр позволяет ограничить поиск примерами API или функциональными примерами (вариантами использования).

Этот новый образец страницы был создан Сюэчжоу Даем, участником Google Summer of Code, который также предоставил несколько новых примеров. Вы можете прочитать об их впечатлениях этим летом в их посте в нашем блоге .

Как и раньше, наши примеры кода по-прежнему доступны на GitHub для клонирования или разветвления.

Chrome 118: изменения в открытии файла: URL-адреса схемы

Опубликовано

Начиная с Chrome 118, расширениям потребуется включить настройку «Разрешить доступ к URL-адресам файлов» на странице chrome://extensions , чтобы открывать URL-адреса схемы file:// с помощью вкладок или API-интерфейсов Windows . Вы можете программно проверить этот доступ, вызвав chrome.extension.isAllowedFileSchemeAccess() . Firefox уже ограничивает URL-адреса файлов, и Safari поддерживает это изменение. Для получения дополнительной информации прочитайте сообщение в списке рассылки расширений Chrome .

Chrome 117: расширенная защита URL-адресов при навигации по API расширений

Опубликовано

Ранее навигация, запускавшаяся из вызовов API расширения для tabs.update() , tabs.create() и windows.create() выдавала ошибку для некоторых URL-адресов chrome://. Кроме того, был запрещен вызов tabs.update() с URL-адресом JavaScript. В версии 117 эта защита URL-адресов JavaScript была расширена до метода tabs.create() , а ряд дополнительных URL-адресов chrome:// был добавлен в список запрещенных URL-адресов, который применяется ко всем ранее упомянутым методам.

Улучшенное руководство для API declarativeNetRequest.

Опубликовано

API chrome.declarativeNetRequest блокирует или изменяет сетевые запросы, определяя декларативные правила. Это позволяет расширениям изменять сетевые запросы, не перехватывая их и не просматривая их содержимое, обеспечивая тем самым большую конфиденциальность пользователей. Его также сложно использовать. Имея это в виду, мы переписали руководство таким образом, чтобы, по нашему мнению, дать более четкое представление о том, как реализовать декларативные наборы правил. Читайте новый раздел по ссылке выше.

Использование учетной записи Google Analytics в Интернет-магазине Chrome

Опубликовано

Интернет-магазин Chrome предлагает интеграцию с Google Analytics, что позволяет вам видеть аналитику для вашего списка в Интернет-магазине Chrome в дополнение к представлению, предлагаемому на панели разработчика. Дополнительную информацию см. в статье Использование учетной записи Google Analytics в Интернет-магазине Chrome .

Chrome 115: DevTools по умолчанию обрабатывает сценарии контента

Опубликовано

Скрипты внедренного контента теперь по умолчанию находятся в списке игнорирования DevTools. Это не влияет на точки останова, но означает, что сценарии содержимого будут пропускаться во время отладки, а исключения из этих сценариев будут игнорироваться. Когда сценарий контента открыт на вкладке «Источники» , баннер предупреждает вас, если он включен, и предоставляет возможность удалить сценарий контента из списка игнорирования. Чтобы отключить это поведение, откройте DevTools, перейдите в «Настройки» , затем «Список игнорирования» . Дополнительные сведения см. в разделе Что нового в DevTools .

Бета-версия Chrome 116: здесь больше, чем мы можем разместить

Опубликовано

Chrome 116 — это большой выпуск расширений. Теперь боковые панели можно открывать программно. Новый метод позволяет узнать, есть ли активный закадровый документ. Сервисные работники получили несколько улучшений. В 116 достаточно улучшений, и мы написали о них статью в блоге . Chrome 116 находится в стадии бета-тестирования с 19 июля.

Сообщение в блоге: Что происходит с расширениями Chrome

Опубликовано

Мы только что опубликовали обзор изменений и улучшений расширений этого года. В статье обсуждаются важные новые функции года, в том числе API боковой панели, улучшения сервис-воркеров и закадровые документы. Вы также сможете узнать, над чем мы работаем в этом квартале. В статье перечислено гораздо больше, со ссылками на все.

Новое руководство и образец: узнайте, как использовать Google Analytics 4 в расширении Chrome.

Опубликовано

Мы опубликовали новые руководства и примеры по Google Analytics и геолокации:

Chrome 115: укажите несколько причин в chrome.offscreen.createDocument().

Опубликовано

Теперь вы можете указать несколько перечислений reason при вызове chrome.offscreen.createDocument() . Используйте это, когда закадровый документ будет использоваться для разных целей. Браузер использует предоставленные причины для определения срока жизни закадрового документа.

Новый инструмент: Инструмент тестирования обновлений расширений.

Опубликовано

Мы только что выпустили Инструмент тестирования обновлений расширений — локальный сервер обновлений расширений, который можно использовать для тестирования обновлений расширений Chrome во время локальной разработки, включая предоставление разрешений. Инструмент показывает поток обновлений пользователя, включая сохранение отключенного расширения до тех пор, пока пользователь не предоставит новые запрошенные разрешения. Этот инструмент особенно полезен для моделирования изменений разрешений, запрашиваемых при обновлении расширения с Manifest V2 на Manifest V3.

Chrome 114: новый API боковой панели

Опубликовано

Представляем новый API боковой панели — сопутствующую поверхность, которая позволяет пользователям получать доступ к инструментам наряду с содержимым, которое они просматривают. Чтобы узнать больше, посетите справку по API боковой панели . Кроме того, мы добавили множество примеров боковых панелей в наш репозиторий образцов GitHub . Мы также рассказываем больше о боковых панелях в новой записи блога «Проектирование превосходного пользовательского опыта с помощью нового API боковой панели» . Наша политика в области рекомендаций по качеству и лучшие практики также были рассмотрены, чтобы предоставить дополнительные рекомендации по созданию высококачественных расширений боковых панелей.

Ваши отзывы важны при разработке этого API; поделитесь своими мыслями и пожеланиями по функциям в группах Chromium . Следите за новыми обновлениями, поскольку мы продолжаем совершенствовать API боковой панели.

Новые примеры: WASM в расширениях

Опубликовано

Доступны два новых примера, демонстрирующих использование WASM в расширении:

Особая благодарность участнику GitHub @daidr за эти примеры.

Обновленное руководство по миграции манифеста версии 3.

Опубликовано

Мы обновили раздел «Известные проблемы» нашего руководства по миграции Manifest V3, добавив обновленный список пробелов в платформе расширений, которые мы намерены закрыть, прежде чем объявить новый график прекращения поддержки Manifest V2.

Запись аудио и видео с помощью Manifest V3

Опубликовано

Мы только что опубликовали новую статью под названием «Запись звука и захват экрана» , в которой рассказывается о записи звука или видео с вкладки, окна или экрана в Manifest V3. В этой статье описываются несколько подходов к записи с использованием API chrome.tabCapture и функции getDisplayMedia() .

Chrome 114: увеличена квота Storage.local

Опубликовано

Мы увеличили квоту для свойства storage.local примерно до 10 МБ. Это было согласовано в группе сообщества веб-расширений . Это приводит storage.local в соответствие с storage.session , который был изменен в Chrome 112.

Новое учебное пособие и справка по новому работнику службы расширений

Опубликовано

Сервисные работники являются неотъемлемой частью расширений Chrome. Мы только что опубликовали руководство, объясняющее основы регистрации, отладки и взаимодействия с Service Workers. Мы также добавили новое руководство для сервисных работников, в котором более подробно объясняются важные понятия. В ближайшие месяцы мы будем расширять этот раздел.

Дополнительные советы по устранению нарушений в интернет-магазине

Опубликовано

Чтобы облегчить публикацию в Интернет-магазине Chrome, мы добавили новые рекомендации в двух областях. Рекомендации по минимальной функциональности сосредоточены на предоставлении пользователям преимуществ и расширении их возможностей просмотра. Рекомендации по партнерской рекламе заключаются в том, чтобы информировать пользователей о расширениях, использующих партнерские ссылки или коды для монетизации, и предоставить им определенный контроль, требуя действий пользователя перед включением.

Новые инструкции для конвертера манифеста расширений

Опубликовано

Мы переписали файл README для конвертера манифеста расширений, чтобы было проще понять, что вам нужно делать после запуска инструмента. Конвертер помогает перенести расширения, созданные на основе Manifest V2, на Manifest V3. Новый README описывает, что делает инструмент, используя слова, которые точно соответствуют словам, указанным в контрольном списке руководства по миграции . Конвертер не делает всего, но он устраняет многие задачи, не требующие человеческого вмешательства.

Chrome 113: новые причины использования закадровых документов

Опубликовано

Мы добавили два новых типа причин в API Offscreen Documents. Используйте LOCAL_STORAGE для доступа к API localStorage веб-платформы. Используйте WORKER при создании веб-воркеров.

Google Analytics 4 теперь на панели разработчика

Опубликовано

Панель инструментов разработчика Интернет-магазина Chrome теперь поддерживает Google Analytics 4 (GA4). Мы упростили настройку Google Analytics и упростили управление доступом для издателей групп. Если вы ранее использовали Google Universal Analytics для отслеживания активности на странице вашего приложения, вам необходимо принять меры до 1 июля 2023 года, чтобы гарантировать, что вы продолжите получать данные о своей странице в магазине. Для получения дополнительной информации см. публикацию в списке рассылки расширений Chrome .

API обработки файлов доступен в ChromeOS

Опубликовано

API-интерфейс File Handler доступен для экспериментов в ChromeOS в Canary версий 112 и 113. Он позволяет расширениям ChromeOS открывать файлы с указанными типами MIME и расширениями файлов. Чтобы реализовать обработку файлов, добавьте в manifest.json набор правил. Эта функция работает так же, как и для прогрессивных веб-приложений. Для получения дополнительной информации см. статью в другом месте на этом сайте.

Чтобы включить обработку файлов:

  • Начиная с 112, запустите Chrome, используя флаг --enable-features=ExtensionWebFileHandlers , начиная с 112.
  • Начиная с 113, вставьте os://flags/#extension-web-file-handlers в омнибокс Chrome и выберите «Включено» в раскрывающемся меню.

Мы надеемся запустить эту функцию в Chrome 115 в конце июня. Следите за обновлениями в этом пространстве.

Новые примеры: динамические объявления и программное внедрение.

Опубликовано

Мы создали новый образец API chrome.scripting . Он демонстрирует динамические объявления, когда сценарий содержимого регистрируется во время выполнения, и программное внедрение, когда сценарий выполняется на уже открытой вкладке.

Новые примеры: варианты использования декларативных сетевых запросов

Опубликовано

Доступны три новых образца, демонстрирующих API Declarative Net Request . Каждый демонстрирует реализацию одного варианта использования. Первый показывает, как заблокировать файлы cookie. Остальные два демонстрируют блокировку и перенаправление URL-адресов.

Chrome 112: увеличена квота Storage.session.

Опубликовано

В Chrome 112 квота свойства storage.session увеличена примерно до 10 МБ. Это было согласовано в группе сообщества веб-расширений: https://github.com/w3c/webextensions/issues/350 .

Chrome 109: документы за кадром

Опубликовано

Закадровые документы теперь доступны в расширениях Manifest V3. Они помогают перейти от фоновых страниц к работникам служб расширений, обеспечивая поддержку функций и API, связанных с DOM. Для получения дополнительной информации прочитайте сообщение в блоге .

Chrome 110: включено ли расширение?

Опубликовано

Метод chrome.action.isEnabled() программно проверяет, включено ли расширение для конкретной вкладки. Это избавит вас от необходимости поддерживать включенное состояние ваших вкладок. Этот новый метод принимает идентификатор вкладки и ссылку на обратный вызов и возвращает логическое значение. У него есть одно ограничение: вкладки, созданные с использованием chrome.declarativeContent , всегда возвращают false.

(В пространстве имен chrome.action недавно появились новые методы для управления внешним видом значков расширений. Дополнительную информацию см. в разделе Настройка цветов значков .)

Chrome 110: изменение тайм-аута простоя сервисного работника

Опубликовано

Раньше работник службы расширения часто отключался через пять минут. Мы изменили это поведение, чтобы оно больше напоминало время жизни сервис-воркера в Интернете. Работник службы расширения будет отключен либо через тридцать секунд бездействия, либо если обработка одного действия займет более 5 минут. Дополнительные сведения см. в разделе Увеличение срока службы работника службы расширений .

Сообщение: Приостановка вывода из эксплуатации Manifest V2

Опубликовано

Сроки прекращения поддержки Manifest V2 находятся на рассмотрении, а эксперименты, запланированные на начало 2023 года, откладываются. Для получения дополнительной информации прочитайте обновление в списке рассылки расширений Chrome.

Chrome 110: настройка цветов значка

Опубликовано

Пространство имен chrome.action имеет два новых метода, чтобы дать вам больше контроля над значками расширения внешнего вида. Методы setBadgeTextColor() и getBadgeTextColor() позволяют расширению изменять и запросить цвет его значка на панели инструментов. При использовании с setBadgeBackgroundColor и getBadgeBackgroundColor эти новые методы позволяют обеспечить соблюдение дизайна и последовательность бренда.

Сообщение в блоге: Подробнее о переходе к манифесту v3

Опубликовано

Мы уточнили график искажения манифеста V2 . Сроки поддержки Manifest V2 также были обновлены, чтобы отразить эту информацию.

Обновление документов: известные проблемы при переходе на Manifest V3

Опубликовано

Мы собрали список основных функций, которые в настоящее время находятся в разработке, и открытые ошибки . Наша цель на этой странице состоит в том, чтобы помочь разработчикам лучше понять текущее состояние платформы и на какие функции они могут нацелены на то, чтобы подготовиться к будущему.

Chrome Web Store: «Большая промо -плитка». Удаленная загрузка изображения

Опубликовано

Chrome Web Store удалил пользовательский интерфейс «Большая промо -плитка» с вкладки «Скормление» на панели разработчика на панели разработчика. Это изменение не влияет на опыт конечного пользователя, так как эти изображения не использовались в пользовательском интерфейсе потребителя. Смотрите этот пост хрома-эксплуата для получения дополнительной информации.

Chrome 106: разрешить страницы в файле: // URL -адреса для доступа к веб -доступным ресурсам

Опубликовано

Сопровочные происхождения, такие как iframes и динамический импорт, также должны иметь доступ к веб -доступным ресурсам, согласно crbug.com/1219825#c11 .

Chrome 106: Исправлена ​​ошибка, разрешающая неверные окончательные аргументы на некоторых функциях ASYNC API

Опубликовано

Ранее Manifest V3 APIS ASINC API может обеспечить неверный окончательный аргумент, а Chrome не ошибся. С этим исправлением Chrome теперь будет правильно ошибочно и сообщит, что не было подходящей подписи. Разработчикам рекомендуется проверить свои расширения на канарейке на предмет любых ошибок, если они случайно используют неправильную подпись для вызова API, который будет нарушен этим исправлением ошибки.

Сообщение в блоге: Revamp Analytics Chrome Web Store

Опубликовано

Chrome Web Store имеет обновленный опыт анализа предметов для приборной панели разработчика Chrome Web Store. Новую панель инструментов легче понять с первого взгляда и объединяет наиболее полезную информацию впереди. Прочитайте сообщение в блоге для получения дополнительной информации.

Chrome 105: обещания для API идентичности

Опубликовано

Функции на API Identity теперь поддерживают вызовы на основе перспективных обещаний. Это происходит с небольшим изменением на поверхности для identity.getAuthToken() , где асинхронная возврата, установленная на вызов на основе перспективы, будет иметь «токен» и «предоставленные кнопки» в качестве параметров на одном объекте (в отличие от версии обратного вызова, получающего их в виде отдельных аргументов к обратному обращению).

Chrome 104: New Favicons API для Manifest V3

Опубликовано

Расширения Manifest V3 теперь могут получить доступ к любимым видам с использованием нового шаблона URL: chrome-extension://<id>/_favicon/ , где это идентификатор вашего расширения. Это заменяет Manifest V2 Platform chrome://favicons API. Смотрите документы API Favicon для получения дополнительной информации.

Обновление DOCS: раскрытие Docs Trader/Non Trader

Опубликовано

Добавлено идентификацию разработчиков-трейдеров/не торговцев , которая информирует разработчиков, чтобы точно самообладать свой статус трейдера/не торговца.

Chrome 103: Wasm в Manifest V3 требует wasm-unsafe-eval

Опубликовано

Chrome больше не предоставляет script-src: wasm-unsafe-eval по умолчанию. Расширения, которые используют WebAssembly, теперь должны явно добавлять эту директиву и значение в extension_pages в их объявлениях content_security_policy .

Chrome 103: Изменение ярлыков MV3 вступает в силу немедленно

Опубликовано

При изменении сочетания клавишной клавиши Manifest Extension на chrome://extensions/shortcuts обновления теперь применяются немедленно. Ранее расширение должно было быть перезагружено до того, как изменение вступит в силу.

Chrome 102: Динамические сценарии контента в основном мире

Опубликовано

Динамически зарегистрированные сценарии контента теперь могут указать мир , в который будут введены активы. См. scripting.registerContentScripts() для деталей.

Chrome 102: новое поле Manifest "optional_host_permissions"

Опубликовано

Расширения Manifest V3 теперь могут указывать ключ optional_host_permissions в MANIFEST.JSON. Это позволяет манифестным расширениям v3 объявлять необязательные шаблоны соответствия для хостов, как только Manifest Extensions может с использованием ключа optional_permissions .

Chrome 102: Свойство InjectImmed Utry в Scripting.executcript ()

Опубликовано

chrome.scripting.executeScript() теперь принимает дополнительное свойство injectImmediately а на его аргумент injection . Если присутствовать и установить на TRUE, сценарий будет вводить в цель как можно скорее, вместо того, чтобы ждать document_idle . Обратите внимание, что это не гарантия, что скрипт будет вводить до загрузки страницы, так как страница продолжает загружаться, когда производится вызов API.

Chrome 102: поддержка API Omnibox в Manifest v3

Опубликовано

API Omnibox теперь может использоваться в расширениях на основе сервисных работников. Ранее некоторые из методов этого API могли бы привлечь к вызову из -за внутренних зависимостей от возможностей DOM.

Chrome 102: wasm-unsafe-eval разрешен в Manifest V3 CSP

Опубликовано

Расширения Manifest V3 теперь могут включать в себя wasm-unsafe-eval в их объявлениях content_security_policy . Это изменение позволяет Manifest V3 расширениям использовать Webassembly.

Chrome 102: New Storage.session API

Опубликовано

Расширения Manifest V3 теперь могут использовать в хранилище памяти.

Обновление DOCS: Krome Web Store Discovery

Опубликовано

Discovery on Chrome Web Store дает обзор того, как пользователи находят элементы в веб -магазине Chrome и как наши редакторы выбирают элементы для участия.

Chrome 101: Улучшенные условия домена DeclarativenetRequest

Опубликовано

Условия правила DeclarativenEtRequest были обновлены, чтобы разрешить расширениям для лучших целевых запросов на основе доменов «запроса» и «инициатора» запроса. Соответствующими свойствами являются initiatorDomains , excludedInitiatorDomains , requestDomains и excludedRequestDomains . См. Также эта нить хрома-экстификации .

Chrome 100: Решенная проблема с scripting.executcript () на недавно созданных вкладках

Исправлена ​​давняя проблема, в которой вызов scripting.executeScript() на недавно созданной вкладке или окне может потерпеть неудачу.

Chrome 100: Нативный порт обмена сообщениями поддерживает обслуживающий работник

Опубликовано

Подключение к местному хозяину обмена сообщениями с использованием chrome.runtime.connectNative() в работнике обслуживания расширения должен поддерживать обслуживающий работник, пока порт открыт.

Chrome 100: Omnibox.setDefaultultsugeggestion () поддерживает обещания и обратные вызовы

Опубликовано

Метод omnibox.setDefaultSuggestion() теперь возвращает обещание или принимает обратный вызов, чтобы позволить разработчикам определить, когда было правильно установлено предложение.

Chrome 100: i18n.getMessage () Поддержка в работниках по расширению работников

Опубликовано

API chrome.i18n.getMessage() теперь поддерживается в контекстах работников службы расширения.

Chrome 99: match_origin_as_fallback в Canary

Опубликовано

Скрипты содержимого теперь могут указывать ключ match_origin_as_fallback , чтобы ввести в кадры, которые связаны с соответствующей кадрой, включая кадры с about: , data: blob: и filesystem: URL. Смотрите документацию по сценариям контента для деталей.

Chrome 99: Поддержка работников расширения для файла: схемы в Canary

Опубликовано

Расширение на основе обслуживания Manifest V2 и Manifest V3 расширения теперь могут использовать API Fetch для запроса file: -Scheme URL. Доступ к file: -Scheme URL -адреса по -прежнему требует, чтобы пользователь включил «разрешить доступ к URL -адресам файлов» для расширения на странице chrome://extensions .

Chrome 99: Обещающая поддержка API обмена сообщениями в Canary

Опубликовано

Поддержка обещания была добавлена ​​в tabs.sendMessage , runtime.sendMessage и runtime.sendNativeMessage для расширений, созданных для манифеста v3.

Обновление документов: документация по обзору веб -магазина Chrome

Опубликовано

Добавлена ​​новая справочная страница , которая содержит обзор процесса обзора веб -магазина Chrome и объясняет, как осуществляется обеспечение соблюдения политики программы разработчиков .

Chrome 98: scripting.executcript () и scripting.insertcsss () Примите несколько файлов

Опубликовано

Методы сценариев API executeScript() и insertCSS() теперь принимают несколько файлов. Ранее эти методы требовали массива с одной записью файла.

Обновление DOCS: обзор нарушения обновлений по устранению неполадок

Опубликовано

Страница по устранению неисправностей Chrome Web Storation была обновлена, чтобы предоставить разработчикам более подробное руководство по общим причинам отказа.

Chrome 96: Расширенная поддержка перспектива для еще 27 API

Опубликовано

Этот релиз содержит значительно больше обновлений перспективы, чем любой предыдущий выпуск. Обновления включают как общие, так и ChromeoS-специфические APIS API. Разверните следующие разделы для деталей.

Расширения APIS

Ряд API теперь поддерживают обещания в Manifest V3.

Кроме того, API, которые используют прототип ChromeSetting теперь также поддерживают обещания. На следующие API влияют это изменение.

Chromeos APIS

Chrome 96: Динамические сценарии контента

Опубликовано

API chrome.scripting теперь поддерживает регистрацию , обновление , нерегистрирование и получение списка сценариев контента во время выполнения. Ранее сценарии контента могли быть статически объявлены только в Manifest.json или программно вводили программно во время выполнения с chrome.scripting.executeScript() .

Обновление документов: график поддержки Manifest V2

Опубликовано

В этом сообщении Manifest V2 на V3 была объявлена ​​в этом сообщении, и была опубликована более подробная страница временной шкалы .

Chrome 96: DeclarativenetRequestwithhostacccess разрешение

Опубликовано

Новое разрешение declarativeNetRequestWithHostAccess позволяет расширениям использовать API chrome.declarativeNetRequest на участках, которые расширение имеет разрешения на хост. Это также позволяет существующим растяжениям V2, которые используют webRequest , webRequestBlocking и разрешение на хост, специфичное для сайта для перехода на API chrome.declarativeNetRequest не требуя, чтобы пользователь утверждал новые разрешения.

Chrome 95: сценарии вводите непосредственно на страницы

Опубликовано

Метод chrome.scripting api executeScript() теперь может вводить сценарии непосредственно в основной мир страницы. Ранее расширения могли вводить только непосредственно в изолированный мир расширения. Для получения дополнительной информации об изолированных мирах см. Документацию по сценариям контента .

Chrome 95: обещание поддержка API хранения

Опубликовано

Методы на манифестной версии V3 chrome.storage API теперь возвращают обещания.

Обновление политики: двухэтапное правоприменение

Опубликовано

Сообщение в блоге в блоге, опубликованное 29 июня 2021 года, была обновлена, чтобы исправить двухэтапную временную шкалу развертывания проверки.

Chrome 94: декларативный чистый запрос. Статические изменения правил.

Опубликовано

chrome.declarativeNetRequest теперь поддерживает определение до 50 статических наборов правил ( max_number_of_static_rulesets ) и включает до 10 наборов правил ( max_number_of_enabled_static_rulesets ) за раз.

Chrome 93: Поддержка изоляции поперечного происхождения

Опубликовано

Как Manifest V2 , так и Manifest V3 расширения теперь могут выбрать изоляцию поперечного происхождения . Эта функция ограничивает, что ресурсы перекрестного происхождения могут загружать страницы расширения и позволяет использовать функции веб-платформы низкого уровня, такие как SharedArrayBuffer . Выберите, начиная с Chrome 95.

Обновление политики: обновления политики программы разработчиков

Опубликовано

Политики программы разработчиков Chrome Web Store были обновлены с разъяснениями в The Chepective Tactics, Spam и повторяющихся политиках контента. Это обновление также включает в себя новое двухэтапное требование проверки для публикации в веб -магазине Chrome. Прочитайте сообщение в блоге для получения дополнительной информации.

Сообщение в блоге: Действия расширения в Manifest V3

Опубликовано

Расширения Chrome имели chrome.browserAction и chrome.pageActions API в течение многих лет, но Manifest V3 заменил оба на общий chrome.actions API. Этот пост исследует историю этих API и то, что изменилось в Manifest V3. Прочитайте пост .

Сообщение в блоге: представление Chrome.scripting

Опубликовано

chrome.scripting API - это новый Manifest V3 API, сфокусированный на сценариях. В этом посте мы копаем мотивы для этого изменения и более внимательно рассмотрим его новые возможности. Прочитайте пост .

Chrome 92: Поддержка модуля обслуживания работников

Опубликовано

Chrome теперь поддерживает модули JavaScript у работников обслуживания. Чтобы указать модуль модуль в вашем манифесте:

"background": {
  "service_worker": "script.js",
  "type": "module"
}

Это загружает сценарий работника как модуль ES, который позволяет использовать ключевое слово import в скрипте работника для импорта других модулей.

Chrome 91: chrome.action.getusersettings ()

Опубликовано

Новый метод chrome.action.getUserSettings() позволяет расширениям определять, прикрепил ли пользователь расширение к основной панели инструментов.

Chrome 90: Chrome.scripting.removecss ()

Опубликовано

Новый метод chrome.scripting.removeCSS() позволяет расширениям удалять CSS, который ранее был вставлен с помощью chrome.scripting.insertCSS() . Заменяет chrome.tabs.removeCSS() .

Chrome 90: Возвращающиеся обещания из Scripting.executcript ()

Опубликовано

chrome.scripting.executeScript() теперь поддерживает возвращающиеся обещания. Если результирующее значение выполнения скрипта является обещанием, Chrome будет ждать обещания урегулировать и вернуть ее полученное значение.

Chrome 90: chrome.scripting.executcriptcript () Результаты включают FrameID

Опубликовано

Результаты, возвращаемые из chrome.scripting.executeScript() теперь включают FrameID . Свойство frameId указывает на кадр, из -за чего результат, позволяя расширениям легко связать результаты с отдельными кадрами при введении в несколько кадров.

Chrome 89: новый API для управления группами вкладок

Опубликовано

Новые API и новые возможности chrome.tabGroups в chrome.tabs позволяют расширениям читать и манипулировать группами вкладок. Требуется манифест V3.

Chrome 89: Настраиваемые разрешения на доступные в Интернете ресурсы

Опубликовано

Определения доступных ресурсов в Интернете в Manifest v3 изменились, чтобы расширить расширение доступа к ресурсам на основе идентификатора происхождения или расширения запрашивателя.

Сообщение в блоге: преобразователь расширения Manifest

Опубликовано

Команда «Расширения Chrome» имеет открытый источник «преобразователь манифеста удлинения», инструмент Python, который автоматизирует некоторые из механических аспектов преобразования расширений в Manifest V3. Смотрите сообщение о объявлении в блоге и получите его от GitHub .

Chrome 88: Manifest V3 Общая доступность

Опубликовано

Manifest V3 является основным обновлением платформы расширений; См. Обзор Manifest V3 для краткого изложения новых и измененных функций. Расширения могут продолжать использовать Manifest V2 на данный момент, но в ближайшем будущем это будет снято. Мы настоятельно рекомендуем вам использовать Manifest V3 для любых новых расширений, и как можно скорее начнем переносить существующие расширения, чтобы проявить V3.

,

Проверьте эту страницу часто, чтобы узнать об изменениях в расширениях хрома, документации по расширениям или соответствующей политике или другим изменениям. Вы найдете другие уведомления, опубликованные в списке рассылки Chrome Advensions . График Chrome перечисляет стабильные и бета -даты.

Видео: Whack-a-Mole в вашем браузере-это возможно!?

Опубликовано

Узнайте, как вы можете построить игру в браузере в нашем последнем видео .

Видео: Новое меню «Кром

Опубликовано

Узнайте о новом меню экспериментальных расширений в нашем последнем видео, объяснено новое меню «Расширения» Chrome .

Видео: Расширения аккуратны!

Опубликовано

Узнайте, как вы можете начать с развитием расширения в расширениях, - это аккуратный эпизод 1 , и насколько гибкая настройка Chrome с эпизодом 2 !

Chrome 135: new userscripts.execute () api

Опубликовано

Начиная с Chrome 135, новый метод userScripts.execute() доступен в API chrome.userScripts . Вы можете использовать это для введения пользовательского сценария один раз в произвольное время вместо того, чтобы навсегда зарегистрировать его.

Chrome 132: Просмотр и редактирование хранения расширения в Devtools

Опубликовано

Начиная с Chrome 132, вы можете просматривать и редактировать данные, хранящиеся с использованием API chrome.storage в Devtools. Чтобы узнать больше, см. Новую страницу представления и редактируйте хранение расширения в документации DevTools.

Сообщение в блоге: новое меню расширений

Опубликовано

В Google I/O Ou 2024 мы поделились некоторыми ранними проектами для предстоящих изменений в меню «Расширения», которые дают пользователям больше контроля над расширениями сайтов. Мы собираемся начать тестирование этих изменений в ближайшее время, начиная с небольшого процента пользователей в Канарских островах и с надеждой развернуть их более широко в будущем.

Мы также представляем chrome.permissions.addHostAccessRequest() API.

Читайте больше в нашем сообщении в блоге .

Chrome 132: новое замороженное свойство в API в таблицах

Опубликовано

Начиная с хрома 132, frozen свойство в API вкладок указывает, была ли вкладка заморожена браузером. Сообщения, отправленные на замороженные вкладки, будут направлены в очередь и обрабатываются, когда вкладка не является незамеренной.

Быстрый API в расширении хрома

Опубликовано

Приглашенный API для расширений теперь доступен в испытании происхождения, поэтому вы можете создавать хромированные расширения, которые используют Gemini Nano, нашу наиболее эффективную языковую модель в браузере.

Присоединяйтесь к быстрому испытанию API Origin, работающего в Chrome 131-136, и поделитесь своими отзывами. Ваш вход может напрямую повлиять на то, как мы создаем и реализуем будущие версии этого API, и все встроенные API AI.

Сообщение в блоге: Что происходит в расширениях Chrome, октябрь 2024 г.

Опубликовано

Пришло время для очередного собрания того, что происходит в расширениях Chrome: у нас есть захватывающие обновления интеграции искусственного интеллекта, новых API, событий и видео. Прочитайте все об этом в том, что происходит в Chrome Advensions Octoble Edition !

Присоединяйтесь к встроенному испытанию AI

Опубликовано на

Chrome запустил встроенный AI Challenge: вам предложено создать инновационные веб-приложения и расширения Chrome, используя интегрированные модели ИИ Chrome и API , и у вас есть шанс выиграть призы, которые составляют 65 000 долларов США.

Зарегистрируйтесь и получите больше информации на встроенном веб-сайте AI Challenge . Мы не можем дождаться, чтобы увидеть, что вы создаете, когда внедряете Интернет с ИИ!

Chrome 130: Action.onusersettingschanged

Опубликовано на

Начиная с Chrome 130, событие Action.onusersettingSchanged доступно. Это следует за предложением в общественной группе Webextensions. Спасибо Microsoft за вклад в Chromium.

Chrome 130: Storagearea.getKeys ()

Опубликовано на

Начиная с Chrome 130, метод getKeys () доступен на интерфейсе Storagearea, используемом chrome.storage API. Это следует за предложением в общественной группе Webextensions.

Chrome 128: Сопоставление заголовка ответа в декларативном чистом запросе

Опубликовано на

Начиная с Chrome 128, мы добавляем поддержку для сопоставления заголовков ответов в API декларативного чистого запроса. Это был общий запрос, особенно для сопоставления заголовка типа контента, и мы разработали подходящий API вместе с группой сообщества Webextensions.

Мы обновили нашу ссылку API, чтобы включить новые responseHeaders и excludedResponseHeaders . Вы можете использовать их, чтобы проверить наличие и значение данного заголовка.

В рамках этого обновления мы добавили в нашу документацию новый раздел оценки правил , который объясняет, как соответствуют правила. В частности, для сопоставления заголовков правила могут работать только после получения заголовков ответов, поэтому они применяются на более позднем этапе, чем другие правила. Это означает, что запрос достигает сервера, прежде чем заблокирован или перенаправлен.

Видео: Что такое сценарии контента?

Опубликовано

Узнайте о сценариях контента в расширениях Chrome, в том числе о том, как зарегистрировать CSS и JavaScript для запуска на конкретной странице. Проверьте полное видео .

Важные обновления политики

Опубликовано на

Команда Chrome Web Store опубликовала серию обновлений на странице политик программ разработчиков, предназначенной для стимулирования разработки высококачественных продуктов, предотвращения обманчивого поведения и обеспечения информированного согласия пользователя. Ребекка Соарес, менеджер по политикам веб -магазина Chrome, суммировала все обновления в расширениях Chrome: Важные обновления политики в блоге .

Сообщение в блоге: Что происходит в расширениях Chrome, июль 2024 г.

Опубликовано на

За последние три месяца мы развернули несколько значительных обновлений и новых функций, в том числе начало манифеста V2 Phase Out. Встаньте на скорость в том, что происходит в Chrome Advensions Julal Edition !

Видео: Что такое дистанционный хост -код?

Опубликовано на

Патрик из команды Chrome Extensions объясняет концепцию дистанционно размещенного кода (RHC) в расширениях Chrome. Узнайте, почему RHC больше не разрешена, как его обнаружить и что делать, если ваше расширение должно быть обновлено. Проверьте полное видео .

Chrome 127: Новое действие. API Openpopup

Опубликовано на

Начиная с Chrome 127, action.openPopup API доступен для всех расширений. Раньше он был доступен только в Канарейке или для расширений, установленных политикой.

Видео: Интервью команды доверия и безопасности

Опубликовано на

Команда Devrel Devrels Chrome села с командой Trust & Safety, которая ведет обзор в веб -магазине Chrome, чтобы задать ваши вопросы. Проверьте полное видео .

Сообщение в блоге: начинается манифест v2.

Опубликовано на

Начиная с 3 июня по бета -версии Chrome, Dev и Canary, если пользователи по -прежнему имеют установленные растяжения V2, некоторые начнут видеть баннер по предупреждению при посещении своей страницы управления расширением - Chrome: // Расширения - информируя их о том, что некоторые (манифест V2) расширения, которые они установили, вскоре больше не поддерживаются. Узнайте больше в официальном объявлении

Обновления для пользовательского интерфейса боковой панели

Опубликовано на

Недавно мы внесли некоторые изменения в пользовательский интерфейс боковой панели, в том числе добавление значка PIN -кода и удаление значка Global Side Panel. Читайте больше в PSA и посмотрите нашу обновленную документацию и образцы .

Сообщение в блоге: расширения Chrome в Google I/O OC 2024

Опубликовано на

Еще один Google I/O -вывод стоит позади, и мы рассмотрели все захватывающие обновления расширений! Отправляйтесь на YouTube, чтобы посмотреть полное видео и прочитать наш пост в блоге для некоторых основных моментов.

Пропустить обзор для подходящих декларативных изменений в чистом запросе

Опубликовано на

В веб -магазине Chrome теперь позволяет пропустить обзор для подходящих изменений при использовании API декларативного чистого запроса. Узнайте больше о праве на участие и о том, как зарегистрироваться в документации Chrome Web Store .

DeployperCentage доступен в API Chrome Web Store

Опубликовано на

Недавно мы обновили нашу документацию по API Web Store Chrome, чтобы включить информацию о deployPercentage , которая позволяет вам назначить процент от частичного развертывания развертывания. Узнайте о deployPercentage .

Chrome 126: Испытания происхождения в расширениях

Опубликовано на

Chrome 126 представляет новый Manifest.json Field - trial_tokens , позволяя вам выбрать испытания происхождения и испытания по терапии на всех поверхностях расширения. Прочитайте руководство для получения дополнительной информации.

Сообщение в блоге: Что происходит в Chrome Adensions-April 2024

Опубликовано на

Мы опубликовали новое издание того , что происходит в расширениях Chrome . В сообщении обсуждается, над чем работала команда расширения в течение последних нескольких месяцев. Это включает в себя: version rowlback в веб -магазине Chrome, лучшая поддержка Auth Base Auth и другие запуска API и обновления.

Версия откаты в приборной панели разработчика Chrome Web Store Developer

Опубликовано на

Обратите свое расширение на предыдущую опубликованную версию в веб -магазине Chrome - без дополнительного обзора! Прочитайте сообщение в блоге и документацию для получения дополнительной информации.

Chrome 124: Advanced Documentscan API

Опубликовано на

Advanced documentScan API теперь доступен в Chromeos для обнаружения и извлечения изображений из прикрепленных сканеров документов.

Chrome 124: поддержка WebGPU в обслуживании работников

Опубликовано на

Со времен Chrome 124 работники обслуживания поддерживают WebGPU . Для быстрого запуска проверьте образец расширения WebGPU .

Chrome 123: API событий поддерживает фильтрацию с помощью блоков CIDR

Опубликовано на

API событий теперь поддерживает фильтрацию с помощью бесклассовых междоменных блоков маршрутизации (CIDR). Блок CIDR - это набор IP -адресов, которые разделяют префикс сети и одинаковое количество битов. Ранее разработчик нуждался в фильтровании нескольких IP -адресов, необходимых для настройки правила фильтра для каждого из адресов в диапазоне блоков. Теперь, когда расширение вызывает addListener() , принятое правило означает, что обработчик событий будет вызван только тогда, когда хост часть URL -адреса является IP -адресом и содержится в любом из блоков CIDR, указанных в массиве.

Chrome Web Store: обновления требований к имени расширения

Опубликовано на

В веб -магазине Chrome в настоящее время существует универсальный предел 75 символов для поля "name" расширения в Manifest.json. Ранее предел английского был 45 символов, и не было никаких ограничений в поле "name" в других местах.

Первоначально это было предназначено для того, чтобы разрешить культурные и языковые различия, которые не могут быть захвачены в одинаковом количестве символов. К сожалению, эта функция подвергалось насилию со стороны небольшого числа разработчиков, чтобы спамить магазин. В результате мы вводим новый универсальный предел, увеличение до 75 символов. Этот предел сегодня охватывает почти все расширения в магазине, поэтому в результате этого изменения вам, вероятно, это не потребуется никаких действий. Если вы попытаетесь загрузить расширение, которое имеет имя дольше, чем максимальный предел, то загрузка будет заблокирована магазином.

Пост в блоге: Путешествие Eyeso to Testing Service Worker Supply

Опубликовано на

В этом посте команде Extension Engine Engine мы исследуем проблему тестирования работников службы расширения. В Manifest v2 расширения жили на фоновой странице, которая бодрствовала на протяжении всего жизненного цикла расширения. Вместо этого Manifest V3 использует работников обслуживания, а обслуживание, по проекту, сохраняет ресурс, отключившись, когда они не нужны. Это представляет определенные проблемы тестирования. Этот пост объясняет, как Eyeo решал эти проблемы .

Chrome 123: Слова теперь работает, когда устройство спит

Опубликовано на

Аварийные сигналы, установленные с использованием API API chrome.alarms больше не задерживаются, когда устройство ложится спать. Когда устройство просыпается, тревога будет стрелять один раз, независимо от того, сколько тревоги было пропущено. Например, скажем, что сигнализирует один раз в час, и устройство, на котором он находится, спит с 12:55 до 2:05, а затем только 2:00 утра запускает событие onAlarm . Он будет стрелять как можно ближе к 2:00 утра, и сразу же, когда устройство просыпается, если оно спало.

Это изменение вносит Chrome в соответствии с согласованным поведением в группе сообщества Web Adensions.

Сообщение в блоге: изменения в поведении BFCache с портами сообщений расширения

Опубликовано на

Back/Forward Cache (BFCACHE) - это оптимизация браузера, которая позволяет мгновенно навигацию назад и вперед. Начиная с Chrome 123, когда в BFCache хранится страница с открытым расширением, канал сообщения закрыт, что означает, что на эту страницу не будет отправлено никаких сообщений. Следовательно, сценарии расширения должны прослушать события жизненного цикла, такие как onDisconnect , и настроить новое соединение, когда страница восстанавливается из BFCache.

Для получения дополнительной информации и примера кода см. Изменения в поведении BFCache с портами сообщений о расширении .

Chrome 122: Обещающая поддержка по асинхронному расширению API

Опубликовано на

Мы закончили внедрение поддержки перспективной поддержки для всех асинхронных методов API расширения. Это было сделано для модернизации методов API путем улучшения эргономики работы с асинхронными операциями. Горстка методов (например, desktopCapture.chooseDesktopMedia() ) продолжает поддерживать только обратные вызовы, потому что их текущие поверхности не совместимы с обещаниями. Для обратной совместимости вызовы все еще поддерживаются. Если вы найдете обещание, которое не удается, подайте ошибку .

Новое руководство по общению в режиме реального времени

Опубликовано на

Мы только что опубликовали гиды по вариантам в режиме реального времени в расширениях. Обновления в режиме реального времени обеспечивают мгновенный путь связи с ваших серверов непосредственно до установки расширения. Кроме того, у нас есть новое руководство по использованию Chrome.gcm , Web Push .

Новое руководство и пример: увольнение работников тестирования

Опубликовано на

Мы только что опубликовали руководство о том, как протестировать прекращение службы с кукловым . Сопровождающий образец демонстрирует это в кукловом и селене.

Обновленная образец для собственных сообщений

Опубликовано на

Мы только что опубликовали обновленную образец для обмена сообщениями. Этот API позволяет вашему расширению начинать и общаться с другим приложением. Спасибо участнику Github Shubham-Rasal за работу по этому поводу.

Chrome 121: новое самостоятельное свойство на tabs.tab

Опубликовано

Новое свойство, названное lastAccessed было добавлено в объект tabs.Tab . Это свойство указывает, когда вкладка была в последний раз активирована. Возвращенное значение находится в миллисекундах с эпохи.

Chrome 121: Неподдерживаемые «фоновые» ключи теперь выпускайте предупреждение

Опубликовано на

В переключении от Manifest V2 на Manifest V3 дети "background" манифеста были изменены, чтобы приспособить замену фоновых сценариев на работников службы расширения. Раньше, добавление манифестных клавиш V2 "scripts" , "page" или "persistent" к ключу "background" из манифестного расширения v3 принесло бы ошибку. Присутствие этих ключей теперь вызывает предупреждение.

Это делается для того, чтобы включить использование одного манифестного файла в расширениях в нескольких браузерах, согласно предложению в группе сообщества .

Chrome 120: Минимальная гранулярность тревоги уменьшена до 30 секунд

Опубликовано на

Начиная с Chrome 120, растяжения Manifest V3 могут использовать chrome.alarms API Alarms с задержками или периодами 30 секунд, а не требует значений 60 секунд или более.

Сообщение в блоге: возобновление перехода к Manifest V3

Опубликовано на

Срок службы поддержки Manifest V2 была обновлена. Смотрите наш пост в блоге в ноябре 2023 года для получения подробной информации.

Сообщение в блоге: улучшения поддержки фильтрации контента в Manifest v3

Опубликовано на

Узнайте о том, как мы улучшили API DeclarativenetRequest в нашем новом сообщении в блоге .

Сообщение в блоге: что нового в Chrome 120 для расширений

Опубликовано на

Chrome 120 Beta была недавно выпущена. Для краткого изложения важных обновлений, имеющих отношение к разработчикам расширения, прочитайте наш новый пост в блоге: Что нового в Chrome 120 для расширений . Этот релиз также отмечает основную веху, поскольку он удаляет два последних элемента (пользователи, обработчики файлов на Chromeos) из списка критических пробелов на платформе .

PSA: Изменение URL -адреса политики в области политики конфиденциальности в приборной панели разработчика

Опубликовано на

Политики конфиденциальности на приборной панели разработчика теперь добавляются на уровне элементов. Это позволяет вам предоставлять другую политику конфиденциальности на предмет. Узнайте больше об этом изменении в нашем PSA .

Видео: чат с Мэттом Фрисби

Опубликовано на

Мы только что опубликовали новое видео на Chrome для разработчиков на канале YouTube в чате с экспертом по разработчику Google и автором Мэттом Фрисби. Смотрите это здесь .

Новое руководство по расширениям тестирования

Опубликовано на

We've just published new guidance on how to write automated tests for extensions, including how to write unit tests and both general guidance and a tutorial on end-to-end testing.

Blog post: What's happening in Chrome Extensions - October 2023

Posted on

We've just published the second edition of What's Happening in Chrome Extensions . The post discusses what the extension team has been working on for the past few months, including, addressing service worker stability issues, and making good progress on closing all MV3 platform gaps. We also share exciting upcoming API releases like the Reading List API and the User Scripts API.

Increased static ruleset limits in Declarative Net Request API

Posted on

Following feedback in the Web Extensions Community Group, we are significantly increasing the limit on enabled static rulesets from 10 to 50. Additionally, we are increasing the total number of allowed static rulesets from 50 to 100. This is currently available in Canary.

Improved guidance around remotely-hosted code

Posted on

A requirement for Manifest V3 is that extensions may no longer use remotely-hosted code. Although this has been part of our migration guide from the beginning, we thought it was worth improving the guidance around this issue. That page now provides more information, describing what's still possible in Manifest V3 and providing more information on strategies for upgrading.

There is a related addition to the Troubleshooting Chrome Web Store violations . A new section describes common reasons that extensions with remotely-hosted code are rejected.

Chrome 118: isUrlFilterCaseSensitive now defaults to false

Posted on

Starting in Chrome 118, the isUrlFilterCaseSensitive property in the chrome.declarativeNetRequest API has been changed to default to false . If you wish to keep the old behavior, you can explicitly set isUrlFilterCaseSensitive to true in your declarativeNetRequest rules.

This follows discussions in the Web Extensions Community Group. Firefox and Safari have already implemented a similar change.

Documentation on cookies and web storage APIs

Posted on

We published a new guide on how cookies and web storage APIs work in Chrome extensions . It includes details on cookie and storage partitioning changes in Privacy Sandbox , an ongoing project to deprecate third-party cookies through the creation of a series of new web platform APIs, and details on how they work in extensions.

Extension samples now searchable

Posted on

We recently created a page that lets you search Chrome extension samples . The search page has multiple options. A search box lets you search for text in sample titles. You can restrict the search by permission or extension API. An additional filter lets you restrict search to either API or functional (use case) samples.

This new sample page was built by a Google Summer of Code participant, Xuezhou Dai, who also contributed several new samples. You can read about their experiences this past summer in their post on our blog .

As before, our code samples are still available on GitHub for cloning or forking.

Chrome 118: Changes to opening file: scheme URLs

Posted on

Beginning in Chrome 118, extensions will need the "Allow access to file URLs" setting enabled from the chrome://extensions page to open file:// scheme URLs using the Tabs or Windows APIs. You can programmatically check for this access by calling chrome.extension.isAllowedFileSchemeAccess() . Firefox already restricts file URLs, and Safari supports the change. For more information, read the post on the Chrome Extensions Mailing List .

Chrome 117: Expanded URL protections on extension API navigations

Posted on

Previously navigation triggered from extension API calls for tabs.update() , tabs.create() , and windows.create() emitted an error for some chrome:// URLs. Additionally, calling tabs.update() with a JavaScript URL was forbidden. In 117, these protections on JavaScript URLs have been expanded to the tabs.create() method and a number of additional chrome:// URLs have been added to the list of forbidden URLs that applies to all of the previously mentioned methods.

Improved guidance for the declarativeNetRequest API

Posted on

The chrome.declarativeNetRequest API blocks or modifies network requests by specifying declarative rules. This lets extensions modify network requests without intercepting them and viewing their content, thus providing more privacy to users. It's also tricky to use. With that in mind, we've rewritten the guidance in a way that we think paints a clearer picture of how to implement declarative rulesets. Read the new section at the link above.

Using your Google Analytics account with the Chrome Web Store

Posted on

The Chrome Web Store offers integration with Google Analytics, which allows you to see analytics for your Chrome Web Store listing in addition to the view offered in the Developer Dashboard. For more information, read Using your Google Analytics account with the Chrome Web Store .

Chrome 115: DevTools steps over content scripts by default

Posted on

Injected content scripts are now in the DevTools ignore list by default. This doesn't affect breakpoints, but it does mean that content scripts will be stepped over during debugging and exceptions from these scripts will be ignored. When a content script is open in the Sources tab, a banner alerts you if this is on and provides an option to remove your content script from the ignore list. To turn this behavior off, open DevTools, go to Settings then Ignore list . To learn more, see What's new in DevTools .

Chrome 116 beta: More than we can fit here

Опубликовано

Chrome 116 is a big release for extensions. You can now open side panels programmatically. A new method lets you learn if there's an active offscreen document. Service workers got serveral improvements. There's enough improvements in 116 that we've written a blog post to cover them . Chrome 116 is in beta as of July 19.

Blog post: What's happening in Chrome Extensions

Posted on

We've just published an overview of this year's changes and improvements to extensions . The post discusses the year's big new features, including the Side Panel API, service worker enhancements, and offscreen documents. You'll also get a peek at what we're working on for this quarter. The article lists much more, with links to all.

New guidance and sample: Learn how to use Google Analytics 4 in your Chrome extension

Posted on

We published new Google Analytics and geolocation guidance and samples:

Chrome 115: Specify multiple reasons in chrome.offscreen.createDocument()

Posted on

You can now specify multiple reason enums when calling chrome.offscreen.createDocument() . Use this when an offscreen document will be used for multiple different purposes. The browser uses the supplied reasons to determine the lifetime of the offscreen document.

New tool: Extension Update Testing Tool

Posted on

We've just released the Extension Update Testing Tool , a local extension update server that can be used for testing updates to Chrome Extensions during local development, including permission grants. The tool shows the user's update flow, including keeping an extension disabled until a user grants any newly requested permissions. This tool is particularly useful for simulating the permission changes requested when updating an extension from Manifest V2 to Manifest V3.

Chrome 114: New Side Panel API

Posted on

Introducing the new Side Panel API, a companion surface that allows users to access tools alongside the content they are browsing. To learn more, visit the Side Panel API reference . Additionally, we've added many side panel samples to our GitHub sample repository . We also share more about side panels in the new blog post Designing a Superior User Experience with the New Side Panel API . Our quality guidelines policy and best practices have also been reviewed to provide further guidance on creating high-quality side panel extensions.

Your feedback is important in crafting this API; please share your thoughts and feature requests in the chromium-groups . Stay tuned for new updates as we continue to enhance the Side Panel API.

New Samples: WASM in extensions

Posted on

There are two new samples available that demonstrate how to use WASM in an extension:

Special thanks to GitHub contributor @daidr for these samples.

Updated Manifest V3 migration guidance

Posted on

We've updated the Known Issues section of our Manifest V3 migration guidance with an updated list of extension platform gaps that we intend to close before announcing a new Manifest V2 deprecation timeline.

Recording audio and video with Manifest V3

Posted on

We've just published a new article called Audio recording and screen capture , which covers recording audio or video from a tab, window, or screen in Manifest V3. This article describes multiple approaches to recording involving the chrome.tabCapture API and the getDisplayMedia() function.

Chrome 114: Increased storage.local quota

Posted on

We have increased the quota for the storage.local property to approximately 10 MB. This was agreed to in the Web Extensions Community Group . This brings storage.local in line with storage.session which was changed in Chrome 112.

New extension service worker tutorial and help

Posted on

Service Workers are an integral part of Chrome Extensions. We just published a tutorial explaining the basics of registering, debugging, and interacting with Service Workers. We've also added a new Service worker guide explaining important concepts in more detail. We'll be expanding this section in the coming months.

More troubleshooting tips for Web Store violations

Posted on

To help with Chrome Web Store publishing, we added new guidance in two areas. Guidance for minimum functionality centers around providing users with benefits and enriching their browsing experience. Guidance for affiliate ads is about making users are aware of extensions using affiliate links or codes for monetization, and giving them some amount of control by requiring user action before inclusion.

New instructions for the Extension Manifest Converter

Posted on

We've rewritten the README for the Extension Manifest Converter to make it easier to see what you need to do after running the tool. The converter helps helps migrate extensions built on Manifest V2 to Manifest V3. The new README describes what the tool does using words that closely match those in the migration guide's checklist . The converter doesn't do everything, but it does eliminate many tasks that don't require a human judgement call.

Chrome 113: New reasons for offscreen documents

Posted on

We have added two new reason types to the Offscreen Documents API. Use LOCAL_STORAGE to access the web platform's localStorage API. Use WORKER when creating web workers.

Google Analytics 4 now in the Developer Dashboard

Posted on

The Chrome Web Store Developer Dashboard now supports Google Analytics 4 (GA4). We've simplified setting up Google Analytics and made access management for group publishers more straightforward. If you previously used Google Universal Analytics to track your store listing activity, you will need to take action by July 1, 2023 to ensure that you continue receiving data about your store listing. For more information, see the post on the Chrome Extensions Mailing List .

The File Handling API comes to ChromeOS

Posted on

The File Handler API is available for experimentation on ChromeOS in Canary for versions 112 and 113. It lets extensions on ChromeOS open files with specified MIME types and file extensions. To implement file handling add a set of rules to the manifest.json . This feature works the same as for Progressive web apps. For more information, see the article elsewhere on this site.

To enable file handling:

  • Starting in 112, launch Chrome using the --enable-features=ExtensionWebFileHandlers flag, starting in 112
  • Starting in 113, paste os://flags/#extension-web-file-handlers into the Chrome omnibox and select 'Enabled' from the dropdown menu.

We hope to launch this feature in Chrome 115, in late June. Watch this space for updates.

New Samples: dynamic declarations and programmatic injection

Posted on

We've built a new sample for the chrome.scripting API. It demonstrates dynamic declarations, where a content script is registered at runtime, and programmatic injection, where a script is executed in a tab that is already open.

New Samples: Declarative Net Request use cases

Posted on

Three new samples are available demonstrating the Declarative Net Request API . Each demonstrates implementation of a single use case. The first shows how to block cookies. The remaining two demonstrate blocking and redirecting URLs.

Chrome 112: Increased storage.session quota

Posted on

From Chrome 112, the quota for the storage.session property has been increased to approximately 10 MB. This was agreed to in the Web Extensions Community Group: https://github.com/w3c/webextensions/issues/350

Chrome 109: Offscreen documents

Posted on

Offscreen documents are now available in Manifest V3 extensions. These help with the transition from background pages to extension service workers by providing support for DOM-related features and APIs. For more information, read the blog post .

Chrome 110: Is an extension enabled

Posted on

The chrome.action.isEnabled() method programmatically checks whether an extension has been enabled for a specific tab. This saves you from maintaining the enabled state of your tabs. This new method takes a tab ID and a reference to a callback and returns a boolean. It has one limitation: tabs created using chrome.declarativeContent always return false.

(The chrome.action namespace recently got new methods for controlling the appearance of extension badges. For more information, see Setting badge colors .)

Chrome 110: Change in service worker idle timeout

Posted on

Previously, an extension service worker would frequently shut down at the five minute mark. We've changed this behavior to more closely resemble service worker lifetime's on the web. An extension service worker will be shut down after either thirty seconds of inactivity or if a single activity takes longer than 5 minutes to process. For more information, see Longer extension service worker lifetimes .

Post: Pausing Manifest V2 phase-out

Posted on

The Manifest V2 deprecation timelines are under review and the experiments scheduled for early 2023 are being postponed. For more information, read the update in the Chrome Extensions Mailing List.

Chrome 110: Setting badge colors

Posted on

The chrome.action namespace has two new methods to give you more control over the appearance extension badges. The setBadgeTextColor() and getBadgeTextColor() methods allow an extension to change and query its toolbar icon's badge text color. When used with setBadgeBackgroundColor and getBadgeBackgroundColor these new methods let you enforce design and brand consistency.

Blog post: More details on the transition to Manifest V3

Posted on

We have clarified the Manifest V2 deprecation timeline . The Manifest V2 support timeline has also been updated to reflect this information.

Docs update: Known issues when migrating to Manifest V3

Posted on

We've put together a list of major features currently in development and open bugs . Our goal with this page is to help developers better understand the current state of the platform and what features they can target as they prepare for the future.

Chrome Web Store: "large promo tile" image upload removed

Posted on

Chrome Web Store has removed the "large promo tile" upload UI from the item Store Listing tab in the developer dashboard. This change does not affect the end user experience as these images were not used in the consumer UI. See this chromium-extensions post for additional details.

Chrome 106: Allow pages on file:// urls to access web accessible resources

Posted on

Opaque origins such as sandboxed iframes and dynamic import should also be able to access web accessible resources, according to crbug.com/1219825#c11 .

Chrome 106: Fixed bug allowing incorrect final arguments on some async API functions

Опубликовано

Previously, Manifest V3 calling async APIs could provide an invalid final argument and Chrome would not error. With this fix Chrome will now correctly error and report that there was no matching signature. Developers are encouraged to check their extensions on Canary for any errors in case they accidentally using incorrect signature for an API call that will be broken by this bug fix.

Blog post: Chrome Web Store analytics revamp

Posted on

Chrome Web Store has a revamped item analytics experience for the Chrome Web Store Developer Dashboard. The new dashboard is easier to understand at a glance and consolidates the most useful information up front. Read the blog post for more information.

Chrome 105: promises for the Identity API

Posted on

Functions on the Identity API now support promise based calls. This comes with a slight change to the surface for identity.getAuthToken() , where the asynchronous return set to a promise based call will have "token" and "grantedScopes" as parameters on a single object (as opposed to the callback version receiving them as separate arguments to the callback).

Chrome 104: New favicons API for Manifest V3

Posted on

Manifest V3 extensions can now access favicons using a new URL pattern: chrome-extension://<id>/_favicon/ , where is the ID of your extension. This replaces the Manifest V2 platform's chrome://favicons API. See the Favicon API docs for more information.

Docs update: Developer trader/non-trader disclosure

Posted on

Added the trader/non-trader developer identification that informs developers to accurately self-declare their trader/non-trader status.

Chrome 103: Wasm in Manifest V3 requires wasm-unsafe-eval

Posted on

Chrome no longer grants extensions script-src: wasm-unsafe-eval by default. Extensions that use WebAssembly must now explicitly add this directive and value to extension_pages in their content_security_policy declarations.

Chrome 103: Changing MV3 shortcuts take effect immediately

Posted on

When changing a Manifest V3 extension's keyboard shortcut on chrome://extensions/shortcuts , updates are now applied immediately. Previously the extension would have to be reloaded before the change would take effect.

Chrome 102: Dynamic content scripts in main world

Posted on

Dynamically registered content scripts can now specify the world that assets will be injected into. See scripting.registerContentScripts() for details.

Chrome 102: New manifest field "optional_host_permissions"

Posted on

Manifest V3 extensions can now specify the optional_host_permissions key in manifest.json. This allows Manifest V3 extensions to declare optional match patterns for hosts just as Manifest V2 extensions could using the optional_permissions key.

Chrome 102: injectImmediately property in scripting.executeScript()

Posted on

chrome.scripting.executeScript() now accepts an optional injectImmediately property on it's injection argument. If present and set to true, the script will inject into the target as soon as possible, rather than waiting for document_idle . Note that this is not a guarantee the script will inject before the page is loaded since the page continues to load while the API call is being made.

Chrome 102: Omnibox API support in Manifest V3

Posted on

The Omnibox API can now be used in service worker-based extensions. Previously, some of this API's methods would throw on invocation due to internal dependencies on DOM capabilities.

Chrome 102: wasm-unsafe-eval allowed in Manifest V3 CSP

Posted on

Manifest V3 extensions can now include wasm-unsafe-eval in their content_security_policy declarations. This change allows Manifest V3 extensions to use WebAssembly.

Chrome 102: New storage.session API

Posted on

Manifest V3 extensions can now use in memory storage storage.session .

Docs update: Chrome Web Store item discovery

Posted on

Discovery on Chrome Web Store gives an overview of how users find items on the Chrome Web Store and how our editors select items to feature.

Chrome 101: Improved declarativeNetRequest domain conditions

Posted on

declarativeNetRequest rule conditions have been updated to allow extensions to better target requests based on the request's "request" and "initiator" domains. The relevant condition properties are initiatorDomains , excludedInitiatorDomains , requestDomains , and excludedRequestDomains . See also this chromium-extensions thread .

Chrome 100: Resolved issue with scripting.executeScript() on newly created tabs

Fixed a longstanding issue where calling scripting.executeScript() on a newly created tab or window could fail.

Chrome 100: native messaging port keeps service worker alive

Posted on

Connecting to a native messaging host using chrome.runtime.connectNative() in an extension's service worker should keep the service worker alive as long as the port is open.

Chrome 100: omnibox.setDefaultSuggestion() supports promises and callbacks

Posted on

The omnibox.setDefaultSuggestion() method now returns a promise or accepts a callback to allow developers to determine when the suggestion has been properly set.

Chrome 100: i18n.getMessage() support in extension service workers

Posted on

The chrome.i18n.getMessage() API is now supported in extension service worker contexts.

Chrome 99: match_origin_as_fallback in Canary

Posted on

Content scripts can now specify the match_origin_as_fallback key to inject into frames that are related to a matching frame, including frames with about: , data: , blob: , and filesystem: URLs. See the content scripts documentation for details.

Chrome 99: extension service worker support for file: schemes in Canary

Posted on

Service worker-based Manifest V2 and Manifest V3 extensions can now use the Fetch API to request file: -scheme URLs. Access to file: -scheme URLs still requires that the user enable 'Allow access to File URLs' for the extension in the chrome://extensions page.

Chrome 99: promise support for messaging APIs in Canary

Опубликовано

Promise support has been added to tabs.sendMessage , runtime.sendMessage , and runtime.sendNativeMessage for extensions built for Manifest V3.

Docs update: Chrome Web Store review documentation

Posted on

Added a new reference page that provides an overview of the Chrome Web Store review process and explains how developer program policy enforcement is handled.

Chrome 98: scripting.executeScript() and scripting.insertCSS() accept multiple files

Posted on

The Scripting API's executeScript() and insertCSS() methods now accept multiple files. Previously these methods required an array with a single file entry.

Docs update: review violation troubleshooting updates

Posted on

The Troubleshooting Chrome Web Store violations page has been updated to provide developers with more detailed guidance for common reasons for rejection.

Chrome 96: expanded promise support to 27 more APIs

Posted on

This release contains significantly more promise updates than any previous release. Updates include both general and ChromeOS-specific extensions APIs. Expand the following sections for details.

Extensions APIs

A number of APIs now support promises in Manifest V3.

Also, APIs that use the ChromeSetting prototype now also support promises. The following APIs are affected by this change.

ChromeOS APIs

Chrome 96: dynamic content scripts

Posted on

The chrome.scripting API now supports registering , updating , unregistering , and getting a list of content scripts at runtime. Previously, content scripts could only be statically declared in an extension's manifest.json or programmatically injected at runtime with chrome.scripting.executeScript() .

Docs update: Manifest V2 support timeline

Posted on

The Manifest V2 to V3 transition timeline was announced in this blog post and a more detailed timeline page was published.

Chrome 96: declarativeNetRequestWithHostAccess permission

Posted on

The new declarativeNetRequestWithHostAccess permission allows extensions to use the chrome.declarativeNetRequest API on sites the extension has host permissions for. This also enables existing Manifest V2 extensions that use webRequest , webRequestBlocking , and site-specific host permission to migrate to the chrome.declarativeNetRequest API without requiring the user to approve new permissions.

Chrome 95: inject scripts directly into pages

Posted on

The chrome.scripting API's executeScript() method can now inject scripts directly into a page's main world. Previously, extensions could only inject directly into the extension's isolated world. For more information on isolated worlds, see the documentation on content scripts .

Chrome 95: promise support for Storage API

Posted on

Methods on the Manifest V3 version of the chrome.storage API now return promises.

Policy update: two step verification enforcement

Posted on

The policy update blog post published on June 29, 2021 has been updated to correct the two step verification deployment timeline.

Chrome 94: declarative net request static ruleset changes

Posted on

The chrome.declarativeNetRequest now supports specifying up to 50 static rulesets ( MAX_NUMBER_OF_STATIC_RULESETS ) and enabling up to 10 rulesets ( MAX_NUMBER_OF_ENABLED_STATIC_RULESETS ) at a time.

Chrome 93: cross origin isolation support

Posted on

Both Manifest V2 and Manifest V3 extensions can now opt into cross origin isolation . This feature limits which cross-origin resources can load an extension's pages and enables the use of low level web platform features like SharedArrayBuffer . Opt in will be required starting in Chrome 95.

Policy update: developer program policies updated

Posted on

The Chrome Web Store Developer Program Policies have been updated with clarifications to the deceptive installation tactics, spam, and repetitive content policies. This update also includes a new two step verification requirement to publish on the Chrome Web Store. Read the blog post for more information.

Blog post: extension actions in Manifest V3

Posted on

Chrome extensions had chrome.browserAction and chrome.pageActions APIs for years, but Manifest V3 replaced both with a generic chrome.actions API. This post explores the history of these APIs and what has changed in Manifest V3. Read the post .

Blog post: introducing chrome.scripting

Posted on

The chrome.scripting API is a new Manifest V3 API focused on, well, scripting. In this post we dig into the motivations for this change and take a closer look at it's new capabilities. Read the post .

Chrome 92: module service worker support

Posted on

Chrome now supports JavaScript modules in service workers. To specify a module a module in your manifest:

"background": {
  "service_worker": "script.js",
  "type": "module"
}

This loads the worker script as an ES module, which lets you use the import keyword in the worker's script to import other modules.

Chrome 91: chrome.action.getUserSettings()

Posted on

The new chrome.action.getUserSettings() method allows extensions to determine if the user has pinned the extension to the main toolbar.

Chrome 90: chrome.scripting.removeCSS()

Posted on

The new chrome.scripting.removeCSS() method allows extensions to remove CSS that was previously inserted via chrome.scripting.insertCSS() . It replaces chrome.tabs.removeCSS() .

Chrome 90: returning promises from scripting.executeScript()

Posted on

chrome.scripting.executeScript() now supports returning promises. If the resulting value of the script execution is a promise, Chrome will wait for the promise to settle and return its resulting value.

Chrome 90: chrome.scripting.executeScript() results include frameId

Posted on

Results returned from chrome.scripting.executeScript() now include the frameId . The frameId property indicates the frame that the result is from, letting extensions easily associate results with the individual frames when injecting in multiple frames.

Chrome 89: new API for managing tab groups

Posted on

The new chrome.tabGroups API and new capabilities in chrome.tabs let extensions read and manipulate tab groups. Requires Manifest V3.

Chrome 89: customizable permissions for web accessible resources

Posted on

Web accessible resources definitions in Manifest V3 have changed to let extensions restrict resource access based on the requester's origin or extension ID.

Blog post: Extension Manifest Converter

Опубликовано

The Chrome Extensions team has open sourced "Extension Manifest Converter", a Python tool that automates some of the mechanical aspects of converting extensions to Manifest V3. See the announcement blog post and get it from GitHub .

Chrome 88: Manifest V3 general availability

Posted on

Manifest V3 is a major update to the extensions platform; see Overview of Manifest V3 for a summary of new and changed features. Extensions may continue to use Manifest V2 for now, but this will be phased out in the near future. We strongly recommend that you use Manifest V3 for any new extensions, and begin migrating existing extensions to Manifest V3 as soon as possible.

,

Check this page often to learn about changes to Chrome extensions, extensions documentation, or related policy or other changes. You'll find other notices posted on the Chrome Extensions Mailing List . The Chrome schedule lists stable and beta release dates.

Video: Whack-a-Mole in your browser - Is it possible!?

Posted on

Discover how you can build a game in the browser in our latest video .

Video: Chrome's new extensions menu explained

Posted on

Learn about the experimental new extensions menu in our latest video, Chrome's new extensions menu explained .

Video: Extensions are Neat!

Posted on

Discover how you can get started with extension development in Extensions are Neat episode 1 , and just how flexible Chrome customization is with episode 2 !

Chrome 135: New userScripts.execute() API

Posted on

Starting in Chrome 135, a new userScripts.execute() method is available in the chrome.userScripts API. You can use this to inject a user script once at an arbitrary time instead of needing to register it permanently.

Chrome 132: View and edit extension storage in DevTools

Posted on

Starting in Chrome 132, you can view and edit data stored using the chrome.storage API in DevTools. To learn more, see the new View and edit extension storage page in the DevTools documentation.

Blog post: New extensions menu

Posted on

At Google I/O 2024, we shared some early designs for upcoming changes to the extensions menu, which give users more control over the sites extensions can access. We're going to start testing these changes soon, beginning with a small percentage of users in Canary and with the hope to roll them out more widely in the future.

We're also introducing the chrome.permissions.addHostAccessRequest() API.

Read more in our blog post .

Chrome 132: New frozen property in Tabs API

Posted on

Starting in Chrome 132, the frozen property in the Tabs API indicates if a tab has been frozen by the browser. Messages sent to frozen tabs will be queued and handled when the tab is unfrozen.

The Prompt API in Chrome Extensions

Posted on

The Prompt API for Extensions is now available in an origin trial, so you can build Chrome Extensions that use Gemini Nano, our most efficient language model, in the browser.

Join the Prompt API origin trial, running in Chrome 131 to 136, and share your feedback. Your input can directly impact how we build and implement future versions of this API, and all built-in AI APIs.

Blog post: What's happening in Chrome Extensions, October 2024

Posted on

It's time for another round up of what's happening in Chrome Extensions: we have exciting updates on AI integration, new APIs, events, and videos. Read all about it in What's happening in Chrome Extensions October edition !

Join the Built-in AI Challenge

Posted on

Chrome has launched the Built-in AI Challenge: You are invited to create innovative web applications and Chrome Extensions, using Chrome's integrated AI models and APIs , and have a chance to win prizes which total $65,000 USD.

Sign up and get more information on the Built-in AI Challenge website . We can't wait to see what you create when you infuse the web with AI!

Chrome 130: action.onUserSettingsChanged

Posted on

Starting in Chrome 130, the action.onUserSettingsChanged event is available. This follows a proposal in the WebExtensions Community Group. Thanks to Microsoft for the contribution to Chromium.

Chrome 130: StorageArea.getKeys()

Posted on

Starting in Chrome 130, the getKeys() method is available on the StorageArea interface used by the chrome.storage API. This follows a proposal in the WebExtensions Community Group.

Chrome 128: Response header matching in Declarative Net Request

Posted on

Starting in Chrome 128, we are adding support for response header matching in the Declarative Net Request API. This was a common request, particularly for matching the Content-Type header, and we designed a suitable API together with the WebExtensions Community Group.

We've updated our API reference to include the new responseHeaders and excludedResponseHeaders fields. You can use these to check for the existence of and value of a given header.

As part of this update, we've added a new rule evaluation section to our documentation which explains how rules are matched. For header matching in particular, rules can only run once response headers have been received, so they are applied at a later stage than other rules. This means the request does reach the server before being blocked or redirected.

Video: What are content scripts?

Posted on

Learn about content scripts in Chrome Extensions, including how to register CSS and JavaScript to run on a particular page. Check out the full video .

Important policy updates

Posted on

Chrome Web Store team has published a series of updates to the Developer Program Policies page designed to encourage the development of high quality products, prevent deceptive behavior, and ensure informed user consent. Rebecca Soares, the Chrome Web Store policy manager, has summarized all the updates in Chrome Extensions: Important policy updates blog post .

Blog post: What's happening in Chrome Extensions, July 2024

Posted on

In the past three months we've rolled out several significant updates and new features, including the start of Manifest V2 phase out. Get up to speed in What's happening in Chrome Extensions July edition !

Video: What is a Remote Hosted Code?

Опубликовано

Patrick from the Chrome Extensions team explains the concept of Remotely Hosted Code (RHC) in Chrome Extensions. Learn why RHC is no longer allowed, how to detect it, and what to do if your extension needs to be updated. Check out the full video .

Chrome 127: New action.openPopup API

Posted on

Beginning in Chrome 127, the action.openPopup API is available to all extensions. Previously, it was only available in Canary or to extensions installed by a policy.

Video: Trust & Safety team interview

Posted on

The Chrome Extensions DevRel team sat down with the Trust & Safety team that leads review in the Chrome Web Store to ask your questions. Check out the full video .

Blog post: Manifest V2 phase-out begins

Posted on

Starting on June 3 on the Chrome Beta, Dev and Canary channels, if users still have Manifest V2 extensions installed, some will start to see a warning banner when visiting their extension management page - chrome://extensions - informing them that some (Manifest V2) extensions they have installed will soon no longer be supported. Read more in the official announcement

Updates to Side Panel UI

Posted on

We recently made some changes to the Side Panel UI, including adding a pin icon and removing the global side panel icon. Read more in the PSA and see our updated documentation and samples .

Blog post: Chrome Extensions at Google I/O 2024

Posted on

Another Google I/O is behind us and we have covered all the exciting extensions updates! Head over to YouTube to check out the full video and read our blog post for some of the highlights.

Skip review for eligible Declarative Net Request changes

Posted on

The Chrome Web Store now lets you skip review for eligible changes when using the Declarative Net Request API. Learn more about eligibility and how to opt-in in the Chrome Web Store documentation .

deployPercentage available in the Chrome Web Store API

Posted on

We recently updated our Chrome Web Store API documentation to include information about deployPercentage , which lets you assign a percentage of a partial rollout deployment. Learn about deployPercentage .

Chrome 126: Origin Trials in extensions

Posted on

Chrome 126 introduces a new manifest.json field - trial_tokens , allowing you to opt into Origin Trials and Deprecation Trials across all extension surfaces. Read the guide for more information.

Blog post: What's happening in Chrome Extensions-April 2024

Posted on

We've published a new edition of What's Happening in Chrome Extensions . The post discusses what the extension team has been working on for the past few months. This includes: Version Rollback in the Chrome Web Store, better Firebase Auth support and more API launches and updates.

Version rollbacks in the Chrome Web Store Developer Dashboard

Posted on

Roll back your extension to the previous published version in the Chrome Web Store—without additional review! Read the blog post and documentation for more information.

Chrome 124: Advanced documentScan API

Posted on

An advanced documentScan API is now available on ChromeOS to discover and retrieve images from attached document scanners.

Chrome 124: WebGPU support in Service Workers

Posted on

Since Chrome 124, service workers support WebGPU . For a quick start, checkout the WebGPU extension sample .

Chrome 123: The Events API supports filtering by CIDR blocks

Posted on

The Events API now supports filtering by Classless Inter-Domain Routing (CIDR) blocks. A CIDR block is a collection of IP addresses that share a network prefix and the same number of bits. Previously, a developer needing to filter multiple IP addresses needed to configure a filter rule for each of the addresses in the block range. Now when an extension calls addListener() , a passed in rule means the event handler will only be called when the host part of a URL is an IP address and is contained in any of the CIDR blocks specified in an array.

Chrome Web Store: Updates to extension name length requirements

Posted on

On the Chrome Web Store, there is now a universal limit of 75 characters for an extension's "name" field in the manifest.json. Previously, the limit for English was 45 characters, and there was no restriction to the "name" field in other locales.

This was originally intended to allow for cultural and language differences that may not be able to be captured in the same number of characters. Unfortunately, this feature was abused by a small number of developers to spam the store. As a result we are introducing a new universal limit, an increase to 75 characters. This limit covers nearly all extensions on the store today, so it is likely no action will be needed by you as a result of this change. If you try to upload an extension that has a name longer than the maximum limit, then the upload will be blocked by the store.

Blog post: eyeo's journey to testing service worker suspension

Posted on

In this post by eyeo's Extension Engine team, we explore the problem of testing extension service workers. In Manifest V2, extensions lived in a background page, which were awake throughout the extension lifecycle. Manifest V3 uses service workers instead, and service workers, by design, conserve resource by shutting down when they're not needed. This presents certain testing challenges. This post explains how eyeo tackled these challenges .

Chrome 123: Alarms now run when device is asleep

Posted on

Alarms set using the chrome.alarms API are no longer delayed when a device goes to sleep. When the device wakes up, the alarm will fire once no matter how many alarms were missed. For example, say that an alarm is set to go off once an hour and the device it's on is asleep from 12:55 AM to 2:05 AM, then only the 2:00 AM alarm triggers the onAlarm event. It will fire as close to 2:00 AM as it can, and immediately when a device wakes if it was asleep.

This change brings Chrome inline with the agreed behavior in the Web Extensions Community Group.

Blog post: Changes to bfcache behavior with extension message ports

Posted on

Back/forward cache (bfcache) is a browser optimization that enables instant back and forward navigation. Starting in Chrome 123, when a page with an open extension port is stored in bfcache, the message channel is closed, meaning that no messages will be sent to that page. Consequently, extension scripts should listen for lifecycle events such as onDisconnect and set up a new connection when the page is restored from BFCache.

For more information and sample code, see Changes to BFCache behavior with extension message ports .

Chrome 122: Promise support on asynchronous extension APIs

Posted on

We've finished implementing Promise support for all asynchronous extension API methods. This was done to modernize API methods by improving the ergonomics of dealing with asynchronous operations. A handful of methods (for example, desktopCapture.chooseDesktopMedia() ) continue to only support callbacks because their current surfaces are not compatible with Promises. For backwards compatibility, callbacks are still supported. If you find a Promise that fails, please file a bug .

New guidance for real time communication

Posted on

We have just published guides on real time options in extensions. Real-time updates provide an instant communication path from your servers directly to your extension installations. Additionally, we have new guidance for using chrome.gcm , Web Push .

New guidance and sample: Testing service worker termination

Posted on

We have just published a guide on how to Test service worker termination with Puppeteer . The accompanying sample demonstrates this in Puppeteer and Selenium.

Updated sample for native messaging

Posted on

We have just published an updated sample for native messaging. This API allows your extension to start and communicate with another application. Thanks to GitHub contributor Shubham-Rasal for the work on this.

Chrome 121: New lastAccessed property on tabs.Tab

Posted on

A new property named lastAccessed was added to the tabs.Tab object. This property indicates when the tab was last activated. The returned value is in milliseconds since epoch.

Chrome 121: Unsupported "background" keys now issue a warning

Posted on

In the change from Manifest V2 to Manifest V3, children of the "background" manifest key were changed to accommodate replacement of background scripts with extension service workers. Formerly, adding the Manifest V2 keys "scripts" , "page" , or "persistent" to the "background" key of a Manifest V3 extension would throw an error. The presence of these keys now triggers a warning.

This is being done to enable using a single manifest file in extensions in multiple browsers, per a proposal in the community group .

Chrome 120: Minimum alarm granularity reduced to 30 seconds

Posted on

Beginning in Chrome 120, Manifest V3 extensions can use the chrome.alarms API with delays or periods of 30 seconds, rather than requiring values of 60 seconds or more.

Blog post: Resuming the transition to Manifest V3

Posted on

The Manifest V2 support timeline has been updated. See our November 2023 blog post for details.

Blog post: Improvements to content filtering support in Manifest V3

Posted on

Learn about how we improved the declarativeNetRequest API in our new blog post .

Blog post: What's new in Chrome 120 for Extensions

Posted on

Chrome 120 Beta was recently released. For a summary of the important updates relevant to extension developers, read our new blog post: What's new in Chrome 120 for Extensions . This release also marks a major milestone as it removes the final two items (userScripts, file handler on ChromeOS) from the list of critical platform gaps .

PSA: Change to handling of privacy policy URLs in Developer Dashboard

Posted on

Privacy policies in the Developer Dashboard are now added at the item level. This allows you to provide a different privacy policy per item. Read more about this change in our PSA .

Video: A chat with Matt Frisbie

Posted on

We've just published a new video on the Chrome for Developers YouTube channel chatting with Google Developer Expert and author Matt Frisbie. Watch it here .

New guidance on testing extensions

Опубликовано

We've just published new guidance on how to write automated tests for extensions, including how to write unit tests and both general guidance and a tutorial on end-to-end testing.

Blog post: What's happening in Chrome Extensions - October 2023

Posted on

We've just published the second edition of What's Happening in Chrome Extensions . The post discusses what the extension team has been working on for the past few months, including, addressing service worker stability issues, and making good progress on closing all MV3 platform gaps. We also share exciting upcoming API releases like the Reading List API and the User Scripts API.

Increased static ruleset limits in Declarative Net Request API

Posted on

Following feedback in the Web Extensions Community Group, we are significantly increasing the limit on enabled static rulesets from 10 to 50. Additionally, we are increasing the total number of allowed static rulesets from 50 to 100. This is currently available in Canary.

Improved guidance around remotely-hosted code

Posted on

A requirement for Manifest V3 is that extensions may no longer use remotely-hosted code. Although this has been part of our migration guide from the beginning, we thought it was worth improving the guidance around this issue. That page now provides more information, describing what's still possible in Manifest V3 and providing more information on strategies for upgrading.

There is a related addition to the Troubleshooting Chrome Web Store violations . A new section describes common reasons that extensions with remotely-hosted code are rejected.

Chrome 118: isUrlFilterCaseSensitive now defaults to false

Posted on

Starting in Chrome 118, the isUrlFilterCaseSensitive property in the chrome.declarativeNetRequest API has been changed to default to false . If you wish to keep the old behavior, you can explicitly set isUrlFilterCaseSensitive to true in your declarativeNetRequest rules.

This follows discussions in the Web Extensions Community Group. Firefox and Safari have already implemented a similar change.

Documentation on cookies and web storage APIs

Posted on

We published a new guide on how cookies and web storage APIs work in Chrome extensions . It includes details on cookie and storage partitioning changes in Privacy Sandbox , an ongoing project to deprecate third-party cookies through the creation of a series of new web platform APIs, and details on how they work in extensions.

Extension samples now searchable

Posted on

We recently created a page that lets you search Chrome extension samples . The search page has multiple options. A search box lets you search for text in sample titles. You can restrict the search by permission or extension API. An additional filter lets you restrict search to either API or functional (use case) samples.

This new sample page was built by a Google Summer of Code participant, Xuezhou Dai, who also contributed several new samples. You can read about their experiences this past summer in their post on our blog .

As before, our code samples are still available on GitHub for cloning or forking.

Chrome 118: Changes to opening file: scheme URLs

Posted on

Beginning in Chrome 118, extensions will need the "Allow access to file URLs" setting enabled from the chrome://extensions page to open file:// scheme URLs using the Tabs or Windows APIs. You can programmatically check for this access by calling chrome.extension.isAllowedFileSchemeAccess() . Firefox already restricts file URLs, and Safari supports the change. For more information, read the post on the Chrome Extensions Mailing List .

Chrome 117: Expanded URL protections on extension API navigations

Posted on

Previously navigation triggered from extension API calls for tabs.update() , tabs.create() , and windows.create() emitted an error for some chrome:// URLs. Additionally, calling tabs.update() with a JavaScript URL was forbidden. In 117, these protections on JavaScript URLs have been expanded to the tabs.create() method and a number of additional chrome:// URLs have been added to the list of forbidden URLs that applies to all of the previously mentioned methods.

Improved guidance for the declarativeNetRequest API

Posted on

The chrome.declarativeNetRequest API blocks or modifies network requests by specifying declarative rules. This lets extensions modify network requests without intercepting them and viewing their content, thus providing more privacy to users. It's also tricky to use. With that in mind, we've rewritten the guidance in a way that we think paints a clearer picture of how to implement declarative rulesets. Read the new section at the link above.

Using your Google Analytics account with the Chrome Web Store

Posted on

The Chrome Web Store offers integration with Google Analytics, which allows you to see analytics for your Chrome Web Store listing in addition to the view offered in the Developer Dashboard. For more information, read Using your Google Analytics account with the Chrome Web Store .

Chrome 115: DevTools steps over content scripts by default

Posted on

Injected content scripts are now in the DevTools ignore list by default. This doesn't affect breakpoints, but it does mean that content scripts will be stepped over during debugging and exceptions from these scripts will be ignored. When a content script is open in the Sources tab, a banner alerts you if this is on and provides an option to remove your content script from the ignore list. To turn this behavior off, open DevTools, go to Settings then Ignore list . To learn more, see What's new in DevTools .

Chrome 116 beta: More than we can fit here

Posted on

Chrome 116 is a big release for extensions. You can now open side panels programmatically. A new method lets you learn if there's an active offscreen document. Service workers got serveral improvements. There's enough improvements in 116 that we've written a blog post to cover them . Chrome 116 is in beta as of July 19.

Blog post: What's happening in Chrome Extensions

Posted on

We've just published an overview of this year's changes and improvements to extensions . The post discusses the year's big new features, including the Side Panel API, service worker enhancements, and offscreen documents. You'll also get a peek at what we're working on for this quarter. The article lists much more, with links to all.

New guidance and sample: Learn how to use Google Analytics 4 in your Chrome extension

Posted on

We published new Google Analytics and geolocation guidance and samples:

Chrome 115: Specify multiple reasons in chrome.offscreen.createDocument()

Posted on

You can now specify multiple reason enums when calling chrome.offscreen.createDocument() . Use this when an offscreen document will be used for multiple different purposes. The browser uses the supplied reasons to determine the lifetime of the offscreen document.

New tool: Extension Update Testing Tool

Posted on

We've just released the Extension Update Testing Tool , a local extension update server that can be used for testing updates to Chrome Extensions during local development, including permission grants. The tool shows the user's update flow, including keeping an extension disabled until a user grants any newly requested permissions. This tool is particularly useful for simulating the permission changes requested when updating an extension from Manifest V2 to Manifest V3.

Chrome 114: New Side Panel API

Posted on

Introducing the new Side Panel API, a companion surface that allows users to access tools alongside the content they are browsing. To learn more, visit the Side Panel API reference . Additionally, we've added many side panel samples to our GitHub sample repository . We also share more about side panels in the new blog post Designing a Superior User Experience with the New Side Panel API . Our quality guidelines policy and best practices have also been reviewed to provide further guidance on creating high-quality side panel extensions.

Your feedback is important in crafting this API; please share your thoughts and feature requests in the chromium-groups . Stay tuned for new updates as we continue to enhance the Side Panel API.

New Samples: WASM in extensions

Posted on

There are two new samples available that demonstrate how to use WASM in an extension:

Special thanks to GitHub contributor @daidr for these samples.

Updated Manifest V3 migration guidance

Posted on

We've updated the Known Issues section of our Manifest V3 migration guidance with an updated list of extension platform gaps that we intend to close before announcing a new Manifest V2 deprecation timeline.

Recording audio and video with Manifest V3

Posted on

We've just published a new article called Audio recording and screen capture , which covers recording audio or video from a tab, window, or screen in Manifest V3. This article describes multiple approaches to recording involving the chrome.tabCapture API and the getDisplayMedia() function.

Chrome 114: Increased storage.local quota

Posted on

We have increased the quota for the storage.local property to approximately 10 MB. This was agreed to in the Web Extensions Community Group . This brings storage.local in line with storage.session which was changed in Chrome 112.

New extension service worker tutorial and help

Posted on

Service Workers are an integral part of Chrome Extensions. We just published a tutorial explaining the basics of registering, debugging, and interacting with Service Workers. We've also added a new Service worker guide explaining important concepts in more detail. We'll be expanding this section in the coming months.

More troubleshooting tips for Web Store violations

Posted on

To help with Chrome Web Store publishing, we added new guidance in two areas. Guidance for minimum functionality centers around providing users with benefits and enriching their browsing experience. Guidance for affiliate ads is about making users are aware of extensions using affiliate links or codes for monetization, and giving them some amount of control by requiring user action before inclusion.

New instructions for the Extension Manifest Converter

Posted on

We've rewritten the README for the Extension Manifest Converter to make it easier to see what you need to do after running the tool. The converter helps helps migrate extensions built on Manifest V2 to Manifest V3. The new README describes what the tool does using words that closely match those in the migration guide's checklist . The converter doesn't do everything, but it does eliminate many tasks that don't require a human judgement call.

Chrome 113: New reasons for offscreen documents

Posted on

We have added two new reason types to the Offscreen Documents API. Use LOCAL_STORAGE to access the web platform's localStorage API. Use WORKER when creating web workers.

Google Analytics 4 now in the Developer Dashboard

Posted on

The Chrome Web Store Developer Dashboard now supports Google Analytics 4 (GA4). We've simplified setting up Google Analytics and made access management for group publishers more straightforward. If you previously used Google Universal Analytics to track your store listing activity, you will need to take action by July 1, 2023 to ensure that you continue receiving data about your store listing. For more information, see the post on the Chrome Extensions Mailing List .

The File Handling API comes to ChromeOS

Posted on

The File Handler API is available for experimentation on ChromeOS in Canary for versions 112 and 113. It lets extensions on ChromeOS open files with specified MIME types and file extensions. To implement file handling add a set of rules to the manifest.json . This feature works the same as for Progressive web apps. For more information, see the article elsewhere on this site.

To enable file handling:

  • Starting in 112, launch Chrome using the --enable-features=ExtensionWebFileHandlers flag, starting in 112
  • Starting in 113, paste os://flags/#extension-web-file-handlers into the Chrome omnibox and select 'Enabled' from the dropdown menu.

We hope to launch this feature in Chrome 115, in late June. Watch this space for updates.

New Samples: dynamic declarations and programmatic injection

Posted on

We've built a new sample for the chrome.scripting API. It demonstrates dynamic declarations, where a content script is registered at runtime, and programmatic injection, where a script is executed in a tab that is already open.

New Samples: Declarative Net Request use cases

Posted on

Three new samples are available demonstrating the Declarative Net Request API . Each demonstrates implementation of a single use case. The first shows how to block cookies. The remaining two demonstrate blocking and redirecting URLs.

Chrome 112: Increased storage.session quota

Posted on

From Chrome 112, the quota for the storage.session property has been increased to approximately 10 MB. This was agreed to in the Web Extensions Community Group: https://github.com/w3c/webextensions/issues/350

Chrome 109: Offscreen documents

Posted on

Offscreen documents are now available in Manifest V3 extensions. These help with the transition from background pages to extension service workers by providing support for DOM-related features and APIs. For more information, read the blog post .

Chrome 110: Is an extension enabled

Posted on

The chrome.action.isEnabled() method programmatically checks whether an extension has been enabled for a specific tab. This saves you from maintaining the enabled state of your tabs. This new method takes a tab ID and a reference to a callback and returns a boolean. It has one limitation: tabs created using chrome.declarativeContent always return false.

(The chrome.action namespace recently got new methods for controlling the appearance of extension badges. For more information, see Setting badge colors .)

Chrome 110: Change in service worker idle timeout

Posted on

Previously, an extension service worker would frequently shut down at the five minute mark. We've changed this behavior to more closely resemble service worker lifetime's on the web. An extension service worker will be shut down after either thirty seconds of inactivity or if a single activity takes longer than 5 minutes to process. For more information, see Longer extension service worker lifetimes .

Post: Pausing Manifest V2 phase-out

Posted on

The Manifest V2 deprecation timelines are under review and the experiments scheduled for early 2023 are being postponed. For more information, read the update in the Chrome Extensions Mailing List.

Chrome 110: Setting badge colors

Posted on

The chrome.action namespace has two new methods to give you more control over the appearance extension badges. The setBadgeTextColor() and getBadgeTextColor() methods allow an extension to change and query its toolbar icon's badge text color. When used with setBadgeBackgroundColor and getBadgeBackgroundColor these new methods let you enforce design and brand consistency.

Blog post: More details on the transition to Manifest V3

Posted on

We have clarified the Manifest V2 deprecation timeline . The Manifest V2 support timeline has also been updated to reflect this information.

Docs update: Known issues when migrating to Manifest V3

Posted on

We've put together a list of major features currently in development and open bugs . Our goal with this page is to help developers better understand the current state of the platform and what features they can target as they prepare for the future.

Chrome Web Store: "large promo tile" image upload removed

Posted on

Chrome Web Store has removed the "large promo tile" upload UI from the item Store Listing tab in the developer dashboard. This change does not affect the end user experience as these images were not used in the consumer UI. See this chromium-extensions post for additional details.

Chrome 106: Allow pages on file:// urls to access web accessible resources

Posted on

Opaque origins such as sandboxed iframes and dynamic import should also be able to access web accessible resources, according to crbug.com/1219825#c11 .

Chrome 106: Fixed bug allowing incorrect final arguments on some async API functions

Posted on

Previously, Manifest V3 calling async APIs could provide an invalid final argument and Chrome would not error. With this fix Chrome will now correctly error and report that there was no matching signature. Developers are encouraged to check their extensions on Canary for any errors in case they accidentally using incorrect signature for an API call that will be broken by this bug fix.

Blog post: Chrome Web Store analytics revamp

Posted on

Chrome Web Store has a revamped item analytics experience for the Chrome Web Store Developer Dashboard. The new dashboard is easier to understand at a glance and consolidates the most useful information up front. Read the blog post for more information.

Chrome 105: promises for the Identity API

Posted on

Functions on the Identity API now support promise based calls. This comes with a slight change to the surface for identity.getAuthToken() , where the asynchronous return set to a promise based call will have "token" and "grantedScopes" as parameters on a single object (as opposed to the callback version receiving them as separate arguments to the callback).

Chrome 104: New favicons API for Manifest V3

Posted on

Manifest V3 extensions can now access favicons using a new URL pattern: chrome-extension://<id>/_favicon/ , where is the ID of your extension. This replaces the Manifest V2 platform's chrome://favicons API. See the Favicon API docs for more information.

Docs update: Developer trader/non-trader disclosure

Posted on

Added the trader/non-trader developer identification that informs developers to accurately self-declare their trader/non-trader status.

Chrome 103: Wasm in Manifest V3 requires wasm-unsafe-eval

Posted on

Chrome no longer grants extensions script-src: wasm-unsafe-eval by default. Extensions that use WebAssembly must now explicitly add this directive and value to extension_pages in their content_security_policy declarations.

Chrome 103: Changing MV3 shortcuts take effect immediately

Posted on

When changing a Manifest V3 extension's keyboard shortcut on chrome://extensions/shortcuts , updates are now applied immediately. Previously the extension would have to be reloaded before the change would take effect.

Chrome 102: Dynamic content scripts in main world

Posted on

Dynamically registered content scripts can now specify the world that assets will be injected into. See scripting.registerContentScripts() for details.

Chrome 102: New manifest field "optional_host_permissions"

Опубликовано

Manifest V3 extensions can now specify the optional_host_permissions key in manifest.json. This allows Manifest V3 extensions to declare optional match patterns for hosts just as Manifest V2 extensions could using the optional_permissions key.

Chrome 102: injectImmediately property in scripting.executeScript()

Posted on

chrome.scripting.executeScript() now accepts an optional injectImmediately property on it's injection argument. If present and set to true, the script will inject into the target as soon as possible, rather than waiting for document_idle . Note that this is not a guarantee the script will inject before the page is loaded since the page continues to load while the API call is being made.

Chrome 102: Omnibox API support in Manifest V3

Posted on

The Omnibox API can now be used in service worker-based extensions. Previously, some of this API's methods would throw on invocation due to internal dependencies on DOM capabilities.

Chrome 102: wasm-unsafe-eval allowed in Manifest V3 CSP

Posted on

Manifest V3 extensions can now include wasm-unsafe-eval in their content_security_policy declarations. This change allows Manifest V3 extensions to use WebAssembly.

Chrome 102: New storage.session API

Posted on

Manifest V3 extensions can now use in memory storage storage.session .

Docs update: Chrome Web Store item discovery

Posted on

Discovery on Chrome Web Store gives an overview of how users find items on the Chrome Web Store and how our editors select items to feature.

Chrome 101: Improved declarativeNetRequest domain conditions

Posted on

declarativeNetRequest rule conditions have been updated to allow extensions to better target requests based on the request's "request" and "initiator" domains. The relevant condition properties are initiatorDomains , excludedInitiatorDomains , requestDomains , and excludedRequestDomains . See also this chromium-extensions thread .

Chrome 100: Resolved issue with scripting.executeScript() on newly created tabs

Fixed a longstanding issue where calling scripting.executeScript() on a newly created tab or window could fail.

Chrome 100: native messaging port keeps service worker alive

Posted on

Connecting to a native messaging host using chrome.runtime.connectNative() in an extension's service worker should keep the service worker alive as long as the port is open.

Chrome 100: omnibox.setDefaultSuggestion() supports promises and callbacks

Posted on

The omnibox.setDefaultSuggestion() method now returns a promise or accepts a callback to allow developers to determine when the suggestion has been properly set.

Chrome 100: i18n.getMessage() support in extension service workers

Posted on

The chrome.i18n.getMessage() API is now supported in extension service worker contexts.

Chrome 99: match_origin_as_fallback in Canary

Posted on

Content scripts can now specify the match_origin_as_fallback key to inject into frames that are related to a matching frame, including frames with about: , data: , blob: , and filesystem: URLs. See the content scripts documentation for details.

Chrome 99: extension service worker support for file: schemes in Canary

Posted on

Service worker-based Manifest V2 and Manifest V3 extensions can now use the Fetch API to request file: -scheme URLs. Access to file: -scheme URLs still requires that the user enable 'Allow access to File URLs' for the extension in the chrome://extensions page.

Chrome 99: promise support for messaging APIs in Canary

Posted on

Promise support has been added to tabs.sendMessage , runtime.sendMessage , and runtime.sendNativeMessage for extensions built for Manifest V3.

Docs update: Chrome Web Store review documentation

Posted on

Added a new reference page that provides an overview of the Chrome Web Store review process and explains how developer program policy enforcement is handled.

Chrome 98: scripting.executeScript() and scripting.insertCSS() accept multiple files

Posted on

The Scripting API's executeScript() and insertCSS() methods now accept multiple files. Previously these methods required an array with a single file entry.

Docs update: review violation troubleshooting updates

Posted on

The Troubleshooting Chrome Web Store violations page has been updated to provide developers with more detailed guidance for common reasons for rejection.

Chrome 96: expanded promise support to 27 more APIs

Posted on

This release contains significantly more promise updates than any previous release. Updates include both general and ChromeOS-specific extensions APIs. Expand the following sections for details.

Extensions APIs

A number of APIs now support promises in Manifest V3.

Also, APIs that use the ChromeSetting prototype now also support promises. The following APIs are affected by this change.

ChromeOS APIs

Chrome 96: dynamic content scripts

Posted on

The chrome.scripting API now supports registering , updating , unregistering , and getting a list of content scripts at runtime. Previously, content scripts could only be statically declared in an extension's manifest.json or programmatically injected at runtime with chrome.scripting.executeScript() .

Docs update: Manifest V2 support timeline

Posted on

The Manifest V2 to V3 transition timeline was announced in this blog post and a more detailed timeline page was published.

Chrome 96: declarativeNetRequestWithHostAccess permission

Posted on

The new declarativeNetRequestWithHostAccess permission allows extensions to use the chrome.declarativeNetRequest API on sites the extension has host permissions for. This also enables existing Manifest V2 extensions that use webRequest , webRequestBlocking , and site-specific host permission to migrate to the chrome.declarativeNetRequest API without requiring the user to approve new permissions.

Chrome 95: inject scripts directly into pages

Posted on

The chrome.scripting API's executeScript() method can now inject scripts directly into a page's main world. Previously, extensions could only inject directly into the extension's isolated world. For more information on isolated worlds, see the documentation on content scripts .

Chrome 95: promise support for Storage API

Posted on

Methods on the Manifest V3 version of the chrome.storage API now return promises.

Policy update: two step verification enforcement

Posted on

The policy update blog post published on June 29, 2021 has been updated to correct the two step verification deployment timeline.

Chrome 94: declarative net request static ruleset changes

Опубликовано

The chrome.declarativeNetRequest now supports specifying up to 50 static rulesets ( MAX_NUMBER_OF_STATIC_RULESETS ) and enabling up to 10 rulesets ( MAX_NUMBER_OF_ENABLED_STATIC_RULESETS ) at a time.

Chrome 93: cross origin isolation support

Posted on

Both Manifest V2 and Manifest V3 extensions can now opt into cross origin isolation . This feature limits which cross-origin resources can load an extension's pages and enables the use of low level web platform features like SharedArrayBuffer . Opt in will be required starting in Chrome 95.

Policy update: developer program policies updated

Posted on

The Chrome Web Store Developer Program Policies have been updated with clarifications to the deceptive installation tactics, spam, and repetitive content policies. This update also includes a new two step verification requirement to publish on the Chrome Web Store. Read the blog post for more information.

Blog post: extension actions in Manifest V3

Posted on

Chrome extensions had chrome.browserAction and chrome.pageActions APIs for years, but Manifest V3 replaced both with a generic chrome.actions API. This post explores the history of these APIs and what has changed in Manifest V3. Read the post .

Blog post: introducing chrome.scripting

Posted on

The chrome.scripting API is a new Manifest V3 API focused on, well, scripting. In this post we dig into the motivations for this change and take a closer look at it's new capabilities. Read the post .

Chrome 92: module service worker support

Posted on

Chrome now supports JavaScript modules in service workers. To specify a module a module in your manifest:

"background": {
  "service_worker": "script.js",
  "type": "module"
}

This loads the worker script as an ES module, which lets you use the import keyword in the worker's script to import other modules.

Chrome 91: chrome.action.getUserSettings()

Posted on

The new chrome.action.getUserSettings() method allows extensions to determine if the user has pinned the extension to the main toolbar.

Chrome 90: chrome.scripting.removeCSS()

Posted on

The new chrome.scripting.removeCSS() method allows extensions to remove CSS that was previously inserted via chrome.scripting.insertCSS() . It replaces chrome.tabs.removeCSS() .

Chrome 90: returning promises from scripting.executeScript()

Posted on

chrome.scripting.executeScript() now supports returning promises. If the resulting value of the script execution is a promise, Chrome will wait for the promise to settle and return its resulting value.

Chrome 90: chrome.scripting.executeScript() results include frameId

Posted on

Results returned from chrome.scripting.executeScript() now include the frameId . The frameId property indicates the frame that the result is from, letting extensions easily associate results with the individual frames when injecting in multiple frames.

Chrome 89: new API for managing tab groups

Posted on

The new chrome.tabGroups API and new capabilities in chrome.tabs let extensions read and manipulate tab groups. Requires Manifest V3.

Chrome 89: customizable permissions for web accessible resources

Posted on

Web accessible resources definitions in Manifest V3 have changed to let extensions restrict resource access based on the requester's origin or extension ID.

Blog post: Extension Manifest Converter

Posted on

The Chrome Extensions team has open sourced "Extension Manifest Converter", a Python tool that automates some of the mechanical aspects of converting extensions to Manifest V3. See the announcement blog post and get it from GitHub .

Chrome 88: Manifest V3 general availability

Posted on

Manifest V3 is a major update to the extensions platform; see Overview of Manifest V3 for a summary of new and changed features. Extensions may continue to use Manifest V2 for now, but this will be phased out in the near future. We strongly recommend that you use Manifest V3 for any new extensions, and begin migrating existing extensions to Manifest V3 as soon as possible.

,

Check this page often to learn about changes to Chrome extensions, extensions documentation, or related policy or other changes. You'll find other notices posted on the Chrome Extensions Mailing List . The Chrome schedule lists stable and beta release dates.

Video: Whack-a-Mole in your browser - Is it possible!?

Posted on

Discover how you can build a game in the browser in our latest video .

Video: Chrome's new extensions menu explained

Posted on

Learn about the experimental new extensions menu in our latest video, Chrome's new extensions menu explained .

Video: Extensions are Neat!

Опубликовано

Discover how you can get started with extension development in Extensions are Neat episode 1 , and just how flexible Chrome customization is with episode 2 !

Chrome 135: New userScripts.execute() API

Posted on

Starting in Chrome 135, a new userScripts.execute() method is available in the chrome.userScripts API. You can use this to inject a user script once at an arbitrary time instead of needing to register it permanently.

Chrome 132: View and edit extension storage in DevTools

Posted on

Starting in Chrome 132, you can view and edit data stored using the chrome.storage API in DevTools. To learn more, see the new View and edit extension storage page in the DevTools documentation.

Blog post: New extensions menu

Posted on

At Google I/O 2024, we shared some early designs for upcoming changes to the extensions menu, which give users more control over the sites extensions can access. We're going to start testing these changes soon, beginning with a small percentage of users in Canary and with the hope to roll them out more widely in the future.

We're also introducing the chrome.permissions.addHostAccessRequest() API.

Read more in our blog post .

Chrome 132: New frozen property in Tabs API

Posted on

Starting in Chrome 132, the frozen property in the Tabs API indicates if a tab has been frozen by the browser. Messages sent to frozen tabs will be queued and handled when the tab is unfrozen.

The Prompt API in Chrome Extensions

Posted on

The Prompt API for Extensions is now available in an origin trial, so you can build Chrome Extensions that use Gemini Nano, our most efficient language model, in the browser.

Join the Prompt API origin trial, running in Chrome 131 to 136, and share your feedback. Your input can directly impact how we build and implement future versions of this API, and all built-in AI APIs.

Blog post: What's happening in Chrome Extensions, October 2024

Posted on

It's time for another round up of what's happening in Chrome Extensions: we have exciting updates on AI integration, new APIs, events, and videos. Read all about it in What's happening in Chrome Extensions October edition !

Join the Built-in AI Challenge

Posted on

Chrome has launched the Built-in AI Challenge: You are invited to create innovative web applications and Chrome Extensions, using Chrome's integrated AI models and APIs , and have a chance to win prizes which total $65,000 USD.

Sign up and get more information on the Built-in AI Challenge website . We can't wait to see what you create when you infuse the web with AI!

Chrome 130: action.onUserSettingsChanged

Posted on

Starting in Chrome 130, the action.onUserSettingsChanged event is available. This follows a proposal in the WebExtensions Community Group. Thanks to Microsoft for the contribution to Chromium.

Chrome 130: StorageArea.getKeys()

Posted on

Starting in Chrome 130, the getKeys() method is available on the StorageArea interface used by the chrome.storage API. This follows a proposal in the WebExtensions Community Group.

Chrome 128: Response header matching in Declarative Net Request

Posted on

Starting in Chrome 128, we are adding support for response header matching in the Declarative Net Request API. This was a common request, particularly for matching the Content-Type header, and we designed a suitable API together with the WebExtensions Community Group.

We've updated our API reference to include the new responseHeaders and excludedResponseHeaders fields. You can use these to check for the existence of and value of a given header.

As part of this update, we've added a new rule evaluation section to our documentation which explains how rules are matched. For header matching in particular, rules can only run once response headers have been received, so they are applied at a later stage than other rules. This means the request does reach the server before being blocked or redirected.

Video: What are content scripts?

Posted on

Learn about content scripts in Chrome Extensions, including how to register CSS and JavaScript to run on a particular page. Check out the full video .

Important policy updates

Posted on

Chrome Web Store team has published a series of updates to the Developer Program Policies page designed to encourage the development of high quality products, prevent deceptive behavior, and ensure informed user consent. Rebecca Soares, the Chrome Web Store policy manager, has summarized all the updates in Chrome Extensions: Important policy updates blog post .

Blog post: What's happening in Chrome Extensions, July 2024

Posted on

In the past three months we've rolled out several significant updates and new features, including the start of Manifest V2 phase out. Get up to speed in What's happening in Chrome Extensions July edition !

Video: What is a Remote Hosted Code?

Posted on

Patrick from the Chrome Extensions team explains the concept of Remotely Hosted Code (RHC) in Chrome Extensions. Learn why RHC is no longer allowed, how to detect it, and what to do if your extension needs to be updated. Check out the full video .

Chrome 127: New action.openPopup API

Posted on

Beginning in Chrome 127, the action.openPopup API is available to all extensions. Previously, it was only available in Canary or to extensions installed by a policy.

Video: Trust & Safety team interview

Posted on

The Chrome Extensions DevRel team sat down with the Trust & Safety team that leads review in the Chrome Web Store to ask your questions. Check out the full video .

Blog post: Manifest V2 phase-out begins

Posted on

Starting on June 3 on the Chrome Beta, Dev and Canary channels, if users still have Manifest V2 extensions installed, some will start to see a warning banner when visiting their extension management page - chrome://extensions - informing them that some (Manifest V2) extensions they have installed will soon no longer be supported. Read more in the official announcement

Updates to Side Panel UI

Опубликовано

We recently made some changes to the Side Panel UI, including adding a pin icon and removing the global side panel icon. Read more in the PSA and see our updated documentation and samples .

Blog post: Chrome Extensions at Google I/O 2024

Posted on

Another Google I/O is behind us and we have covered all the exciting extensions updates! Head over to YouTube to check out the full video and read our blog post for some of the highlights.

Skip review for eligible Declarative Net Request changes

Posted on

The Chrome Web Store now lets you skip review for eligible changes when using the Declarative Net Request API. Learn more about eligibility and how to opt-in in the Chrome Web Store documentation .

deployPercentage available in the Chrome Web Store API

Posted on

We recently updated our Chrome Web Store API documentation to include information about deployPercentage , which lets you assign a percentage of a partial rollout deployment. Learn about deployPercentage .

Chrome 126: Origin Trials in extensions

Posted on

Chrome 126 introduces a new manifest.json field - trial_tokens , allowing you to opt into Origin Trials and Deprecation Trials across all extension surfaces. Read the guide for more information.

Blog post: What's happening in Chrome Extensions-April 2024

Posted on

We've published a new edition of What's Happening in Chrome Extensions . The post discusses what the extension team has been working on for the past few months. This includes: Version Rollback in the Chrome Web Store, better Firebase Auth support and more API launches and updates.

Version rollbacks in the Chrome Web Store Developer Dashboard

Posted on

Roll back your extension to the previous published version in the Chrome Web Store—without additional review! Read the blog post and documentation for more information.

Chrome 124: Advanced documentScan API

Posted on

An advanced documentScan API is now available on ChromeOS to discover and retrieve images from attached document scanners.

Chrome 124: WebGPU support in Service Workers

Posted on

Since Chrome 124, service workers support WebGPU . For a quick start, checkout the WebGPU extension sample .

Chrome 123: The Events API supports filtering by CIDR blocks

Posted on

The Events API now supports filtering by Classless Inter-Domain Routing (CIDR) blocks. A CIDR block is a collection of IP addresses that share a network prefix and the same number of bits. Previously, a developer needing to filter multiple IP addresses needed to configure a filter rule for each of the addresses in the block range. Now when an extension calls addListener() , a passed in rule means the event handler will only be called when the host part of a URL is an IP address and is contained in any of the CIDR blocks specified in an array.

Chrome Web Store: Updates to extension name length requirements

Posted on

On the Chrome Web Store, there is now a universal limit of 75 characters for an extension's "name" field in the manifest.json. Previously, the limit for English was 45 characters, and there was no restriction to the "name" field in other locales.

This was originally intended to allow for cultural and language differences that may not be able to be captured in the same number of characters. Unfortunately, this feature was abused by a small number of developers to spam the store. As a result we are introducing a new universal limit, an increase to 75 characters. This limit covers nearly all extensions on the store today, so it is likely no action will be needed by you as a result of this change. If you try to upload an extension that has a name longer than the maximum limit, then the upload will be blocked by the store.

Blog post: eyeo's journey to testing service worker suspension

Posted on

In this post by eyeo's Extension Engine team, we explore the problem of testing extension service workers. In Manifest V2, extensions lived in a background page, which were awake throughout the extension lifecycle. Manifest V3 uses service workers instead, and service workers, by design, conserve resource by shutting down when they're not needed. This presents certain testing challenges. This post explains how eyeo tackled these challenges .

Chrome 123: Alarms now run when device is asleep

Posted on

Alarms set using the chrome.alarms API are no longer delayed when a device goes to sleep. When the device wakes up, the alarm will fire once no matter how many alarms were missed. For example, say that an alarm is set to go off once an hour and the device it's on is asleep from 12:55 AM to 2:05 AM, then only the 2:00 AM alarm triggers the onAlarm event. It will fire as close to 2:00 AM as it can, and immediately when a device wakes if it was asleep.

This change brings Chrome inline with the agreed behavior in the Web Extensions Community Group.

Blog post: Changes to bfcache behavior with extension message ports

Posted on

Back/forward cache (bfcache) is a browser optimization that enables instant back and forward navigation. Starting in Chrome 123, when a page with an open extension port is stored in bfcache, the message channel is closed, meaning that no messages will be sent to that page. Consequently, extension scripts should listen for lifecycle events such as onDisconnect and set up a new connection when the page is restored from BFCache.

For more information and sample code, see Changes to BFCache behavior with extension message ports .

Chrome 122: Promise support on asynchronous extension APIs

Posted on

We've finished implementing Promise support for all asynchronous extension API methods. This was done to modernize API methods by improving the ergonomics of dealing with asynchronous operations. A handful of methods (for example, desktopCapture.chooseDesktopMedia() ) continue to only support callbacks because their current surfaces are not compatible with Promises. For backwards compatibility, callbacks are still supported. If you find a Promise that fails, please file a bug .

New guidance for real time communication

Posted on

We have just published guides on real time options in extensions. Real-time updates provide an instant communication path from your servers directly to your extension installations. Additionally, we have new guidance for using chrome.gcm , Web Push .

New guidance and sample: Testing service worker termination

Posted on

We have just published a guide on how to Test service worker termination with Puppeteer . The accompanying sample demonstrates this in Puppeteer and Selenium.

Updated sample for native messaging

Posted on

We have just published an updated sample for native messaging. This API allows your extension to start and communicate with another application. Thanks to GitHub contributor Shubham-Rasal for the work on this.

Chrome 121: New lastAccessed property on tabs.Tab

Posted on

A new property named lastAccessed was added to the tabs.Tab object. This property indicates when the tab was last activated. The returned value is in milliseconds since epoch.

Chrome 121: Unsupported "background" keys now issue a warning

Posted on

In the change from Manifest V2 to Manifest V3, children of the "background" manifest key were changed to accommodate replacement of background scripts with extension service workers. Formerly, adding the Manifest V2 keys "scripts" , "page" , or "persistent" to the "background" key of a Manifest V3 extension would throw an error. The presence of these keys now triggers a warning.

This is being done to enable using a single manifest file in extensions in multiple browsers, per a proposal in the community group .

Chrome 120: Minimum alarm granularity reduced to 30 seconds

Posted on

Beginning in Chrome 120, Manifest V3 extensions can use the chrome.alarms API with delays or periods of 30 seconds, rather than requiring values of 60 seconds or more.

Blog post: Resuming the transition to Manifest V3

Posted on

The Manifest V2 support timeline has been updated. See our November 2023 blog post for details.

Blog post: Improvements to content filtering support in Manifest V3

Posted on

Learn about how we improved the declarativeNetRequest API in our new blog post .

Blog post: What's new in Chrome 120 for Extensions

Posted on

Chrome 120 Beta was recently released. For a summary of the important updates relevant to extension developers, read our new blog post: What's new in Chrome 120 for Extensions . This release also marks a major milestone as it removes the final two items (userScripts, file handler on ChromeOS) from the list of critical platform gaps .

PSA: Change to handling of privacy policy URLs in Developer Dashboard

Posted on

Privacy policies in the Developer Dashboard are now added at the item level. This allows you to provide a different privacy policy per item. Read more about this change in our PSA .

Video: A chat with Matt Frisbie

Posted on

We've just published a new video on the Chrome for Developers YouTube channel chatting with Google Developer Expert and author Matt Frisbie. Watch it here .

New guidance on testing extensions

Posted on

We've just published new guidance on how to write automated tests for extensions, including how to write unit tests and both general guidance and a tutorial on end-to-end testing.

Blog post: What's happening in Chrome Extensions - October 2023

Posted on

We've just published the second edition of What's Happening in Chrome Extensions . The post discusses what the extension team has been working on for the past few months, including, addressing service worker stability issues, and making good progress on closing all MV3 platform gaps. We also share exciting upcoming API releases like the Reading List API and the User Scripts API.

Increased static ruleset limits in Declarative Net Request API

Posted on

Following feedback in the Web Extensions Community Group, we are significantly increasing the limit on enabled static rulesets from 10 to 50. Additionally, we are increasing the total number of allowed static rulesets from 50 to 100. This is currently available in Canary.

Improved guidance around remotely-hosted code

Опубликовано

A requirement for Manifest V3 is that extensions may no longer use remotely-hosted code. Although this has been part of our migration guide from the beginning, we thought it was worth improving the guidance around this issue. That page now provides more information, describing what's still possible in Manifest V3 and providing more information on strategies for upgrading.

There is a related addition to the Troubleshooting Chrome Web Store violations . A new section describes common reasons that extensions with remotely-hosted code are rejected.

Chrome 118: isUrlFilterCaseSensitive now defaults to false

Posted on

Starting in Chrome 118, the isUrlFilterCaseSensitive property in the chrome.declarativeNetRequest API has been changed to default to false . If you wish to keep the old behavior, you can explicitly set isUrlFilterCaseSensitive to true in your declarativeNetRequest rules.

This follows discussions in the Web Extensions Community Group. Firefox and Safari have already implemented a similar change.

Documentation on cookies and web storage APIs

Posted on

We published a new guide on how cookies and web storage APIs work in Chrome extensions . It includes details on cookie and storage partitioning changes in Privacy Sandbox , an ongoing project to deprecate third-party cookies through the creation of a series of new web platform APIs, and details on how they work in extensions.

Extension samples now searchable

Posted on

We recently created a page that lets you search Chrome extension samples . The search page has multiple options. A search box lets you search for text in sample titles. You can restrict the search by permission or extension API. An additional filter lets you restrict search to either API or functional (use case) samples.

This new sample page was built by a Google Summer of Code participant, Xuezhou Dai, who also contributed several new samples. You can read about their experiences this past summer in their post on our blog .

As before, our code samples are still available on GitHub for cloning or forking.

Chrome 118: Changes to opening file: scheme URLs

Posted on

Beginning in Chrome 118, extensions will need the "Allow access to file URLs" setting enabled from the chrome://extensions page to open file:// scheme URLs using the Tabs or Windows APIs. You can programmatically check for this access by calling chrome.extension.isAllowedFileSchemeAccess() . Firefox already restricts file URLs, and Safari supports the change. For more information, read the post on the Chrome Extensions Mailing List .

Chrome 117: Expanded URL protections on extension API navigations

Posted on

Previously navigation triggered from extension API calls for tabs.update() , tabs.create() , and windows.create() emitted an error for some chrome:// URLs. Additionally, calling tabs.update() with a JavaScript URL was forbidden. In 117, these protections on JavaScript URLs have been expanded to the tabs.create() method and a number of additional chrome:// URLs have been added to the list of forbidden URLs that applies to all of the previously mentioned methods.

Improved guidance for the declarativeNetRequest API

Posted on

The chrome.declarativeNetRequest API blocks or modifies network requests by specifying declarative rules. This lets extensions modify network requests without intercepting them and viewing their content, thus providing more privacy to users. It's also tricky to use. With that in mind, we've rewritten the guidance in a way that we think paints a clearer picture of how to implement declarative rulesets. Read the new section at the link above.

Using your Google Analytics account with the Chrome Web Store

Posted on

The Chrome Web Store offers integration with Google Analytics, which allows you to see analytics for your Chrome Web Store listing in addition to the view offered in the Developer Dashboard. For more information, read Using your Google Analytics account with the Chrome Web Store .

Chrome 115: DevTools steps over content scripts by default

Posted on

Injected content scripts are now in the DevTools ignore list by default. This doesn't affect breakpoints, but it does mean that content scripts will be stepped over during debugging and exceptions from these scripts will be ignored. When a content script is open in the Sources tab, a banner alerts you if this is on and provides an option to remove your content script from the ignore list. To turn this behavior off, open DevTools, go to Settings then Ignore list . To learn more, see What's new in DevTools .

Chrome 116 beta: More than we can fit here

Posted on

Chrome 116 is a big release for extensions. You can now open side panels programmatically. A new method lets you learn if there's an active offscreen document. Service workers got serveral improvements. There's enough improvements in 116 that we've written a blog post to cover them . Chrome 116 is in beta as of July 19.

Blog post: What's happening in Chrome Extensions

Posted on

We've just published an overview of this year's changes and improvements to extensions . The post discusses the year's big new features, including the Side Panel API, service worker enhancements, and offscreen documents. You'll also get a peek at what we're working on for this quarter. The article lists much more, with links to all.

New guidance and sample: Learn how to use Google Analytics 4 in your Chrome extension

Posted on

We published new Google Analytics and geolocation guidance and samples:

Chrome 115: Specify multiple reasons in chrome.offscreen.createDocument()

Posted on

You can now specify multiple reason enums when calling chrome.offscreen.createDocument() . Use this when an offscreen document will be used for multiple different purposes. The browser uses the supplied reasons to determine the lifetime of the offscreen document.

New tool: Extension Update Testing Tool

Posted on

We've just released the Extension Update Testing Tool , a local extension update server that can be used for testing updates to Chrome Extensions during local development, including permission grants. The tool shows the user's update flow, including keeping an extension disabled until a user grants any newly requested permissions. This tool is particularly useful for simulating the permission changes requested when updating an extension from Manifest V2 to Manifest V3.

Chrome 114: New Side Panel API

Posted on

Introducing the new Side Panel API, a companion surface that allows users to access tools alongside the content they are browsing. To learn more, visit the Side Panel API reference . Additionally, we've added many side panel samples to our GitHub sample repository . We also share more about side panels in the new blog post Designing a Superior User Experience with the New Side Panel API . Our quality guidelines policy and best practices have also been reviewed to provide further guidance on creating high-quality side panel extensions.

Your feedback is important in crafting this API; please share your thoughts and feature requests in the chromium-groups . Stay tuned for new updates as we continue to enhance the Side Panel API.

New Samples: WASM in extensions

Posted on

There are two new samples available that demonstrate how to use WASM in an extension:

Special thanks to GitHub contributor @daidr for these samples.

Updated Manifest V3 migration guidance

Posted on

We've updated the Known Issues section of our Manifest V3 migration guidance with an updated list of extension platform gaps that we intend to close before announcing a new Manifest V2 deprecation timeline.

Recording audio and video with Manifest V3

Posted on

We've just published a new article called Audio recording and screen capture , which covers recording audio or video from a tab, window, or screen in Manifest V3. This article describes multiple approaches to recording involving the chrome.tabCapture API and the getDisplayMedia() function.

Chrome 114: Increased storage.local quota

Posted on

We have increased the quota for the storage.local property to approximately 10 MB. This was agreed to in the Web Extensions Community Group . This brings storage.local in line with storage.session which was changed in Chrome 112.

New extension service worker tutorial and help

Posted on

Service Workers are an integral part of Chrome Extensions. We just published a tutorial explaining the basics of registering, debugging, and interacting with Service Workers. We've also added a new Service worker guide explaining important concepts in more detail. We'll be expanding this section in the coming months.

More troubleshooting tips for Web Store violations

Posted on

To help with Chrome Web Store publishing, we added new guidance in two areas. Guidance for minimum functionality centers around providing users with benefits and enriching their browsing experience. Guidance for affiliate ads is about making users are aware of extensions using affiliate links or codes for monetization, and giving them some amount of control by requiring user action before inclusion.

New instructions for the Extension Manifest Converter

Posted on

We've rewritten the README for the Extension Manifest Converter to make it easier to see what you need to do after running the tool. The converter helps helps migrate extensions built on Manifest V2 to Manifest V3. The new README describes what the tool does using words that closely match those in the migration guide's checklist . The converter doesn't do everything, but it does eliminate many tasks that don't require a human judgement call.

Chrome 113: New reasons for offscreen documents

Posted on

We have added two new reason types to the Offscreen Documents API. Use LOCAL_STORAGE to access the web platform's localStorage API. Use WORKER when creating web workers.

Google Analytics 4 now in the Developer Dashboard

Posted on

The Chrome Web Store Developer Dashboard now supports Google Analytics 4 (GA4). We've simplified setting up Google Analytics and made access management for group publishers more straightforward. If you previously used Google Universal Analytics to track your store listing activity, you will need to take action by July 1, 2023 to ensure that you continue receiving data about your store listing. For more information, see the post on the Chrome Extensions Mailing List .

The File Handling API comes to ChromeOS

Posted on

The File Handler API is available for experimentation on ChromeOS in Canary for versions 112 and 113. It lets extensions on ChromeOS open files with specified MIME types and file extensions. To implement file handling add a set of rules to the manifest.json . This feature works the same as for Progressive web apps. For more information, see the article elsewhere on this site.

To enable file handling:

  • Starting in 112, launch Chrome using the --enable-features=ExtensionWebFileHandlers flag, starting in 112
  • Starting in 113, paste os://flags/#extension-web-file-handlers into the Chrome omnibox and select 'Enabled' from the dropdown menu.

We hope to launch this feature in Chrome 115, in late June. Watch this space for updates.

New Samples: dynamic declarations and programmatic injection

Posted on

We've built a new sample for the chrome.scripting API. It demonstrates dynamic declarations, where a content script is registered at runtime, and programmatic injection, where a script is executed in a tab that is already open.

New Samples: Declarative Net Request use cases

Posted on

Three new samples are available demonstrating the Declarative Net Request API . Each demonstrates implementation of a single use case. The first shows how to block cookies. The remaining two demonstrate blocking and redirecting URLs.

Chrome 112: Increased storage.session quota

Опубликовано

From Chrome 112, the quota for the storage.session property has been increased to approximately 10 MB. This was agreed to in the Web Extensions Community Group: https://github.com/w3c/webextensions/issues/350

Chrome 109: Offscreen documents

Posted on

Offscreen documents are now available in Manifest V3 extensions. These help with the transition from background pages to extension service workers by providing support for DOM-related features and APIs. For more information, read the blog post .

Chrome 110: Is an extension enabled

Posted on

The chrome.action.isEnabled() method programmatically checks whether an extension has been enabled for a specific tab. This saves you from maintaining the enabled state of your tabs. This new method takes a tab ID and a reference to a callback and returns a boolean. It has one limitation: tabs created using chrome.declarativeContent always return false.

(The chrome.action namespace recently got new methods for controlling the appearance of extension badges. For more information, see Setting badge colors .)

Chrome 110: Change in service worker idle timeout

Posted on

Previously, an extension service worker would frequently shut down at the five minute mark. We've changed this behavior to more closely resemble service worker lifetime's on the web. An extension service worker will be shut down after either thirty seconds of inactivity or if a single activity takes longer than 5 minutes to process. For more information, see Longer extension service worker lifetimes .

Post: Pausing Manifest V2 phase-out

Posted on

The Manifest V2 deprecation timelines are under review and the experiments scheduled for early 2023 are being postponed. For more information, read the update in the Chrome Extensions Mailing List.

Chrome 110: Setting badge colors

Posted on

The chrome.action namespace has two new methods to give you more control over the appearance extension badges. The setBadgeTextColor() and getBadgeTextColor() methods allow an extension to change and query its toolbar icon's badge text color. When used with setBadgeBackgroundColor and getBadgeBackgroundColor these new methods let you enforce design and brand consistency.

Blog post: More details on the transition to Manifest V3

Posted on

We have clarified the Manifest V2 deprecation timeline . The Manifest V2 support timeline has also been updated to reflect this information.

Docs update: Known issues when migrating to Manifest V3

Posted on

We've put together a list of major features currently in development and open bugs . Our goal with this page is to help developers better understand the current state of the platform and what features they can target as they prepare for the future.

Chrome Web Store: "large promo tile" image upload removed

Posted on

Chrome Web Store has removed the "large promo tile" upload UI from the item Store Listing tab in the developer dashboard. This change does not affect the end user experience as these images were not used in the consumer UI. See this chromium-extensions post for additional details.

Chrome 106: Allow pages on file:// urls to access web accessible resources

Posted on

Opaque origins such as sandboxed iframes and dynamic import should also be able to access web accessible resources, according to crbug.com/1219825#c11 .

Chrome 106: Fixed bug allowing incorrect final arguments on some async API functions

Posted on

Previously, Manifest V3 calling async APIs could provide an invalid final argument and Chrome would not error. With this fix Chrome will now correctly error and report that there was no matching signature. Developers are encouraged to check their extensions on Canary for any errors in case they accidentally using incorrect signature for an API call that will be broken by this bug fix.

Blog post: Chrome Web Store analytics revamp

Posted on

Chrome Web Store has a revamped item analytics experience for the Chrome Web Store Developer Dashboard. The new dashboard is easier to understand at a glance and consolidates the most useful information up front. Read the blog post for more information.

Chrome 105: promises for the Identity API

Posted on

Functions on the Identity API now support promise based calls. This comes with a slight change to the surface for identity.getAuthToken() , where the asynchronous return set to a promise based call will have "token" and "grantedScopes" as parameters on a single object (as opposed to the callback version receiving them as separate arguments to the callback).

Chrome 104: New favicons API for Manifest V3

Posted on

Manifest V3 extensions can now access favicons using a new URL pattern: chrome-extension://<id>/_favicon/ , where is the ID of your extension. This replaces the Manifest V2 platform's chrome://favicons API. See the Favicon API docs for more information.

Docs update: Developer trader/non-trader disclosure

Posted on

Added the trader/non-trader developer identification that informs developers to accurately self-declare their trader/non-trader status.

Chrome 103: Wasm in Manifest V3 requires wasm-unsafe-eval

Posted on

Chrome no longer grants extensions script-src: wasm-unsafe-eval by default. Extensions that use WebAssembly must now explicitly add this directive and value to extension_pages in their content_security_policy declarations.

Chrome 103: Changing MV3 shortcuts take effect immediately

Posted on

When changing a Manifest V3 extension's keyboard shortcut on chrome://extensions/shortcuts , updates are now applied immediately. Previously the extension would have to be reloaded before the change would take effect.

Chrome 102: Dynamic content scripts in main world

Posted on

Dynamically registered content scripts can now specify the world that assets will be injected into. See scripting.registerContentScripts() for details.

Chrome 102: New manifest field "optional_host_permissions"

Posted on

Manifest V3 extensions can now specify the optional_host_permissions key in manifest.json. This allows Manifest V3 extensions to declare optional match patterns for hosts just as Manifest V2 extensions could using the optional_permissions key.

Chrome 102: injectImmediately property in scripting.executeScript()

Posted on

chrome.scripting.executeScript() now accepts an optional injectImmediately property on it's injection argument. If present and set to true, the script will inject into the target as soon as possible, rather than waiting for document_idle . Note that this is not a guarantee the script will inject before the page is loaded since the page continues to load while the API call is being made.

Chrome 102: Omnibox API support in Manifest V3

Posted on

The Omnibox API can now be used in service worker-based extensions. Previously, some of this API's methods would throw on invocation due to internal dependencies on DOM capabilities.

Chrome 102: wasm-unsafe-eval allowed in Manifest V3 CSP

Posted on

Manifest V3 extensions can now include wasm-unsafe-eval in their content_security_policy declarations. This change allows Manifest V3 extensions to use WebAssembly.

Chrome 102: New storage.session API

Posted on

Manifest V3 extensions can now use in memory storage storage.session .

Docs update: Chrome Web Store item discovery

Posted on

Discovery on Chrome Web Store gives an overview of how users find items on the Chrome Web Store and how our editors select items to feature.

Chrome 101: Improved declarativeNetRequest domain conditions

Posted on

declarativeNetRequest rule conditions have been updated to allow extensions to better target requests based on the request's "request" and "initiator" domains. The relevant condition properties are initiatorDomains , excludedInitiatorDomains , requestDomains , and excludedRequestDomains . See also this chromium-extensions thread .

Chrome 100: Resolved issue with scripting.executeScript() on newly created tabs

Fixed a longstanding issue where calling scripting.executeScript() on a newly created tab or window could fail.

Chrome 100: native messaging port keeps service worker alive

Posted on

Connecting to a native messaging host using chrome.runtime.connectNative() in an extension's service worker should keep the service worker alive as long as the port is open.

Chrome 100: omnibox.setDefaultSuggestion() supports promises and callbacks

Posted on

The omnibox.setDefaultSuggestion() method now returns a promise or accepts a callback to allow developers to determine when the suggestion has been properly set.

Chrome 100: i18n.getMessage() support in extension service workers

Posted on

The chrome.i18n.getMessage() API is now supported in extension service worker contexts.

Chrome 99: match_origin_as_fallback in Canary

Posted on

Content scripts can now specify the match_origin_as_fallback key to inject into frames that are related to a matching frame, including frames with about: , data: , blob: , and filesystem: URLs. See the content scripts documentation for details.

Chrome 99: extension service worker support for file: schemes in Canary

Posted on

Service worker-based Manifest V2 and Manifest V3 extensions can now use the Fetch API to request file: -scheme URLs. Access to file: -scheme URLs still requires that the user enable 'Allow access to File URLs' for the extension in the chrome://extensions page.

Chrome 99: promise support for messaging APIs in Canary

Posted on

Promise support has been added to tabs.sendMessage , runtime.sendMessage , and runtime.sendNativeMessage for extensions built for Manifest V3.

Docs update: Chrome Web Store review documentation

Posted on

Added a new reference page that provides an overview of the Chrome Web Store review process and explains how developer program policy enforcement is handled.

Chrome 98: scripting.executeScript() and scripting.insertCSS() accept multiple files

Posted on

The Scripting API's executeScript() and insertCSS() methods now accept multiple files. Previously these methods required an array with a single file entry.

Docs update: review violation troubleshooting updates

Posted on

The Troubleshooting Chrome Web Store violations page has been updated to provide developers with more detailed guidance for common reasons for rejection.

Chrome 96: expanded promise support to 27 more APIs

Posted on

This release contains significantly more promise updates than any previous release. Updates include both general and ChromeOS-specific extensions APIs. Expand the following sections for details.

Extensions APIs

A number of APIs now support promises in Manifest V3.

Also, APIs that use the ChromeSetting prototype now also support promises. The following APIs are affected by this change.

ChromeOS APIs

Chrome 96: dynamic content scripts

Опубликовано

The chrome.scripting API now supports registering , updating , unregistering , and getting a list of content scripts at runtime. Previously, content scripts could only be statically declared in an extension's manifest.json or programmatically injected at runtime with chrome.scripting.executeScript() .

Docs update: Manifest V2 support timeline

Posted on

The Manifest V2 to V3 transition timeline was announced in this blog post and a more detailed timeline page was published.

Chrome 96: declarativeNetRequestWithHostAccess permission

Posted on

The new declarativeNetRequestWithHostAccess permission allows extensions to use the chrome.declarativeNetRequest API on sites the extension has host permissions for. This also enables existing Manifest V2 extensions that use webRequest , webRequestBlocking , and site-specific host permission to migrate to the chrome.declarativeNetRequest API without requiring the user to approve new permissions.

Chrome 95: inject scripts directly into pages

Posted on

The chrome.scripting API's executeScript() method can now inject scripts directly into a page's main world. Previously, extensions could only inject directly into the extension's isolated world. For more information on isolated worlds, see the documentation on content scripts .

Chrome 95: promise support for Storage API

Posted on

Methods on the Manifest V3 version of the chrome.storage API now return promises.

Policy update: two step verification enforcement

Posted on

The policy update blog post published on June 29, 2021 has been updated to correct the two step verification deployment timeline.

Chrome 94: declarative net request static ruleset changes

Posted on

The chrome.declarativeNetRequest now supports specifying up to 50 static rulesets ( MAX_NUMBER_OF_STATIC_RULESETS ) and enabling up to 10 rulesets ( MAX_NUMBER_OF_ENABLED_STATIC_RULESETS ) at a time.

Chrome 93: cross origin isolation support

Posted on

Both Manifest V2 and Manifest V3 extensions can now opt into cross origin isolation . This feature limits which cross-origin resources can load an extension's pages and enables the use of low level web platform features like SharedArrayBuffer . Opt in will be required starting in Chrome 95.

Policy update: developer program policies updated

Posted on

The Chrome Web Store Developer Program Policies have been updated with clarifications to the deceptive installation tactics, spam, and repetitive content policies. This update also includes a new two step verification requirement to publish on the Chrome Web Store. Read the blog post for more information.

Blog post: extension actions in Manifest V3

Posted on

Chrome extensions had chrome.browserAction and chrome.pageActions APIs for years, but Manifest V3 replaced both with a generic chrome.actions API. This post explores the history of these APIs and what has changed in Manifest V3. Read the post .

Blog post: introducing chrome.scripting

Posted on

The chrome.scripting API is a new Manifest V3 API focused on, well, scripting. In this post we dig into the motivations for this change and take a closer look at it's new capabilities. Read the post .

Chrome 92: module service worker support

Posted on

Chrome now supports JavaScript modules in service workers. To specify a module a module in your manifest:

"background": {
  "service_worker": "script.js",
  "type": "module"
}

This loads the worker script as an ES module, which lets you use the import keyword in the worker's script to import other modules.

Chrome 91: chrome.action.getUserSettings()

Posted on

The new chrome.action.getUserSettings() method allows extensions to determine if the user has pinned the extension to the main toolbar.

Chrome 90: chrome.scripting.removeCSS()

Posted on

The new chrome.scripting.removeCSS() method allows extensions to remove CSS that was previously inserted via chrome.scripting.insertCSS() . It replaces chrome.tabs.removeCSS() .

Chrome 90: returning promises from scripting.executeScript()

Posted on

chrome.scripting.executeScript() now supports returning promises. If the resulting value of the script execution is a promise, Chrome will wait for the promise to settle and return its resulting value.

Chrome 90: chrome.scripting.executeScript() results include frameId

Posted on

Results returned from chrome.scripting.executeScript() now include the frameId . The frameId property indicates the frame that the result is from, letting extensions easily associate results with the individual frames when injecting in multiple frames.

Chrome 89: new API for managing tab groups

Posted on

The new chrome.tabGroups API and new capabilities in chrome.tabs let extensions read and manipulate tab groups. Requires Manifest V3.

Chrome 89: customizable permissions for web accessible resources

Posted on

Web accessible resources definitions in Manifest V3 have changed to let extensions restrict resource access based on the requester's origin or extension ID.

Blog post: Extension Manifest Converter

Posted on

The Chrome Extensions team has open sourced "Extension Manifest Converter", a Python tool that automates some of the mechanical aspects of converting extensions to Manifest V3. See the announcement blog post and get it from GitHub .

Chrome 88: Manifest V3 general availability

Posted on

Manifest V3 is a major update to the extensions platform; see Overview of Manifest V3 for a summary of new and changed features. Extensions may continue to use Manifest V2 for now, but this will be phased out in the near future. We strongly recommend that you use Manifest V3 for any new extensions, and begin migrating existing extensions to Manifest V3 as soon as possible.