An Android app that builds Android apps
WebToApp is an Android app that turns a URL, an HTML folder, a front-end build or a Node.js, PHP, Python, Go or WordPress project into an installable APK. Template patching, signing and conversion to a Play Store AAB all run inside the app through apksig, with no PC and no remote build queue. The server, image and video types stay hidden until Advanced features is switched on in the About screen.
Bundled server runtimes, keystores and network controls
- Server runtimes inside the APK: Node.js 18.20, PHP 8.4 with Composer, Python 3.14, Go 1.26 and WordPress 7.x on SQLite. The generated APK fork+execs the binary and points its WebView at a local port. Runtimes download on first use and stay cached.
- On-device signing: V1, V2 and V3 schemes can be toggled one by one, and keystores import from PKCS12, PFX, JKS or BKS files.
- Network settings per app: DNS-over-HTTPS through seven providers, HTTP, SOCKS5 and PAC proxies, a Chrome, Firefox or Safari TLS fingerprint served through a local MITM bridge, and failover to mirror URLs. Encrypted Client Hello works on the system WebView and on GeckoView, which downloads on first use.
- Extensions without rebuilding the host: JS/CSS modules, userscripts with the
GM_*API, and MV3 Chrome extensions found through Chrome Web Store search. - Exportable Gradle project: an app can leave as an Android Studio project with its manifest, WebView activity, config and local files, minus the keystore and the full runtime.
- Built-in agent: up to 60 tools driven by a hosted or local LLM (Ollama, LM Studio, vLLM), with a permission prompt before any write.
Offline WordPress demos and sideloaded admin tools
- Ship a static React, Vue or Vite build served from localhost.
- Hand out a WordPress theme or plugin demo with PHP and SQLite bundled.
- Sideload a small Flask, FastAPI or Node.js admin tool.
- Group several sites in one app as tabs, cards, feeds or a side drawer.
Server apps stay off Play, fixes ship by re-export
Server-runtime apps cannot be published on Google Play. Node.js, PHP, Python, Go and WordPress APKs are pinned to targetSdk 28 so they can exec their binaries from app storage, and the level Play requires turns on W^X, which blocks those launches. AAB export is refused for those five types and for any build with resource encryption. The docs point to sideloading, enterprise distribution or a store that still accepts targetSdk 28.
Preview and export run different code. Preview runs inside the builder, while the exported APK runs a separate runtime that reads the embedded config, and the docs list "works in preview but not after export" as a real failure mode. Because the builder itself targets SDK 36, W^X blocks previews of the PHP, Python, Go and WordPress runtimes there; Node.js is the only server runtime that previews. Recent release notes tag most fixes as either "Update the builder" or "Export again", and the second kind only reaches a generated app once its APK is rebuilt.
MV3 isolation is simulated. Android WebView has a single JavaScript context, so the ISOLATED and MAIN worlds are emulated, and userscript GM_* functions stay exposed whatever the @grant lines declare.
The project describes itself as a pocket-sized APK workshop. Its README sets it against tools that only wrap a URL in a WebView.
The latest release is v2.8.2, published October 24, 2026. Nineteen releases have shipped since September 6, 2026, none marked as a pre-release. Version 2.8.2 raised the builder's minimum to Android 7.0 while the README still lists Android 6.0; generated apps still install on Android 6.0 and later.
