Transfered NFT but GetNFTsForContract is very slow to update the nft balance

Hello!

I´m transfering an NFT using the method
await Moralis.transfer(options).

But after tx confirmation, it takes few minutes to update the NFT balance using the method
await Moralis.Web3API.account.getNFTsForContract(options); (I´m using rinkeby node)

I just read about Moralis Nitro:
“Moralis Nitro also introduces a breaking change in that it removes TokenBalance and NFTOwners tables. Most of our users already use the Moralis.Web3API to fetch token balances or NFT owners.”

There is any solution to improve the balance query results just after the transfer?

can. you check the delay between the time when the transaction was mined on chain and when it was returned by the API?

Between 40secs and 2 minutes.

I just notice that when I transfer from wallet A to wallet B, immediatly after metamask confirm the transaction, wallet B shows the transfered NFT. But wallet A keeps listing the same token for this 2 minutes duration. It´s a weird situtation because you transfered, you have a confirmation, but it keeps in your list. Any Idea what should I do to avoid this situation?

on what chain did you test that?

I´m testing on Rinkeby

Update for those having the same problem:
After having a lot of problems using getNFTs and getNFTsForContract (this last one started to show wrong balances and sometimes I had to wait up to 10 minutes to update the balances), I´m using now Moralis.executeFunction to get directly the NFT data on ERC721 contract, updates immediately after minting/transfers without wrong balance data:

let NFTs = [];
const balance = await Moralis.executeFunction({contractAddress: settings(chainId).contractAddress, functionName: "balanceOf", abi, params: { owner: account }});
for (let i = 0; i < balance; i++){
  const id = await Moralis.executeFunction({contractAddress: settings(chainId).contractAddress, functionName: "tokenOfOwnerByIndex", abi, params: { owner: account, index: i }});
  const data = await Moralis.executeFunction({contractAddress: settings(chainId).contractAddress, functionName: "tokenURI", abi, params: { owner: account, tokenId: id }});
  NFTs.push({token_id: id, token_uri: data});
}
setUserNFTs(NFTs); //populate

I wish getNFTsForContract get some fix to do this work for us!

there are some problems that we have now with rinkeby in particular

I understand, I tried also in BSC Testnet, it´s faster but the same behavior/bug I described happens. I suppose Web3API runs in a different node and when we call some other Moralis functions it works in our node, so if this is the case then this asynchrony will always happen when we start mixing these different forms.