Overview
TMA.sh is the deployment platform for Telegram Mini Apps. Push your code to GitHub, and TMA.sh automatically builds, deploys, and configures your Telegram bot. Your static SPA is served from a global CDN at {project}.tma.sh, ready for users in seconds.
Think of it as Vercel for Telegram Mini Apps — zero-config deployments with auth, payments, and storage built in.
What you get
Section titled “What you get”Every project deployed to TMA.sh includes:
- Automatic builds — push to
mainand your app is live. No CI config required. - Global CDN — static assets served from edge locations worldwide.
- Built-in auth — validate Telegram users and get signed JWTs from
initData. Works with Supabase, Firebase, Turso, or any backend. - Payments — accept TON and Telegram Stars with a few lines of code via
@tma.sh/sdk. - KV storage — simple key-value storage scoped per project. No database setup needed.
- Preview environments — every pull request gets its own deployment at
pr{number}--yourapp.tma.shwith a dedicated staging bot. - Instant rollback — revert to any previous deployment with zero downtime.
- Custom domains — bring your own domain with automatic SSL.
- Edge API routes — add a
server/api/index.tsfile and get a Hono-powered API deployed to{project}--api.tma.sh.
Supported frameworks
Section titled “Supported frameworks”TMA.sh builds and deploys static SPAs only. The following frameworks are detected and supported for deployment:
| Framework | Notes |
|---|---|
| Vite | React, Vue, Svelte |
| Astro | Static output mode |
| Plain HTML | No build step required |
The tma init command provides scaffold templates for Vite React, Vite Vue, Vite Svelte, and Plain HTML. Astro projects are supported for deployment (framework detection works automatically) but there is no Astro init template — use tma link to connect an existing Astro project instead.
SSR frameworks like Next.js, Nuxt, and SvelteKit are not supported. TMA.sh serves static files from a CDN — if you need server-side rendering, those frameworks are not a fit. Use Vite with your preferred UI library instead.
Prerequisites
Section titled “Prerequisites”Before you start, make sure you have:
- Bun — the JavaScript runtime. Install from bun.sh.
- A Telegram bot token — create one via @BotFather in Telegram.
- A GitHub repository — TMA.sh deploys from GitHub. Public or private repos both work.
Quick start
Section titled “Quick start”Go from zero to a deployed Telegram Mini App in four commands:
bun add -g @tma.sh/clitma init my-appcd my-app && tma devtma deploySee Installation for detailed setup instructions, or jump straight to Your First Deploy for a step-by-step walkthrough.