demo · v139

Upgrade Nudge

Server-side, what should your site do when a visitor's Chrome is stuck on macOS 11? This demo reads Sec-CH-UA-Platform-Version via User-Agent Client Hints, classifies the OS, and shows the in-page banner you'd render in each branch.

Pick a value or click "Detect" to read your own Client Hints.

Rendered banner (what your visitor would see):

platform

version

raw HTTP headers

Chrome only sends these high-entropy hints if you opt in. Send Accept-CH: Sec-CH-UA-Platform-Version back in your first response, and subsequent navigations include the version.

the server-side decision

// Express middleware sketch
app.use((req, res, next) => {
  res.setHeader("Accept-CH", "Sec-CH-UA-Platform-Version");
  res.setHeader("Critical-CH", "Sec-CH-UA-Platform-Version");
  const platform = req.get("sec-ch-ua-platform")?.replace(/"/g, "");
  const ver = req.get("sec-ch-ua-platform-version")?.replace(/"/g, "");
  if (platform === "macOS" && parseInt(ver, 10) <= 11) {
    res.locals.osWarning = "chrome-frozen-on-bigsur";
  }
  next();
});

see also