Search code examples
javascriptmacosmacos-monterey

How to Detect macOS Big Sur and/or Monterey in JavaScript?


I am running macOS Monterey (12.2) with Safari 15.3. I am trying to use JavaScript in Safari (or Chrome) to programmatically determine the version of macOS installed.

When I run the following command:

var nAgt = navigator.userAgent;

I get the following results:

Safari

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15

Google Chrome

Mozilla/5.0 (Macintosh; Intel Mac OS X10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Why am I seeing 10_15_7? Should I not be seeing 12_2 somewhere?


Solution

  • User agent string is no longer reliable in future versions of Mac OS and Windows (11). You should look into client hints API for javascript. Some references for context and the future solution:

    https://www.otsukare.info/2021/02/15/capping-macos-user-agent

    https://help.duo.com/s/article/6627?language=en_US

    https://web.dev/user-agent-client-hints/

    https://browserleaks.com/client-hints

    The new API doesn't work for all browsers yet. So until the world catches up, the detection for new OSes is best effort.