Best Practice to get track of balance change in transaction blocks

Hi friends, I found the RPC method sui_getTransactionBlock does not garantee to provide the “balanceChange” object as old version of coin objects may be pruned from RPC nodes after some time. Is there an index API that can provide the balanceChange information permanently?

If there’s no suck permenent API, what’s the best practice to get the balance change after the data is pruned? Do I have to keep track of all objects related to my wallets? or can I simply derive it from the tx block itself? Is it reliable? Thank you!