Summary
The marketing homepage (/) throws a React error #412 (hydration mismatch) that prevents unauthenticated users from clicking through to sign in / navigate the app. The error reproduces in incognito windows across multiple browsers, so it isn't caused by extensions.
Environment
- Deployment: self-hosted via
ghcr.io/elie222/inbox-zero:latest, no local fork
- Container commit (last confirmed broken):
5082d20a4 (org.opencontainers.image.revision), built 2026-08-26T11:47Z
- Also reproduces on
124948f79 (previous build)
- Runtime: Node 22 in the upstream image, standard Docker Compose stack (
db, redis, serverless-redis-http, web, cron, cloudflared)
- Ingress: Cloudflare Tunnel (no reverse proxy modifying headers)
- Auth: Microsoft Entra (Outlook only) —
AUTH_ALLOWED_EMAIL_DOMAINS set
NEXT_PUBLIC_BYPASS_PREMIUM_CHECKS=true, NEXT_PUBLIC_DIGEST_ENABLED=false, QUEUE_BACKEND=bullmq
Repro
- Fresh incognito window
- Navigate to
https://<self-hosted-domain>/
- Console immediately logs:
Minified React error #412; visit https://react.dev/errors/412 for the full message
- Page renders but interactive elements (login link, hero CTAs) never wire up — clicking does nothing.
- Confirmed in two independent browsers.
Impact
Unauthenticated users are effectively locked out — they cannot reach /login from the homepage. Existing sessions may be fine because they land elsewhere; the outage is for anyone trying to sign in fresh.
Workaround
Direct-navigate past the marketing homepage:
https://<domain>/mail ← works
https://<domain>/automation
https://<domain>/login
Once past /, the app works normally.
Suspected area
Landed in the recent homepage refactor. Only marketing-side fix I could see between our previous-known-good and the broken build is:
241aa11fd Fix homepage organization schema placement (#3390)
Commit 241aa11fd is inside the broken build, so it's either that commit's implementation or something else in the same route. React error #412 is specifically "Hydration failed because the server rendered HTML didn't match the client" — so a candidate is any homepage element that renders based on Date.now(), Math.random(), window/document presence, or a mutation-during-render pattern in the marketing components.
What I've ruled out
- Not browser-extension related (fresh incognito, two browsers, one reproducer per session)
- Not Cloudflare / edge-caching (curl also serves the same HTML with dynamic bits that likely mismatch on client render)
- Not local fork changes (running upstream
:latest unmodified)
- Not stale image cache (reproduces after
docker compose up -d --force-recreate web)
Happy to grab screenshots, HAR, or full page HTML if useful. Thanks!
Summary
The marketing homepage (
/) throws a React error #412 (hydration mismatch) that prevents unauthenticated users from clicking through to sign in / navigate the app. The error reproduces in incognito windows across multiple browsers, so it isn't caused by extensions.Environment
ghcr.io/elie222/inbox-zero:latest, no local fork5082d20a4(org.opencontainers.image.revision), built 2026-08-26T11:47Z124948f79(previous build)db,redis,serverless-redis-http,web,cron,cloudflared)AUTH_ALLOWED_EMAIL_DOMAINSsetNEXT_PUBLIC_BYPASS_PREMIUM_CHECKS=true,NEXT_PUBLIC_DIGEST_ENABLED=false,QUEUE_BACKEND=bullmqRepro
https://<self-hosted-domain>/Impact
Unauthenticated users are effectively locked out — they cannot reach
/loginfrom the homepage. Existing sessions may be fine because they land elsewhere; the outage is for anyone trying to sign in fresh.Workaround
Direct-navigate past the marketing homepage:
https://<domain>/mail← workshttps://<domain>/automationhttps://<domain>/loginOnce past
/, the app works normally.Suspected area
Landed in the recent homepage refactor. Only marketing-side fix I could see between our previous-known-good and the broken build is:
241aa11fd Fix homepage organization schema placement (#3390)Commit
241aa11fdis inside the broken build, so it's either that commit's implementation or something else in the same route. React error #412 is specifically "Hydration failed because the server rendered HTML didn't match the client" — so a candidate is any homepage element that renders based onDate.now(),Math.random(),window/documentpresence, or a mutation-during-render pattern in the marketing components.What I've ruled out
:latestunmodified)docker compose up -d --force-recreate web)Happy to grab screenshots, HAR, or full page HTML if useful. Thanks!