TL;DR: You don't store data in blockchain, you store an URL that points to your data and keep it there.
The costs of doing an update transaction is just like any Bitcoin transaction, you'll have to pay whatever cost the network is expecting. Right now this seems to be 140 satoshis/byte (https://bitcoinfees.21.co/). So an update might come to about ¢40 if you want a quick 0-30 min update.
However, you wouldn't want to put messages in a chat app on the virtual chain. The virtual chain is meant to keep the domain name, public key and zone file hash. The zone file is in the routing layer and so you'd need to pay a transaction fee every time you want to update your zone file.
Messages for your chat app would be stored in the storage layer, you can store it in one of two ways, mutable or immutable. If you choose the former you'll just use the zone file to point to some bootstrap URL where you store stuff you need. You can change this as you want. If something is supposed to be unchangeable you can do a hash of this and store that hash in your zone file, then you can check that whatever you were linking hasn't been changed.
However, for most cases you'd use mutable storage. And in that case you just put a link in the zone file, and whatever resides as this link can be updated independently and as often as you wish. An example would be a JSON file listing chat API endpoints.
You can also read: https://forum.blockstack.org/t/question-about-mutable-storage/704/2
Image taken from https://blockstack.org/intro