The product meeting
had a chart.
Operating systems
of our customers.
Windows 10
was the biggest slice by far.
Windows 11
did not appear at all.
Somebody suggested
we could stop testing on it.
The chart was built
from the user agent string,
the line of text
every browser sends
with every request.
And on Windows,
every browser
had been sending Windows NT 10.0
for both.
Windows 11
never got its own number there.
The string could not tell them apart,
so the chart could not either.
That is not an accident.
It is the direction
the whole web is going.
The user agent string
told every site
a lot about you,
and that made it
a tool for tracking.
So browsers
started telling less.
Chrome now sends
its major version
and zeros after it.
On Android
it no longer sends your phone model,
just one letter.
Mac browsers
say Mac OS X 10_15_7,
whatever version you run,
even on Apple's own chips,
where the string still says Intel.
The detail is not gone.
It moved.
Chromium browsers
offer client hints.
Your server asks
for the specific detail it needs,
and the browser decides
whether to send it.
Firefox and Safari
do not support them,
so the old string
is all you get there.
So stop reading the string
for decisions.
If your code wants to know
whether a feature works,
test for the feature.
If your analytics
want the operating system,
ask through client hints
where they exist,
and label the rest
as unknown,
not as the old version.
And look for every place
that parses that line of text.
Version checks.
Bot rules.
Fraud scores.
The support form
that fills in the browser
for the customer
and gets it wrong.
Each one is reading a string
that is being emptied
on purpose.
The browser has stopped
introducing itself.
Ask it what it can do instead.
– Serguey Asael Shinder
Top comments (0)