
Flow has rolled out an important upgrade that significantly enhances how NFTs can move between Flow's Cadence Virtual Machine (Flow-Cadence) and the Flow Ethereum Virtual Machine (Flow-EVM). This update doesn't just enable cross-VM bridging—it gives developers fine-grained control over how NFTs are represented when they move between environments.
Beyond Generic Bridging: Custom NFT Associations
Previously, bridging NFTs between VMs typically meant that the bridge deployed a standardized or generic bridged representation of the original asset that the developer has no control over. For example, an NFT transferred from Flow-Cadence to Flow-EVM would appear as a standard ERC721 with limited metadata and functionality. This is useful, but not ideal for NFTs that rely on rich metadata, custom logic, or extended standards.
With this upgrade, already live on Flow testnet and coming to mainnet May 27th, Flow now supports custom NFT associations. This means developers can define exactly how their NFTs should be represented in the VM the asset is being bridged to:
- Developers can define custom NFT contracts for their bridged NFTs that they retain control of instead of the bridge being in control
- Developers can tailor metadata schemas for their NFTs that utilize CrossVM Metadata Views and more
- Developers can support additional NFT standards in the EVM version of their Cadence NFTs.
These abilities mean that standards such as ERC721c, which enforces royalties for NFT secondary sales, can now be supported by bridged Cadence NFTs. This ERC721c standard is not only important and useful for creators, but also required to be compatible for listing on some marketplaces and 3rd party platforms.
Developers can specify these associations in Cadence by implementing a set of interfaces in their contracts and registering them through the FlowVMBridge contract. This ensures that when an NFT is bridged, it appears in the destination VM not as a generic stand-in, but as a project-defined, functionally equivalent asset.
Learn more about how to do this via this guide. Developers can dive in today to experiment with it on Flow testnet, ahead of the mainnet deployment on May 27th.
Developers who have bridged NFTs from before this upgrade also have a path to take advantage of this feature. Any developer with an existing NFT project that already has a bridge-defined NFT in the non-native VM from before this update can register a new association in the bridge to their custom contract. After the new contract is registered, the bridge will automatically convert the existing bridge-defined assets to the proper upgraded versions the next time that they are bridged between VMs.
This gives developers on Flow the freedom to maintain branding, structure, and utility across Flow-Cadence and Flow-EVM, which is critical for complex applications like games, ticketing platforms, and dynamic art.
Why This Matters
For builders, this is a huge step toward true interoperability without sacrificing identity or function. Projects no longer have to compromise on how their NFTs are presented or behave when they cross VM boundaries. And for users, it means a more seamless experience when interacting with assets across Flow and EVM networks.
This upgrade takes the ability to supercharge your apps even further, as cross-VM builders now have more control of how the assets they create display across both environments.
How You Can Upgrade Your Project
Here are some resources for you to take advantage of this new feature:
Original FLIP proposing the change: https://github.com/onflow/flips/blob/main/application/20250131-cross-vm-nft-support.md
VM Bridge Docs (see Custom Associations section in particular): https://developers.flow.com/tutorials/cross-vm-apps/vm-bridge
VM Bridge Repo: https://github.com/onflow/flow-evm-bridge
Flow's cross-VM custom NFT association upgrade is more than just a bridge—it's a framework for projects to extend their assets across ecosystems without losing what makes them unique.