Post
Share your knowledge.
All you need to know about Move Registry
If you’re a developer building in the Sui ecosystem, or just starting to explore the power of the Move language, it’s time to get familiar with something that will completely change how you manage, integrate, and trust smart contracts: the Move Registry (MVR).
Developed by Mysten Labs, MVR is an onchain package management system — kind of like npm for Move — but built specifically for the decentralized, composable world of Sui. It brings sanity and structure to a space that previously felt chaotic and cryptic. No more digging through object addresses. No more guessing what version of a package you’re using. With MVR, you’re working with real names, reliable metadata, and onchain transparency by default.
Except it’s not just a registry. It’s infrastructure for a radically interoperable world.
The Pain Before MVR
Before MVR, calling into external packages in Move felt like spelunking through raw hex strings.
You had to manually copy-paste long object addresses, track version updates by hand, and pray you didn’t mix up environments when flipping between testnet and mainnet. The developer experience, while powerful, was definitely not beginner-friendly. It wasn’t even dev-friendly.
This friction didn’t just waste time. It introduced bugs, slowed down onboarding, and made codebases harder to maintain especially in teams.
You might’ve written a transaction like this:
transaction.moveCall({
target: "0xe177697e19...::accessories::equip",
typeArguments: [
"0x80d7de9c4a5...::suifren::SuiFren<0x297d8a...::bullshark::Bullshark>"
],
arguments: [...]
});
You’d have no idea what each of these addresses really meant unless you documented them carefully and let’s be honest, we rarely do.
Enter the Move Registry
MVR solves all of that. With MVR, you don’t need to remember or manage raw object addresses anymore. Instead, you write:
transaction.moveCall({
target: "@suifrens/accessories::accessories::equip",
typeArguments: [
"@suifrens/core::suifren::SuiFren<@suifrens/core::bullshark::Bullshark>"
],
arguments: [...]
});
Readable. Traceable. Semantic. That’s what developer-first design looks like.
But MVR goes beyond naming. It introduces real package versioning, dependency resolution, and onchain metadata that makes it possible to reason about the code you’re importing. You can lock to a specific version, follow the latest stable, and easily test across networks without rewriting code.
Because it’s integrated with SuiNS, every package name is verifiable, owned onchain, and persistent. No one can spoof it. You own what you publish.
Real Usage, Real Transparency
One of the biggest wins MVR brings is visibility.
In Web2, we had stars and forks. In Web3, we need more than that. MVR tracks real onchain usage not just downloads, but actual interactions, dependencies, and indirect relationships. This means you’ll soon be able to see which packages are actually being used in production, which ones are composable, and who’s building the foundational libraries that power the entire Sui ecosystem.
Mysten Labs is even launching a global MVR Leaderboard to highlight which packages are the most trusted and reused — giving maintainers the credit they deserve, and builders the confidence they need when choosing dependencies.
Metadata That Matters
Every MVR package can include more than code. You can associate your registry entry with your GitHub repo, docs, logo, website, and even a contact point. This makes it easier for teams to verify what they’re integrating, for contributors to get in touch, and for the ecosystem to understand who owns what.
It also helps defend against malicious clones and rugpull codebases pretending to be something they’re not. With proper metadata and onchain ownership, trust becomes composable too.
For Devs, By Devs
MVR is built with the developer in mind. It’s not some abstract standard or “eventually useful” tool. It’s something you can use right now to clean up your contracts, improve maintainability, and simplify your integration workflows.
If you’re writing reusable libraries, register them on MVR. If you’re building a production app, switch to named packages. If you’re working with other teams, make MVR part of your launch checklist.
It’s not just about discoverability. It’s about scaling collaboration in an open ecosystem.
Under the Hood
Move Registry (or MVR, pronounced “mover”) works as a uniform naming service and registry across both Mainnet and Testnet. Whether you’re writing PTBs, composing complex Move types, or integrating third-party packages, MVR handles the hard part: mapping clean names to the correct onchain addresses.
You can:
- Reference both packages and types by name.
- Automatically resolve dependencies.
- Lock in versions — or ride the latest update stream.
- Move seamlessly between networks.
If you don’t specify a version, MVR will default to the latest available, making updates seamless for many use cases.
There’s also a fallback strategy for resiliency: since MVR is currently powered by an experimental indexer, developers are advised to structure apps so that even if the indexer is temporarily down, critical functionality won’t break. You can:
- Use fallback addresses in your TypeScript SDK integration.
- Design for partial availability.
- Track the registry repo for updates and improvements.
And the web interface is live at moveregistry.com/apps — where you can register, explore, and integrate packages from across the ecosystem.
- Sui
- Architecture
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

- 24p30p... SUI+78
1
- MoonBags... SUI+71
2
- Meaning.Sui... SUI+43
3
- ... SUIJojo+34
- ... SUIOpiiii+31
- ... SUI0xduckmove+20
- ... SUIHaGiang+20
- ... SUIfomo on Sui+16
- ... SUI
- ... SUI
- Why does BCS require exact field order for deserialization when Move structs have named fields?53
- Multiple Source Verification Errors" in Sui Move Module Publications - Automated Error Resolution43
- Sui Transaction Failing: Objects Reserved for Another Transaction25
- How do ability constraints interact with dynamic fields in heterogeneous collections?05