Pick a framework
Mini-apps are static bundles, so any framework that emits a static export works. Here's the one-line summary for the common ones.
The host loads your bundle as a sandboxed web view, so any framework
that produces static HTML/JS/CSS works. The framework only changes
two things: what you put in sdk.config.json (the build command +
output dir), and where you mount the SDK calls (in a client component
that runs after hydration, never during SSR).
Next.js
App router + static export. Use `'use client'` and call `MiniAppClient.fromWindow()` inside `useEffect`.
Nuxt
`nuxt generate` + `<client-only>` wrapper around any host-bridge code.
Vanilla HTML / JS
The smallest integration: one HTML file, no bundler. Recommended for widget-sized apps.
Frameworks not on this list
Anything that supports static export will work — Vite, SvelteKit (adapter-static), Astro, Eleventy, Hugo, Jekyll, plain Webpack/Rollup configs. The pattern is always the same:
- Configure your framework for static output.
- In
sdk.config.json, setappRootto its output dir andbuildCommandto its build command. - Anything calling
MiniAppClient.fromWindow()runs after hydration, never during SSR.
If you wire one up, open a docs PR and we'll add it here.