It seems like there should be an Ext interface to get useragent info.  The interface is stupidly fine-grained, though.  e.g. Ext.isChrome, Ext.chromeVersion