I’m working with NFTs on MultiversX and noticed something strange. When I mint NFTs using the exact same smart contract code, I get different results depending on which network I use.
On devnet, my NFTs show up with all the expected data fields like attributes, URIs, and creator information. But when I deploy the same contract on testnet and mint NFTs there, these fields are completely missing from the response.
It seems like any data that uses ManagedBuffer, ManagedVec, or ManagedAddress types doesn’t appear in the testnet results. The smart contract executions complete successfully on both networks without any errors.
Has anyone else experienced this issue? Could this be related to API differences between the networks, or am I missing something in my contract setup?
yeah, totally a common testnet prob. the indexing sometimes gets delayed or misconfigured compared to devnet. I’ve found just waitin a bit helps - the metadata tends to show up after a few hours. alternatively, you can hit the contract storage directly instead of the API. devnet’s way more reliable.
Had the exact same issue last month - turned out to be a version mismatch between API endpoints. My testnet was running an older gateway service that couldn’t parse certain managed types from contract responses. Your contract runs fine, but the API layer can’t decode and return the metadata fields properly. Check your testnet gateway version against devnet. I switched to a different testnet gateway URL and that fixed it completely. It’s not your smart contract code - it’s how the network’s API handles response formatting for those data types.
Hmm, this is really interesting - are you using the same wallet/account setup on both networks when minting? I’m wondering if there might be permission or authentication differences affecting how the contract stores or retrieves metadata.
Also curious about your contract storage - when you say the ManagedBuffer and ManagedVec data is missing, are you checking through API responses or have you tried querying contract storage directly? Sometimes it’s not the contract but how different network configs handle data serialization.
What version of MultiversX framework are you using? And more importantly - when you deploy on testnet, are you using the exact same build artifacts or recompiling? I’ve seen weird edge cases where slight compilation differences cause these inconsistencies between networks.
Have you tried minting just one simple NFT with minimal metadata first? Might help narrow down whether it’s all managed types or just specific ones that are problematic on testnet.