Tact is a next-gen smart contract language for TON
npm install @tact-lang/compilerA next-gen smart contract programming language for TON Blockchain focused on efficiency and ease of development.
Tact is a good fit for complex smart contracts, quick onboarding, and rapid prototyping.
Developed by TON Studio, powered by the community — as of the beginning of 2025, the number of _unique code_[^1] contracts deployed on the mainnet reached almost 28 thousand, of which about 33% were written in Tact. You can view some selected projects here: Tact in production.
Tact has undergone a comprehensive security audit by Trail of Bits, a leading Web3 security firm.
[Try online!] • [Features] • [Security] • [Key resources] • [Installation] • [Community] • [Contributing]
[Try online!]: https://ide.ton.org
[Features]: #features
[Security]: #security
[Key resources]: #key-resources
[Installation]: #installation
[Community]: #community
[Contributing]: #contributing






The most prominent and distinctive features of Tact are:
- Familiar and user-friendly TypeScript-like syntax.
- Strong static type system with built-in [Structs], [Messages], and [maps], among others.
- First-class [maps] support, with many methods and a convenient [foreach statement][foreach] for traversing.
- Automatic (de)serialization of incoming messages and data structures.
- Automatic routing of [internal, external, and bounced messages][recvfun].
- Automatic handling of message types, including [binary, text, and fallback slices][recv].
- No boilerplate functions for [sending messages] and deploying child contracts.
- Reusable behaviors through [traits].
- Support for low-level programming with [asm functions][asmfun].
- Generation of [single-file TypeScript wrappers] for convenient interactions with compiled contracts, which include:
- Type definitions for [Structs] and [Messages] observable in the [compilation report].
- Corresponding storeStructureName() and loadStructureName() functions for (de)serialization.
- All global and contract-level constants.
- Bi-directional records of exit codes: from their names to numbers and vice versa.
- Opcodes of all [Messages].
- A contract wrapper class with various helper functions for initialization, deployment, and message exchange.
- Rich [standard library][stdlib].
- Extensive [documentation].
- Robust tooling.
- ...and there's much more to come!
[Structs]: https://docs.tact-lang.org/book/structs-and-messages#structs
[Messages]: https://docs.tact-lang.org/book/structs-and-messages#messages
[maps]: https://docs.tact-lang.org/book/maps
[foreach]: https://docs.tact-lang.org/book/statements#foreach-loop
[recv]: https://docs.tact-lang.org/book/receive/
[recvfun]: https://docs.tact-lang.org/book/contracts/#receiver-functions
[sending messages]: https://docs.tact-lang.org/book/send/#message-sending-functions
[traits]: https://docs.tact-lang.org/book/types/#traits
[asmfun]: https://docs.tact-lang.org/book/assembly-functions/
[single-file TypeScript wrappers]: https://docs.tact-lang.org/book/compile/#wrap
[compilation report]: https://docs.tact-lang.org/book/compile/#report
[stdlib]: https://docs.tact-lang.org/ref/
[documentation]: https://docs.tact-lang.org/
- Security audit of Tact by the Trail of Bits (2025, PDF)
- Backup link: PDF Report
Some selected software and applications based on contracts written in Tact, deployed in production, and consumed by end users:
###### Open source or source available
- Proof of Capital - Proof of Capital is a market-making smart contract that protects interests of all holders.
- See the security audit report by Nowarp.
###### Closed source
- Tradoor - Fast and social DEX on TON.
- See the security audit report by TonBit.
- PixelSwap - First modular and upgradeable DEX on TON.
- See the security audit report by Trail of Bits.
- GasPump - TON memecoin launchpad and trading platform.
See Tact in production on the Awesome Tact list.
- Awesome Tact
- Tact By Example
- DeFi Cookbook
- Documentation
- Changelog
The Tact compiler is distributed as an NPM package bundled with the Tact standard library.
The recommended Node.js version is 22 or higher, while the minimum version is 18.
Use your favorite package manager to install it into a Node.js project:
``shellyarn is recommended, but not required
yarn add @tact-lang/compiler
Alternatively, you can install it globally as such:
`shell
npm i -g @tact-lang/compiler
`It will make the
tact compiler available on your PATH, as well as:- a convenient
unboc disassembler of a contract's code compiled into a Bag of Cells .boc format.
- a formatter tact-fmt, which can format or check the formatting of individual Tact files and directories.$3
###### Extensions and plugins
- VS Code extension - Powerful and feature-rich extension for Visual Studio Code (VSCode) and VSCode-based editors like VSCodium, Cursor, Windsurf, and others.
- Get it on the Visual Studio Marketplace.
- Get it on the Open VSX Registry.
- Or install from the
.vsix files in nightly releases.
- Language Server (LSP Server) - Supports Sublime Text, (Neo)Vim, Helix, and other editors with LSP support.
- Intelli Tact - Powerful and feature-rich plugin for JetBrains IDEs like WebStorm, IntelliJ IDEA, and others.
- tact.vim - Vim 8+ plugin.
- tact-sublime - Sublime Text 4 package.
- Get it on the Package Control.###### Security
- Misti - Static smart contract analyzer.
- TON Symbolic Analyzer (TSA) - Static smart contract analysis tool based on symbolic execution.
###### Utility
- Formatter (
tact-fmt) — The official formatter. It ships with the Tact Language Server, VS Code extension, and as a standalone binary with the compiler. You can invoke it by running npx tact-fmt in your Tact projects.
- BoC Disassembler (unboc) — Disassembler for .boc files. Ships as a standalone binary with the compiler. You can invoke it by running npx unboc in your Tact projects.$3
For a quick start, read the "Let's start!" mini-guide in the Tact documentation. It uses the Blueprint development environment for writing, testing, and deploying smart contracts on TON Blockchain.
If you want more manual control, use tact-template. It's a ready-to-use template with the development environment set up, including the Tact compiler with TypeScript + Jest, a local TON emulator, AI-based editor support, and examples of how to run tests.
`shell
git clone --depth 1 https://github.com/tact-lang/tact-template
`Community
If you can’t find the answer in the docs, or you’ve tried to do some local testing and it still didn’t help — don’t hesitate to reach out to Tact’s flourishing community:
@tactlang on Telegram - Main community chat and discussion group.
- @tactlang_ru on Telegram _(Russian)_
- @tact_kitchen on Telegram - Channel with updates from the team.
- @tact_language on X/Twitter
- tact-lang organization on GitHub
- @ton_studio on Telegram
- @thetonstudio` on X/TwitterContributions are welcome! To help develop the compiler, see the contributing guide.
In addition, we invite you to create new educational materials in any form, help foster the community, and build new Tact contracts and projects. The best creations will be featured in awesome-tact and on social media.
Good luck on your coding adventure with ⚡ Tact!
MIT © The Tact Authors: Steve Korshakov; TON Studio.
[^1]: The "unique code" means that each contract in the data sample has at least one TVM instruction that differs from the other contracts, excluding many preprocessed wallets with everything inlined — even seqno and a public key for signature verification!