Getting startedFrameworks
Vanilla HTML / JS
The simplest integration — plain HTML served as static files, no bundler.
The simplest integration — plain HTML served as static files.
<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8" />
<title>My Mini App</title>
</head>
<body>
<pre id="out">loading…</pre>
<script type="module">
import { MiniAppClient } from 'https://esm.sh/@i99dash/sdk';
const client = MiniAppClient.fromWindow();
const ctx = await client.getContext();
document.documentElement.lang = ctx.locale;
document.documentElement.dir = ctx.locale === 'ar' ? 'rtl' : 'ltr';
document.getElementById('out').textContent = JSON.stringify(ctx, null, 2);
</script>
</body>
</html>sdk-i99dash dev static-serves appRoot/ unchanged — no build step.
sdk-i99dash build copies appRoot/ → distDir/ (plus
manifest.json). sdk-i99dash publish tarballs and uploads.
When this is the right choice
Recommended when your app fits in a single HTML page plus a couple of JS / CSS files. No bundler means the fastest possible cold start on the head unit — which matters: the head-unit CPU is roughly an entry-level phone from 2018.
For anything bigger than a single screen with a couple of buttons, reach for Next.js or Nuxt.
Related
- Quickstart — the 5-minute path uses the vanilla template by default.
- Local development — fixture grammar.