What is the best way to learn Sui Move?
November 7, 2026
Start with The Move Book at move-book.com. Mysten Labs maintains it, it teaches the current Move 2024 edition, and it covers Sui's object model rather than generic Move. Alongside it, work through the "Hello, World!" guide on docs.sui.io to install the CLI and publish a package to testnet. Then learn by building: write small packages, unit test them with sui move test, and read the official examples and the Sui Move bootcamp code.
A practical order
- Set up the toolchain. Install the Sui CLI and the VS Code Move extension. Get testnet SUI from a faucet or the playground on this site at /play.
- Publish something. Follow the docs' Build and Publish a Package guide end to end:
sui move new,sui move build,sui client publish, then call a function. - Read The Move Book in order. The basics chapters cover modules, structs, abilities, generics and testing. The object model and "Using Objects" chapters cover what makes Sui different:
UID,key/store, ownership and transfers. - Learn the object model properly. Most early bugs come from misunderstanding ownership. Read What is an object on Sui? and What kinds of object ownership does Sui have?.
- Write tests from day one.
#[test]functions andsui::test_scenariolet you simulate several transactions and senders without touching a network. - Study real code. Read the framework sources (
coin.move,transfer.move,dynamic_field.move) and the example packages in the Sui repo.
Resources worth your time
- The Move Book and The Move Reference (also at move-book.com) for language details.
- docs.sui.io for Sui concepts: objects, PTBs, packages, upgrades.
- Sui Move bootcamp, Mysten's lesson repo. The docs' Example Apps page links its lessons on capabilities, derived objects, scenario testing, a dApp Kit frontend and an event indexer.
- examples/move in the Sui repo: small packages such as
color_object,coin,dynamic_fields,transfer-to-object,heroandflash_lender. - Sui framework sources, the most reliable reference for what a function actually does.
What to watch out for
- Outdated tutorials. A lot of Sui content online predates Move 2024. If you see
struct Foo has key {}withoutpublic,frienddeclarations, ormodule a::b { ... }everywhere, the code is old. See What changed in the Move 2024 edition?. - Old SDK code. Frontend tutorials often use the v1 TypeScript SDK (
SuiClient,getFullnodeUrl) and JSON-RPC, which public mainnet fullnodes no longer serve. Use@mysten/suiv2 with gRPC or GraphQL. - Aptos Move material. Aptos Move uses global storage (
move_to,borrow_global). Sui Move doesn't, so Aptos tutorials teach patterns you can't use on Sui.
Practice projects
Good first projects, roughly in order: a counter as a shared object, a custom coin with coin_registry::new_currency_with_otw and a one-time witness (how), an NFT with Display metadata, an escrow swap, and a small marketplace using dynamic fields. Each one exercises a different part of the object model.
Sources
- The Move Book
- Build and Publish a Package, Sui documentation
- Example Apps, Sui documentation
- MystenLabs/sui-move-bootcamp on GitHub