이 페이지에서는 Manifest V3로 전환하는 동안 해결된 플랫폼 격차를 설명하고 자주 묻는 마이그레이션 질문에 답변합니다.
해결된 플랫폼 격차
일반적인 마이그레이션 차단 요소를 해결하기 위해 다음 기능이 추가되었습니다.
chrome.fileBrowserHandler을 대체하는 ChromeOS의 파일 처리 지원 (Chrome 120)- 사용자 스크립트 지원: 새로운 userScripts API를 사용하여 임의의 코드로 콘텐츠 스크립트를 등록할 수 있습니다 (Chrome 120).
- 5분 이상 걸리는 특정 작업을 위한 추가 강력한 서비스 워커 keepalive
- Chrome 116에서
permissions.request(),desktopCapture.chooseDesktopMedia(),identity.launchWebAuthFlow(),management.uninstall()에 추가되었습니다. chrome.debugger용 Chrome 118에서 추가되었습니다.
- Chrome 116에서
- 선언적 Net Request (DNR)의 정적 및 사용 설정된 규칙 세트 수 증가 사용 설정된 정적 규칙 세트가 10개에서 50개로, 총 정적 규칙 세트가 50개에서 100개로 증가했습니다 (Chrome 120).
- 오프스크린 문서 기능을 확장하여 오프스크린 문서를 사용하는 더 많은 이유를 지원합니다. Chrome 116에서
GEOLOCATION가 추가되었습니다. chrome.tabCaptureAPI 지원 개선 (Chrome 116):- 서비스 워커에서
getMediaStreamId()호출 지원 - 화면 밖 문서에서 스트림 ID로부터
MediaStream획득 지원
- 서비스 워커에서
- 활성
WebSocket연결이 있는 동안 서비스 워커 수명 연장 (Chrome 116)
Manifest V3 관련 자주 묻는 질문
Q: 영구 서비스 워커를 지원할 계획이 있나요?
A: 백그라운드 스크립트에서 서비스 워커로 이전하는 주요 이유 중 하나는 서비스 워커의 일시적인 특성에서 비롯되는 메모리 효율적인 이벤트 기반 프로그래밍 모델입니다. 따라서 영구 서비스 워커는 지원하지 않을 예정입니다. 하지만 확장 프로그램 개발자의 구체적인 요구사항을 해결하기 위해 서비스 워커를 지속적으로 개선하고 있습니다. 특히 다음 항목이 중요합니다.
- 모든 확장 프로그램 이벤트와 API 호출은 서비스 워커 수명을 연장합니다.
- 기본 메시지와 같은 선택된 사용 사례는 확장 프로그램 서비스 워커를 5분 이상 활성 상태로 유지합니다.
Q: 서비스 워커에서 DOM에 액세스할 수 있나요?
A: Google은 서비스 워커를 포함한 웹 워커에 DOM 액세스를 포함하지 않는 웹 플랫폼의 접근 방식을 따릅니다. 서비스 워커의 백그라운드 DOM 액세스가 필요한 사용 사례를 지원하기 위해 전체 DOM 액세스를 제공하는 수명이 짧은 오프스크린 문서에 백그라운드 작업을 위임할 수 있는 기능을 도입했습니다.
Q: Manifest V3에서 원격 코드를 지원하는 방법이 있나요?
A: Chrome 확장 프로그램의 보안을 강화하기 위해 Chrome 확장 프로그램에서 원격으로 호스팅되는 임의 코드의 실행을 계속 허용하지 않을 예정입니다. 하지만 그렇다고 해서 모든 종류의 동적 코드 실행이 금지되는 것은 아닙니다. Chrome 확장 프로그램에서 코드를 동적으로 실행하는 다양한 옵션은 여전히 지원됩니다.
- DevTools 확장 프로그램에서
eval()지원 - 사용자 스크립트 지원
- 샌드박스 처리된 iframe에서 원격으로 호스팅된 코드 실행
- 확장 프로그램 패키지에서 런타임에 해석할 수 있는 원격 호스팅 구성 파일 하지만 가능한 실행 경로는 미리 결정해야 합니다.
Q: 내 Manifest V2 확장 프로그램은 Manifest V3에서 지원되지 않는 webRequestBlocking을 사용합니다. Manifest V3에서 동일한 기능을 계속 제공하려면 어떻게 해야 하나요?
A: 대부분의 요청 차단 사용 사례는 새로운 declarativeNetRequest API로 해결할 수 있습니다. 이 API는 프로세스 간 통신의 성능 오버헤드를 방지하고, 요청마다 코드를 실행하며, 요청 시 활성 확장 프로그램 프로세스가 필요하다는 추가적인 이점이 있습니다. 하지만 복잡한 엔터프라이즈 (또는 교육) 사용 사례의 경우 동적 요청 차단이 계속 지원됩니다.
놓친 부분이 있나요? 알려주세요.