What "bundled" changes
When an HTML file is converted to an APK, it is copied into the app's assets folder and loaded by Android's WebView straight from the phone's storage. There is no web server, and in most builders the page is served from a special local origin rather than from a real domain. Three consequences follow, and they explain almost every "it worked in Chrome but the app is blank" report:
- Anything fetched from the internet needs the internet. A jQuery from a CDN, a Google Font, Bootstrap's CSS, a Font Awesome kit — each one is a request that fails in airplane mode. The script never arrives, the code that depends on it throws, the page stops.
- The browser's security rules for local files apply. ES module scripts (
type="module") are refused,fetch()of a local JSON file is refused, and service workers do not register. These are rules about origins, not bugs in the builder. - "/" means the device root, not your folder.
/css/style.cssis a perfectly good path on a web server and points nowhere inside an app. Every path needs to be relative.
The checker looks for each of those patterns — plus the things that merely need a permission switched on, and the things that are fine — and ranks them so you fix the fatal ones first.
Reading the result
- Breaks offline — the page will not work from inside the APK until this is changed. External scripts and stylesheets, module scripts, root-relative paths,
file://URLs. - Check this — it works differently offline. A
fetch()to your API is fine when there is signal; decide what the user sees when there is not. Web fonts fall back to the system font. Iframes may refuse to load in a WebView at all. - Needs a setting — geolocation, camera and microphone work, but only once you switch the matching permission on in the builder.
- Works offline — localStorage and IndexedDB. Good news: this is where a bundled app should keep its state.
The fix for most pages
Download every library you use and put it in a js/ folder next to index.html; do the same for CSS frameworks and for fonts (as .woff2 files with an @font-face rule). Change every path that starts with / to one that does not. If you use a bundler, build once to a classic (non-module) script. Then ZIP the folder, or use the merger to collapse it into one file, and build.