피드로 돌아가기
Dev.toFrontend
원문 읽기
MV2-MV3 마이그레이션을 통한 Service Worker 기반 상태 관리 최적화
Migrating a Chrome extension from MV2 to MV3: what broke, how I fixed it, and what I'd do differently
AI 요약
Context
MV2의 Background Page는 상시 실행 구조로 인해 메모리 점유율이 높고 배터리 효율이 낮은 한계 존재. MV3 전환에 따른 Service Worker 도입으로 이벤트 기반 비동기 실행 구조로의 전면적인 아키텍처 변경 필요.
Technical Solution
- 상시 실행되는 Background Scripts를 Lifecycle 기반의 Service Worker로 대체하여 리소스 효율 극대화
- In-memory 전역 상태의 유실 방지를 위해 chrome.storage.local 기반의 지속성 상태 관리 체계 구축
- Service Worker Sleep 상태에서도 작업 실행을 보장하기 위해 setInterval을 chrome.alarms 기반의 스케줄링 구조로 전환
- 보안 강화를 위한 Remote Code Execution 금지 정책에 따라 외부 스크립트 로딩을 Local Bundle 및 chrome.scripting.executeScript 방식으로 변경
- 설치 시 전체 권한을 요구하던 방식에서 runtime 시점에 필요한 권한만 요청하는 Optional Permission 모델 적용
실천 포인트
1. Background Page의 모든 전역 변수를 chrome.storage.local로 이전
2. 타이머 기반 로직을 chrome.alarms로 교체하여 Service Worker Lifecycle 대응
3. eval() 및 외부 스크립트 호출부를 Local Bundling 구조로 리팩토링
4. 유휴 상태(Idle)에서의 동작 여부를 검증하는 라이프사이클 테스트 수행
5. Host Permissions를 Runtime 요청 방식으로 전환하여 사용자 경험 개선