Znane problemy z migracją do platformy Manifest V3

Niedawno ogłosiliśmy zmiany w harmonogramie wycofywania platformy Manifest V2. Jesteśmy mocno przywiązani do wdrożenia platformy Manifest V3 i wiemy, że czeka nas jeszcze wiele pracy.

  • Przed ogłoszeniem nowego harmonogramu wycofywania usług zakończyliśmy usuwanie priorytetowych luk w platformach i zamknęliśmy krytyczne błędy, które zostały opisane na tej stronie.
  • Daliśmy deweloperom czas na tworzenie, gwarantując co najmniej 6 miesięcy między ogłoszeniem harmonogramu a oczekującymi eksperymentami dotyczącymi wyłączenia obsługi platformy Manifest V2.

Wypełnianie luki w platformie

Przed ogłoszeniem nowego harmonogramu wycofywania platformy Manifest V2 staramy się usunąć te luki:

Informacje o problemach zostały zebrane na podstawie opinii partnerów, raportów o błędach i deweloperów. Będziemy kontynuować nasze prace nad poprawą stabilności i ogólnej wydajności platformy rozszerzeń.

Obecnie nie ma otwartych problemów uznawanych za krytyczną lukę na platformie.

Niedawno rozwiązaliśmy następujące problemy:

  1. Obsługa obsługi plików w ChromeOS zastępująca wersję chrome.fileBrowserHandler [Chrome 120].
  2. Obsługa skryptów użytkownika: zezwalaj na rejestrowanie skryptów treści za pomocą dowolnego kodu za pomocą nowego interfejsu userScripts API [Chrome 120].
  3. Dodatkowe silne utrzymywania aktywności mechanizmów Service Worker w przypadku niektórych operacji trwających dłużej niż 5 minut.
    • Dodano w Chrome 116 na urządzeniach z systemem permissions.request(), desktopCapture.chooseDesktopMedia(), identity.launchWebAuthFlow() i management.uninstall().
    • Dodano w Chrome 118 na koncie chrome.debugger
  4. Zwiększ liczbę statycznych i włączonych zestawów reguł na potrzeby deklaratywnego żądania netto (DNR). Zwiększono liczbę włączonych statycznych zestawów reguł z 10 do 50, a łączną liczbę takich zestawów reguł z 50 do 100 [Chrome 120].
  5. Rozszerz funkcję Dokumentów poza ekranem, aby uwzględnić więcej powodów, dla których warto korzystać z dokumentu niewyświetlanego na ekranie. Dodano GEOLOCATION w Chrome 116.
  6. Ulepszyliśmy obsługę interfejsu API chrome.tabCapture [Chrome 116]:
    • Zezwalaj na wywoływanie funkcji getMediaStreamId() w skrypcie service worker.
    • Obsługa uzyskiwania MediaStream z identyfikatora strumienia w dokumencie poza ekranem.
  7. Wydłużenie czasu trwania mechanizmów Service Worker w przypadku aktywnych połączeń WebSocket [Chrome 116].

Najczęstsze pytania na temat platformy Manifest V3

P: Czy planujemy obsługiwać trwałe mechanizmy Service Workers?
O: Jedną z głównych przyczyn przejścia ze skryptów działających w tle na mechanizmy Service Worker jest bardziej wydajne pod względem pamięci model programowania oparty na zdarzeniach, który wynika z efemerycznej natury mechanizmów Service Worker. W związku z tym nie planujemy wspierać trwałych pracowników usługowych. Wychodząc jednak na specyficzne potrzeby programistów rozszerzeń, stale wprowadzamy wiele ulepszeń w mechanizmach Service Worker. W szczególności:

  • Wszystkie zdarzenia rozszerzeń i wywołania interfejsu API wydłużają czas trwania skryptu service worker.
  • W niektórych przypadkach użycia, takich jak komunikaty natywne, mechanizmy Service Worker rozszerzeń będą aktywne przez ponad 5 minut.

P: Czy istnieje sposób dostępu do DOM w skryptach service worker?
O: Realizujemy strategię platformy internetowej, która polega na nieuwzględnianiu dostępu DOM w swoich instancjach roboczych (w tym skryptu service worker). Aby obsługiwać przypadki użycia, w których mechanizmy Service Worker mają dostęp do modelu DOM w tle, wprowadziliśmy możliwość przekazywania pracy w tle do krótkotrwałych dokumentów nieekranowych, które zapewniają pełny dostęp DOM.

P: Czy w platformie Manifest V3 będzie można obsługiwać kod zdalny?
O: Aby zwiększyć bezpieczeństwo rozszerzeń do Chrome, nadal będziemy zabraniać wykonywania dowolnych zdalnie hostowanych kodów w rozszerzeniach do Chrome. Nie oznacza to jednak, że zabraniamy wszelkiego rodzaju dynamicznego wykonywania kodu. Nadal obsługujemy różne opcje dynamicznego wykonywania kodu w rozszerzeniach do Chrome:

P: Rozszerzenie My Manifest V2 korzysta z metody webRequestRequest, która nie jest obsługiwana w platformie Manifest V3. Co mogę zrobić, aby nadal udostępniać te same funkcje w platformie Manifest V3?
O: Jesteśmy przekonani, że większość przypadków użycia blokowania żądań można rozwiązać dzięki nowemu interfejsowi API declarativeNetRequest. Dodatkową zaletą takiego rozwiązania jest uniknięcie obciążenia związanego z komunikacją międzyprocesową, wykonywanie kodu przy każdym żądaniu i wymaganie aktywnego procesu rozszerzenia w momencie wysyłania żądania. Jednak w złożonych przypadkach użycia w firmach (lub instytucjach edukacyjnych) dynamiczne blokowanie żądań jest nadal obsługiwane.

Czy coś pominęliśmy? Daj nam znać.