dc81585f9a
Android's shouldInterceptRequest blocks a pool of ~6 IO threads, each waiting for JS to respond via the Capacitor bridge. With 200+ files each requiring a network round-trip to Blossom, loading is painfully slow. iOS doesn't have this problem — WKURLSchemeHandler is async. Split the native plugin lifecycle into create() and navigate(): - create() adds the WebView container with spinner overlay (visible) - navigate() loads the entry URL (triggers fetch interception) On Android, onReady downloads all manifest blobs in parallel (12 concurrent fetches) into an in-memory cache while the native ProgressBar spinner animates. Once navigate() fires, every resolveFile call is an instant cache hit. On iOS/web, onReady is a no-op and navigate() fires immediately.