Edge や Chrome のベースとなっている Chromium で、下記のような記事が投稿されました。
Intent to Deprecate and Freeze: The User-Agent string
User-Agent 文字列を廃止し凍結へWe want to freeze and unify (but not remove) the User Agent string in HTTP requests as well as in
navigator.userAgent
HTTP リクエストやnavigator.userAgent
に含まれる User Agent 文字列を凍結し統合する予定です(削除はしません)。
元々ブラウザの種類やバージョン、OSの種類などは User-Agent という文字列から取得し判定して、処理分岐を行っていました。
しかし、昨今の User Agent は謎文字列をずらずら並べるような状態になっていて使いづらいため、使わないよう持っていく方針になっているようです。
mobile かどうかの判定は例えば User-Agent Client Hints API などが現在策定途中なので、そちら側で確認出来るように変えていこう、という話みたいです。
2020 年 6 月のM83 で文字列が凍結され、 2020 年 9 月の M85 では mobile/desktop 双方ほぼ同じような文字列に統一される見通しとなっています。
User-Agent や window.navigator.userAgent
文字列によって処理を分けている部分があるソフトウェアは、今後は別の API によって処理を分けるよう修正する必要がありそうです。そちらは M81 から deprecated 表記がなされるようです。
Safari は以前 User-Agent の凍結に挑戦したことがあるみたいですが、色々あって失敗に終わったようです。
User-Agent Client Hints API(client side)
const ua = await navigator.getUserAgent()
{
"brand": "Edge",
"version": "72",
"platform": "Windows NT 10.0",
"architecture": "x86_64",
"model": "Pixel 2 XL",
"mobile": false
}
User-Agent Client Hints API では上記のようなスタイルでクライアント機種情報が取得出来るようになる予定です(草案のため変更される可能性もあります)。また、似たような HTTP リクエストヘッダも提供されるみたいなので、サーバサイドではそちらを用いて判定出来そうです。
TL; DR
- 短期的に User-Agent がなくなるわけではない
- 多分 Chrome 85 でも 90 でも Android 版でも、 PC Chrome 85 と判別できるような文字列が返ってくるようになる
- 長期的には削除されるかも?