Post
Share your knowledge.
What are the best practices for writing high-performance Move modules on Sui?
What are the best practices for writing high-performance Move modules on Sui?
- Sui
Answers
5Versioning: Always maintain a clear versioning scheme in your package metadata and documentation so integrators know what changed.
mutable – cannot ever be upgraded.
compatible – only backward-compatible changes are allowed (e.g., adding new functions, but not changing existing signatures).
custom – more flexible, you can implement custom checks for upgrades.
Upgrade Flow The upgrade process is two-step:
Prepare Upgrade → Validate the new version against the chosen policy.
You write high-performance Move modules on Sui by keeping your logic object-centric and minimizing unnecessary state updates. Design your objects so that transactions only touch what they need, since Sui’s parallel execution performs best when conflicts are rare. Use capabilities for fine-grained access control instead of large shared states, and avoid deep object nesting that can slow down lookups. Emit events for off-chain tracking rather than storing full histories on-chain to save gas and storage. Keep functions small, predictable, and use clear invariants so the Move Prover can optimize verification. Benchmark with dev-inspect to profile gas usage and restructure code when you find hot spots.
Read more here: Best Practices for Move on Sui.
Minimize storage reads/writes to reduce gas and improve speed
Use value types over references when possible
Keep object structures simple and avoid deep nesting
Avoid redundant logic and reuse computed values
Limit cross-object dependencies to enable parallel execution
Profile gas usage to spot expensive operations
Design efficient entry functions and delegate logic internally
Simplify access control to keep logic clean and fast
Do you know the answer?
Please log in and share it.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

- ... SUIMatthardy+2185
- ... SUIacher+1762
- ... SUIKurosakisui+1380
- ... SUIChubbycheeks +1176
- ... SUIjakodelarin+1157
- ... SUITucker+1087
- ... SUIzerus+888
- Why does BCS require exact field order for deserialization when Move structs have named fields?65
- Multiple Source Verification Errors" in Sui Move Module Publications - Automated Error Resolution55
- How to Maximize Profit Holding SUI: Sui Staking vs Liquid Staking414
- Sui Transaction Failing: Objects Reserved for Another Transaction49
- Sui Move Error - Unable to process transaction No valid gas coins found for the transaction316