This technic I used only for private networks because it's expensive in Ethereum Mainnet, however, once cheap L2 solutions are so popular now, I decided to share this. Blockchain explorers understand very well what is going on only in standard well-known types of contracts and show data in a human-readable way. But all other contracts unfortunately are not readable in the explorer interface. To fix this we can save formatting options inside a smart contract.
Metadata can also keep some other important messages, descriptions, instructions, or even advertizement. Third-party applications can implement subscription to metadata changes you are interested in or just show actual ones. If your contract ABI is intuitively understandable then you might not even need any UI and your application will be truly decentralized.