Start here. This is the direct spoken answer to practice first.
Why this question matters
Events become long-lived contracts once other teams or services consume them. Schema changes need more care than changing an internal class.
I would prefer backward-compatible, additive changes where old consumers can ignore new fields. The event keeps its meaning, and new consumers can use the new data when ready. Removing fields, changing field meaning, or changing types is risky because old consumers may fail or behave incorrectly. For breaking changes, I would introduce a new event version or new event type and run both during migration.