Skip to main content

Introduction

Telegram Mini Apps (or TMAs) are web applications that run inside the Telegram messenger. Dynamic works out of the box with TMAs. Scaffold your app and add the Dynamic JavaScript SDK by following the quickstart guide.
This recipe uses the Dynamic JavaScript SDK (@dynamic-labs-sdk/client + @dynamic-labs-sdk/evm, plus @dynamic-labs-sdk/react-hooks if you read state with hooks). See the JavaScript Quickstart or React Quickstart for the base setup.
You can see a live example of a Dynamic integration in a TMA when using Flooz.

Integration guide

To get started, use one of the TMA templates outlined here. The basic command to scaffold a new TMA is:
Install the Dynamic JavaScript SDK. Add @dynamic-labs-sdk/react-hooks and its TanStack Query peer dependency only if you plan to read state with React hooks:
Create a singleton client module. Importing this file at app root registers extensions before any component renders:
src/lib/dynamicClient.ts
If you plan to read state with @dynamic-labs-sdk/react-hooks, wrap your routes with QueryClientProvider (outer) and DynamicProvider (inner) in src/components/Root.tsx:
That’s it. The JavaScript SDK is headless (there is no DynamicWidget). How you read auth and wallet state depends on whether you call client functions directly or use React hooks:
Call client functions directly wherever you need them. No provider required:
You can customize the integration further by following the JavaScript Quickstart or React Quickstart, or the generated project’s README. If you have any questions or need help with the integration, feel free to reach out to us in Slack.
Last modified on August 18, 2026