Skip to content

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.

Every project deployed to TMA.sh includes:

  • Automatic builds — push to main and 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.sh with 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.ts file and get a Hono-powered API deployed to {project}--api.tma.sh.

TMA.sh builds and deploys static SPAs only. The following frameworks are detected and supported for deployment:

FrameworkNotes
ViteReact, Vue, Svelte
AstroStatic output mode
Plain HTMLNo 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.

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.

Go from zero to a deployed Telegram Mini App in four commands:

Terminal window
bun add -g @tma.sh/cli
tma init my-app
cd my-app && tma dev
tma deploy

See Installation for detailed setup instructions, or jump straight to Your First Deploy for a step-by-step walkthrough.