[FIX] 도메인 이전 전 PWA 서비스워커 잔재로 인한 API 요청 CSP 차단 수정#268
Conversation
- 도메인 이전 전 PWA로 등록된 오래된 서비스워커가 사용자 브라우저에 남아 캐시된 구버전 페이지를 서빙하며 API 요청을 CSP로 차단하는 문제를 발견했습니다 - 페이지 로드 시 현재 origin에 등록된 서비스워커와 캐시를 자동으로 해제하는 ServiceWorkerCleanup을 추가했습니다 - 루트 레이아웃에 연결했습니다
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
Walkthrough페이지 마운트 시 기존 서비스워커 등록과 브라우저 캐시를 정리하는 클라이언트 컴포넌트를 추가하고, 이를 로케일 레이아웃의 Changes서비스워커 정리
Estimated code review effort: 2 (Simple) | ~10 minutes ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Timo Performance ReportBundle Size — timo-web
Lighthouse — timo-web
Image Optimization — timo-web
측정 커밋: |
ISSUE 🔗
close #267
What is this PR? 🔍
도메인 이전 전 PWA로 설치 가능했던 시절 등록된 오래된 서비스워커가 사용자 브라우저에 남아, 캐시된 구버전 페이지를 계속 서빙하면서 API 요청이 CSP로 차단되는 문제를 수정했습니다.
배경
timo.kr이 PWA로 설치 가능했던 시절 등록된 서비스워커가 일부 사용자 브라우저에 여전히 활성화된 상태로 남아, 캐시된 구버전 HTML/CSP를 그대로 서빙하고 있었습니다. 그 결과/users,/home,/time-boxes,/timers/active등 API 요청이 CSP 위반(net::ERR_FAILED)으로 실패했습니다. 강력 새로고침 시에는 네트워크에서 새 리소스를 직접 받아와 정상 동작했고, DevTools에서 서비스워커를 수동으로 unregister하면 영구적으로 해결되는 것으로 재현·확인했습니다.서비스워커 정리
ServiceWorkerCleanup컴포넌트를 추가하고 루트 레이아웃에 연결했습니다.useEffect에서navigator.serviceWorker.getRegistrations()로 현재 origin에 등록된 모든 서비스워커를 조회해unregister()하고,caches.keys()로 Cache Storage 항목을 전부delete()합니다.localStorage/쿠키/IndexedDB는 건드리지 않으므로 로그인 상태 등 기존 사용자 데이터에는 영향이 없습니다. 서비스워커가 없는 사용자에게는getRegistrations()가 빈 배열을 반환해 아무 동작도 하지 않습니다(no-op).To Reviewers
localStorage/쿠키/IndexedDB는 그대로 두는 범위가 맞는지 확인 부탁드립니다.Screenshot 📷
Test Checklist ✔
pnpm check-types:web통과pnpm lint:web통과pnpm build:web통과