• About Us
  • Blog
  • Basket
  • Account
  • Sign In


Apple iOS 12.2 degrades device detection accuracy

Published on Tuesday, April 2, 2019

Apple iOS 12.2 degrades device detection accuracy

iOS 12.2 removes the GPU model name

Update: We have now released an open source solution which will enable web developers and analysts to accurately identify Apple devices once again.

Find out more

With the release of iOS 12.2, Apple have altered the values returned from WebGL in such a way as to prevent the precise iPhone or iPad model of an iOS device being obtained in JavaScript.

When sending a request to a website, most devices will include codes indicating the device model in the form of the User-Agent HTTP header. However, iOS devices send a User-Agent that only contains ‘iPhone’ or ‘iPad’, rather than any details about the specific model.

For example, below are the User-Agents for a Samsung Galaxy S10 and an iPhone XS Max. Note; the 51Degrees User-Agent tester page correctly returns the Samsung model but returns a number of possible iPhone models.

Samsung Galaxy S10
Samsung Galaxy S10
Samsung Galaxy S10 User-Agent Tester Page

Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G973F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.0 Chrome/67.0.3396.87 Mobile Safari/537.36

iPhone XS Max
iPhone XS Max
iPhone XS Max User-Agent Tester Page

Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366

51Degrees uses evidence obtained from JavaScript to supplement that obtained from the HTTP headers. A full explanation of the techniques used for Apple devices is available here.

In summary:

  1. JavaScript can get the screen height, width and pixel ratio.
  2. The WebGL API can be used to get the name of the GPU the device is using.

The combination of these two pieces of information can be used to identify the individual iPhone or iPad model in most cases.

With iOS 12.2, the WebGL approach is now returning the same data across all Apple devices. For example, an iPhone X running iOS 12.1 will return ‘Apple A11 GPU’ and correctly identify the device as an iPhone X.

iOS 12.1 iPhone X using an A11 GPU
iOS 12.1 iPhone X using an A11 GPU

However, when running iOS 12.2, the same device will return ‘Apple GPU’ - the critical "A11" is missing. This prevents device detection from identifying the individual model, though either an iPhone X or iPhone XS can be determined using the screen information.

iOS 12.2 iPhone X returning generic Apple GPU
iOS 12.2 iPhone X returning generic Apple GPU

Apple’s removal of the precise GPU model prevents all device detection solutions from determining the specific device model in using this GPU model technique.

Clearly this is an intentional change from Apple. Indeed, Apple’s unwillingness for their devices to expose any information that could be used to determine the model appears to be related to an initiative to enhance privacy by preventing device fingerprinting. Given the popularity of iPhone and iPad combined with the relatively limited number of models - compared to Android - 51Degrees are unsure if the removal of GPU model information really will have an impact on privacy. Particularly given the amount of information that apps installed via the App Store are able to obtain.

51Degrees will continue to investigate additional methods for determining the individual model of iPhone or iPad. However for the time being Apple have disabled the most common method of achieving precise model granularity.

Comments (0)

Author: Benjamin CB

Categories: Device Data, News

Tags: Apple , iOS , iPhone , ipad

Benjamin CB

Benjamin CB

Other posts by Benjamin CB
Contact author



.NET 4G 51Degrees 5G Acer Adform Adtech Advertising Afilias Alcatel Amazon AMP Analysis Analytics Android Apache API Apple Asian Market ASP.NET Asus Blackberry Browser C C# Centro Chrome chromium Client hints Cloud CMS CPU CSS3 Data Data Blog Data File Daydream Design Detection Developers Device Device Data Device Detection Device Intelligence Device Models Device property DeviceAtlas Disney dmexco DotNetNuke Download ebay Ericsson Event Facebook Firefox Foundation Framework Galaxy git repositories Google Google Analytics Google Daydream GPU GSMA Guess HAProxy Hash Trie HTC HTML5 HTTP HTTP Headers Huawei Infinix Ingeniux Internet usage iOS iOS 13 ipad iPadOS iPhone iPhone 11 Java Javascript Kentico LG Liferay LTE m.dot Memory Memory leak Meta Data Microsoft Mobile Mobile Analysis Mobile Analytics Mobile Devices Mobile Marketing Mixer Motorola Mozilla MWC MWC 2017 MWC16 Native Apps NET New Release News Nexus NFC NGINX Nokia OnePlus 5 Opera Operating System Oppo Optimisation OS Patent Performance PHP Press Release Price Band programmatic Publishers Python Redirection Research Responsive Images Responsive web design RESS Review RTB RWD Safari Samsung Scala ScientiaMobile SEO Server Server-side optimisation Seznam.cz Sitecore Smart TV Smartphone Smartwatches Sony Swedish Beers Tablet Tencent Testing Tips Tutorial Umbraco Update User Agent User-Agent Valgrind Varnish Varnish Cache Video Vodafone VoLTE Web Web Apps Web content management Webtrekk White Paper Widgets WiFi Windows WURFL Xiaomi Xperia ZTE