Why Android Fragmentation Broke Device Detection
Device detection on Android depends on a model identifier inside the platform comment. Turning that identifier into something recognisable requires knowledge the string does not contain.
The model field is a manufacturer code
What appears in the string is the internal model designation the manufacturer assigned, not the name the device was sold under. The two are unrelated as text.
Manufacturers choose these codes freely. Some are systematic, some are project names, and none follow a convention shared across vendors.
No parser can derive a marketing name from the code. It must look it up in a table someone assembled from manufacturer information.
One product may have many codes
A single sold device often exists as several model codes, differing by region, carrier, memory configuration or radio hardware.
Each variant produces a distinct string, and a table missing one variant fails to identify a device it otherwise knows well.
This is why device coverage tends to be strongest for widely distributed models and weakest for regional variants of the same product.
The number of devices is enormous
The open licensing model means many manufacturers ship many models each year, including regional brands that never appear in international datasets.
Coverage is therefore always partial, and the gaps concentrate in markets that dataset maintainers have less visibility into.
A detection system reporting high coverage globally may perform much worse for a site whose audience is concentrated in one of those markets.
Builds and skins add further variation
Vendor customisations can alter the build identifier and occasionally the surrounding fields, so two devices of the same model differ in the string.
Rules written against one vendor's format may fail on another's without any of the underlying facts being different.
Parsers handle this by matching the model code loosely and ignoring surrounding variation, which works until a vendor changes the position of the field.
What the identification is actually for
Most uses of a device model come down to inferring screen size, capability or hardware class. All of those can be measured directly in the browser.
The model is genuinely necessary only for cases tied to a specific device, such as a known hardware defect or a support workflow that needs the product name.
Because those cases are narrow, the practical advice is to measure what you need where possible and reserve model lookup for the situations that truly require the identity.