On-chain chat
Chat is one of those social features that everyone takes for granted. It doesn't matter if it's a social media website, a mobile game, or even a banking app. There's a common set of features that are just expected and understood by most people.
There's good reason for this. Because these types of features are so ubiquitous, you don't have to explain how they work. Sure, you can invent your own communication experience, but you don't need to fix something that isn't broken.
There are too many people in the blockchain space that love reinventing the wheel. Just because it's traditional, it can be made new. Just because it's centralized, it can be decentralized. Just because it's handled off-chain, it can be moved on.
If you're building dApps and protocols as a hobby, have fun. Go for it. If you're trying to build a successful business, you have to make trade offs with how you spend your time and money.
Don't build chat from the ground up.
It doesn't need to be decentralized. Don't get me wrong, if you can use decentralized infrastructure easily, go for it, but scalability and cost may become issues pretty quickly. The real requirement is privacy and security. You can accomplish that with plain old encryption.
It doesn't need to be on chain. Chat data tends to be extensive. Even if you're not paying for block space, it's still wasteful to store on chain. The only thing you need is the addresses and signatures of your users. That's everything you need for a blockchain-native experience. The actual data can use traditional web2 infrastructure.
Ideals are important, but don't spend too much time worrying about things that don't improve trust, user experience, or your bottom line.
-Luke
P.S. this applies to chat, notifications and alerts, and so much more.