suideveloper
All questions
Sui Move

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

  1. 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.
  2. 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.
  3. 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.
  4. 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?.
  5. Write tests from day one. #[test] functions and sui::test_scenario let you simulate several transactions and senders without touching a network.
  6. 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, hero and flash_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 {} without public, friend declarations, or module 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/sui v2 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

More on sui move