After finishing a Zwift ride, the automatic upload to Strava never fails (for me at least). However, the automatic upload to Garmin Connect fails both for me and my partner very often. There’s a fix. You can download the .fit file from the my.zwift.com and manually upload to Garmin Connect.
However (and this is the bug). Having downloaded the .fit file, the upload fails unless the local time (say UTC-5 for New York) is after the local time where you’re uploading (say UTC for me). So if I ride in London or Innsbruck (UTC+1) and the Garmin upload fails, I can always upload manually to Garmin. However, if I ride in New York, Richmond or Wattopia then I have to wait up to 12 hours before the upload will be accepted. Otherwise the Garmin website says “upload failed”. This is a reproduceable bug.
When the ride actually does upload, the times of the ride and the timezones are all correct though.
This is a pretty gnarly bug and may have something to do with using UTC times in the .fit file but the header not using UTC times and therefore Garmin thinks that you’re trying to upload a ride in the future.