Experimental · open source · MIT · v0.1.0

Your web app, on Android.

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.

From zero to your phone in four commands
 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

Everything you need for the whole loop

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.

Live reload in your browser

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.

One command to your phone

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.

Android features from JavaScript

Device info, persistent storage, vibration, the share sheet and notifications, with promises, typed errors and TypeScript declarations.

Fast, offline builds

The starter template builds into a signed 21 KB APK in about 35 ms on our test machine. No downloads, daemons or cloud queue.

Signed and verified

APK Signature Scheme v2 with a persistent key, a strict verifier, an HTTPS-only app origin and a MessagePort bridge with no addJavascriptInterface.

Native features, plain JavaScript

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 API
import { 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}`);

Bring your own frontend

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.

Framework guide

How koru compares

Capacitor and Expo are mature and cover far more ground. koru trades that breadth for a tiny, self-contained Android toolchain.

koruCapacitorExpo
You writeHTML, CSS, JSHTML, CSS, JSReact Native
Android build needsthe koru binaryAndroid Studio, Gradle, JDKEAS cloud, or Android SDK locally
PlatformsAndroidAndroid, iOS, webAndroid, iOS, web
OutputSigned APKAPK, AABAPK, AAB
Plugins6 built-in + DEX pluginsLarge ecosystemLarge SDK
Detailed comparison

Honest status

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.

Build your first app now

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