Telegram Mini App hosting, the bot and the page together
A Mini App is two halves: a bot that offers the button and a web page Telegram opens inside itself. Both run here. The page is served at https://name.fadehost.app over HTTPS, which is what Telegram requires, and the bot sits next to it on the same account.
What Telegram needs from the page
Telegram opens a Mini App only over https with a certificate it trusts, which is what every app's web address gives you: pick a name, turn the address on, and the page answers at https://name.fadehost.app behind the Cloudflare proxy. Then set that URL on the bot in BotFather, as the menu button or with /newapp, and the button opens your page inside Telegram.
One app or two
One app. A single web server that serves the Mini App's files and runs the bot in the same process. Simplest to deploy, and one plan covers it.
Two apps. The page as a static build on one app and the bot as a worker on another, which keeps a front-end build separate from the bot's loop. Standard carries two apps at $3 a month and Pro carries four at $6.
A built React, Vue or Vite front end is a static site here, so the page half can be the output of your build with no server of its own.
Checking initData, because the page is public
Telegram passes the viewer's identity to the page as initData, signed with a key derived from your bot token. Anything that matters has to be verified on the server side with that token: the page itself is public, and a user id read straight from the query string is whatever the caller typed. Keep the token in an environment variable and do the check in the bot or the API half, never in the browser.
Sleeping, and why a Mini App wants a paid plan
On the free plan a web address sleeps when nobody has opened it for a while and wakes on the next request, which a person tapping a button in a chat will notice. A paid app from $2 a month keeps the address awake at no extra cost, and the bot's own process never sleeps on either plan. Your own domain can point at the app from its page in the panel.
Frequently asked questions
Can the bot and the Mini App be one app?
Yes. One process can serve the page and poll Telegram, and that is the usual way to start. Splitting them is for when the front end has a build of its own.
Do I need my own domain?
No. name.fadehost.app comes with the app and Telegram accepts it, certificate included. Your own hostname can point at the app later, up to three per app.
Where does the Mini App URL go?
Into BotFather, on the bot: the menu button, an inline button's web_app URL, or /newapp for a named Mini App. Nothing about it is configured on our side beyond the address itself.
Does the free plan work for a Mini App?
It works for building and showing one. For something people use, the sleeping address is the reason to pay $2: the first open after an idle spell waits for the app to wake.
Can I serve a built Vite or Next.js front end?
Yes. A static build is served as a static site, and a Next.js app runs as a Node.js app. Both are detected from the repository.
What does the free plan include?
One bot or app per verified account: 256 MB of memory, a quarter of a vCPU, 3 GB of disk under /data and 1 GB of traffic a day, with deploys on push, the live console, the crash doctor and rollback. The process stays on; only a web address sleeps when nobody is using it. A free app runs in whichever region has room for it. A paid plan from $2 a month gives the bot 1 GB and a whole vCPU, lets you pick the region and drops the traffic limit.