OS detection with userAgentData
Chrome 93 (sync)
function isMac() { return navigator.userAgentData && navigator.userAgentData.platform ? navigator.userAgentData.platform === 'macOS' : /Mac|iP/.test(navigator.platform); }
In Chrome 93 the platform
string was demoted to
a low entropy hint, and low
ones are now available synchronously. So we check if platform
is truthy only for handling Chrome 92.
Chrome 92 (async)
async function isMac() { if (navigator.userAgentData) { const ua = await navigator.userAgentData.getHighEntropyValues(['platform']); return ua.platform === 'macOS'; } return /Mac|iP/.test(navigator.platform); })
In Chrome 92, platform
was considered a high entropy hint,
so it needed to be queried asynchronously.