I’m hoping to get some insight from Apple engineers or developers who have seen similar behavior.
Background
We previously had a React Native / Expo iOS app in production for several years. Recently, we rebuilt the app completely from scratch as a native SwiftUI app using WKWebView (no shared code, no RN runtime).
The new app architecture is:
- Native SwiftUI container
- WKWebView loading a remote web app
- Firebase Analytics & Crashlytics
- Push notifications (APNs + FCM)
- No local database, no persistent native state
Migration scenario
Users update the app via the App Store:
- Old app: React Native / Expo
- New app: native SwiftUI + WKWebView
For most users, the migration works fine.
However, for a about 10% of users, the following happens:
The issue
After updating from the old React Native app to the new SwiftUI app:
- The app opens
- The native landing screen appears (solid black OR blue background, depending on which most recent version if being installed)
- The app never transitions to the WKWebView
- No crash
- Force-quitting does not help
- Deleting the app completely and reinstalling does fix it 9/10 times, but NOT ALWAYS.
From the user’s perspective:
“The app is stuck on a black OR blue screen forever.”
Important detail
Most of the times, a full uninstall + reinstall FIXES the issue, but funny enough, NOT always.. In some cases, the issue persists:
What we’ve already tried
Over the last weeks, multiple iOS developers have investigated this.
We have implemented and/or tested:
- Full rebuild in SwiftUI (no RN remnants)
- Aggressive cleanup on first launch after update:
- -- UserDefaults cleanup
- -- WKWebsiteDataStore cleanup
- -- URLCache / cookies cleanup
- Timeouts and fallbacks so the UI never blocks indefinitely
- Explicit logging of:
- -- app_open
- -- session_start
- -- webview_init
- -- webview_load_start / finish
- -- blank screen detection
- Handling:
- -- WKWebView content process terminated
- -- network / TLS / DNS errors
- Added a native SwiftUI landing screen (in the latest version) so users no longer see a black screen, but now they see a BLUE screen when the transition fails
Observations from Analytics & Crashlytics
- No native crashes
- Very high user engagement (~99%)
- Very low blank-screen detection (~1–2%)
- The issue does not appear to be mass-scale
- But support still receives complaints daily from affected users
This suggests a device / iOS / network-specific edge case, not a general migration failure.
Hypotheses (not confirmed)
We suspect one of the following, but haven’t been able to prove it:
- WKWebView failing to initialize under specific conditions after App Store updates
- TLS / ATS / CDN edge behavior affecting first WKWebView load
- iOS lifecycle timing issue when transitioning from SwiftUI landing view to WKWebView
- OS-specific WebKit state that survives reinstall (keychain? system WebKit state?)
- ISP / DNS / IPv6-related issues on first launch
What we’re looking for
We would really appreciate insight on:
- Are there known cases where WKWebView fails silently after an App Store update, even after reinstall?
- Is there any system-level WebKit state that survives app deletion?
- Are there best practices for transitioning from a SwiftUI landing view to WKWebView to avoid dead-ends?
- Any known iOS versions / device classes where this behavior is more common?
- Any debugging techniques beyond Crashlytics / Analytics that could surface what WebKit is failing on?
We’re not looking for generic “clear cache” advice — we’ve already gone far down that path.
We’re trying to understand whether this is a known WebKit edge case or something we are fundamentally missing.
Thanks in advance for any pointers or shared experiences.