I&#x27;m sorry, but I still find the user agent string to be <i>incredibly useful</i> despite it&#x27;s many shortcomings.<p>Not so much for deciding what to serve to a request, but moreso to analyze your audience and figure out from a technical perspective what is feasible and what is not. For example, a recent decision I made was to decide whether or not to rewrite a portion of our application in a javascript framework that did not offer IE8 support. I was able to quickly validate what portion of my userbase I was affecting by looking at user agent strings.<p>Request headers are a fantastic way to capture this little bit of information. Using javascript feature checking depends on a javascript engine successfully loading and parsing whatever scripts I&#x27;ve provided to the client. Request headers are simple plaintext that don&#x27;t fail in even the most bare bones of situations.