Start in seconds
koru create writes a ready project from a template: plain HTML, Vite, React, Vue, Svelte or TypeScript, with typed JavaScript, a signing key and a .gitignore that keeps it private.
Experimental · open source · MIT · v0.1.0
Create, preview and ship Android apps with the HTML, CSS and JavaScript you already know. koru is one Go binary: no Java, no Gradle, no Android SDK.
koru create my-app # start from a template
cd my-app
koru dev # preview with live reload
koru run # install and open on a device
koru create writes a ready project from a template: plain HTML, Vite, React, Vue, Svelte or TypeScript, with typed JavaScript, a signing key and a .gitignore that keeps it private.
koru dev serves your app with live reload and prints a QR code to open it on your phone. The same JavaScript API runs on web implementations, so storage, share and notifications work before you build.
koru run builds, installs and opens the app on a connected phone or emulator, and explains what to fix when something is wrong. koru logs shows the app's logs in your terminal.
Device info, persistent storage, vibration, the share sheet and notifications, with promises, typed errors and TypeScript declarations.
The starter template builds into a signed 21 KB APK in about 35 ms on our test machine. No downloads, daemons or cloud queue.
APK Signature Scheme v2 with a persistent key, a strict verifier, an HTTPS-only app origin and a MessagePort bridge with no addJavascriptInterface.
Import the module koru serves inside your app. In a browser the same calls use web implementations, and platform tells you where you are.
Read the JavaScript APIimport { device, storage, share, platform } from "/__koru/core.mjs";
const { model, sdk } = await device.getInfo();
await storage.set("theme", "dark");
document.querySelector("#share").onclick = () =>
share.text(`Built with koru on ${platform}`);
Start from a React, Vue, Svelte or TypeScript template, or bring anything that outputs static files: point webDir at the build folder. Keep your framework's hot reload with koru dev --proxy.
Capacitor and Expo are mature and cover far more ground. koru trades that breadth for a tiny, self-contained Android toolchain.
| koru | Capacitor | Expo | |
|---|---|---|---|
| You write | HTML, CSS, JS | HTML, CSS, JS | React Native |
| Android build needs | the koru binary | Android Studio, Gradle, JDK | EAS cloud, or Android SDK locally |
| Platforms | Android | Android, iOS, web | Android, iOS, web |
| Output | Signed APK | APK, AAB | APK, AAB |
| Plugins | 6 built-in + DEX plugins | Large ecosystem | Large SDK |
koru is experimental. Execution is recorded on an Android 11 (API 30) x86_64 emulator; AAB output for Google Play and iOS are not available. Test on the devices you support. Tested compatibility.
Install koru with one command (Linux and macOS; Windows has a PowerShell installer), then create a project.
curl -fsSL https://koru.js.org/install.sh | sh
koru create my-app