i99dash docs
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.

On this page