Disconnects and crashes are inescapable in a network-based multiplatform game. You will never, ever get rid of all of them. This is a fact of software development.
The consequences can range from mild irritation of having to restart a ride to ruining an event with hundreds or thousands of participants if the ride leader gets disconnected.
So, while all efforts to prevent and fix crashing and disconnects are appreciated, the most crucial thing is mitigation.
Zwift needs to allow reconnecting to all non-race events, and do so quickly. (Races too, ideally, but there’s a lot more nuance in that.)
The cool thing is that this already exists. It’s called Late Join.
As a zero-effort solution, Zwift could simply extend Late Join to cover the entire ride duration. This is a little simplistic — it would allow getting badges just joining the last 5 minutes, for example — so a slightly more elaborate implementation will for example keep a list of all riders in the event at the start (or when normal Late Join ends) and check whether the current user is in that group. If they are, they can use Late Join to reconnect to the event.
You can get a lot more elaborate, a lot more accurate, etc., etc., but this is a perfectly functional stopgap.
Nothing is ever entirely trivial when software is concerned, but this is about as close to it as features can get.
So, please, implement reconnect. If it existed, I would not have paused my sub for the summer: right now, with the amount of crashes I’m getting, I can’t lead or sweep rides — and that affects other people too.