i99dash for developers
Build mini-apps that run on i99dash car head-units. From zero to published in five minutes.
i99dash hosts third-party mini-apps on a car head-unit. A mini-app is a
plain HTML / JS / CSS bundle the host loads inside a sandboxed web view. It
reads context (active user, current car, locale, theme) through a typed JS
bridge — getContext() — and reaches external HTTPS APIs with plain
fetch(), gated by the origins it declares in manifest.network.
Should I build a mini-app?
Yes if you want to:
- Show information to drivers (fuel prices, weather, EV charging stations, parking lots) — these are read-only mini-apps, public catalog.
- Build a privileged tool (diagnostics, log tailing, package management) for
fleet operators or your own team — these are
i99dashmini-apps, restricted distribution.
No if you want to:
- Control the car (lock doors, set AC, drive). The SDK is read-only by
construction. There is no
client.car.lockDoors(). - Build a native Android head-unit app — a separately-installed APK that launches full-screen. Mini-apps are HTML/JS; native apps are a separate, invite-only track. See Native apps.
Start here
1 → Quickstart (5 min)
Scaffold, edit the simplest real code, publish a hello-world.
2 → Concepts
The bridge, calling an external API, error model. The mental model the rest of the docs assume.
3 → Build something real
Fetch JSON from a declared API origin, render a list, handle errors. ~10 minutes.
Reference, when you need it
Guides
Best practices, subscriptions, testing — read before shipping.
Recipes
Copy-paste end-to-end builds.
API reference
Auto-generated TypeScript reference for every public symbol.
Themes
Restyle the head-unit with a ThemeSpec JSON — colors, wallpapers, shape. The themes marketplace, alongside mini-apps.
Native apps
Publish native Android APKs that install on cars as standalone child apps — invite-only, version-controlled, verify-before-install.
Troubleshooting
Symptoms, root causes, fixes.
Glossary
One canonical definition for every term across the docs. Search this if a word feels overloaded.
What's new
- Native apps — invited developers can now publish native Android APKs that install on cars as standalone child apps, beyond WebView mini-apps:
i99dash apk init / validate / publish / promote, a 3-key signing chain, auto-extracted icon + label, and staged rollout. Native apps. i99dash/reactv0.1.0 — official React bindings: one provider, one hook per family (useMiniAppContext,useCarStatus,useMedia,useClimate,useLocation,useNavigation,useSystem,useConnectivity). SSR-safe viacreateClientOrSSR(). Next.js setup.- Bundle-relative asset paths + closed-enum categories — breaking.
manifest.iconis now a./path inside the bundle (the publish flow rewrites it to a versioned CDN URL);manifest.categorymust be one of 10 canonical slugs. Existing apps: re-runpnpm dlx i99dash initfor the new shape, or follow the migration notes. i99dash beta status— see your beta cohort, invitee count, and rollout state from the CLI. Beta testing.
Working with AI agents
The site exposes /llms-full.txt (every page as plain
markdown) and an MCP server at /api/mcp
with tools search_docs, get_doc, list_packages, list_symbols. Add it
to Claude Code:
claude mcp add --transport http i99dash-docs https://docs.i99dash.app/api/mcp