I am building a CQRS-based application with Kafka Streams. For most entities in my application this entails event sourcing: capturing state mutations as events and transforming them into state which can be queried. The events are stored forever so they can be re-processed into state.
However, one of my entities is frequently changing. It is a "Message" type. The end-user makes changes to the message draft in the UI, and these changes are transmitted to the backend as patches. The UI auto-saves after a few seconds of user inactivity. So as the user edits a message, many patch events are generated. I imagine a message may involve hundreds or thousands of mutations.
I am wondering, should I store all these events? I can just as easily only store mutated state for this entity, and save space. Alternatively, I can store all the patch events, but then I have to store all these events that are probably not going to be useful for me to ever replay. At least, I can't think of any reason I'd want to replay them. But... who knows? I can't imagine caring about each message as it evolves, but at the same time I wonder, will I regret not storing these mutations as events?
What should I do? Store all the events or just the state?