iOS WKWebView에서 자주 발생하는 메모리 이슈 정리
WKWebView는 별도 프로세스(WebContent)에서 동작합니다. 그래서 "앱은 살아 있는데 화면만 하얗게" 되는 일이 생깁니다. Crashlytics에는 잡히지 않는 대표 케이스입니다.
1. WebContent process did terminate
WebView가 메모리 부족으로 죽으면 webViewWebContentProcessDidTerminate(_:) 콜백이 옵니다. 여기서 reload()를 호출하지 않으면 화면이 영원히 비어 있습니다.
2. 큰 이미지 · 비디오를 WebView 안에서 디코딩
4MB 이상 이미지를 base64로 넘기거나 WebGL canvas를 띄우면 가장 먼저 죽습니다.
3. 여러 WebView 동시 유지
탭 구조로 WebView 3~4개를 메모리에 유지하면 백그라운드 진입 후 OS가 가장 큰 것부터 죽입니다. 화면 전환 시 명시적 해제가 필요합니다.
4. 쿠키 · 스토리지 분리 (WKWebsiteDataStore)
nonPersistent() 데이터스토어로 만든 WebView는 앱 재시작 시 로그인이 다 풀립니다. "매번 로그인" 리뷰의 원인입니다.
5. UIWebView가 아직 남아 있다면
App Store는 이미 UIWebView 사용 앱을 거절합니다. 라이브러리 의존성에 숨어 있는 경우가 많아 nm -gU로 확인이 필요합니다.
WKWebView 안정화 체크리스트
webViewWebContentProcessDidTerminate핸들러 + 재로딩 UXWKProcessPool공유 vs 분리 정책 결정- 이미지 · 비디오는 native에서 디코딩 후 thumbnail만 WebView로
backgroundColor·isOpaque설정으로 White Flash 방지
iOS WebView · 메모리 · 로그인 이슈가 결합돼 재현이 어렵다면 진단 단계에서 분리해 드립니다.
앱 운영 진단 신청 →