Updates / Opera
Opera 138: Chromium 154 underneath, two new web APIs
Stable Opera on the fleet is now 138.0.6044.24, on Chromium 154. Iterator.includes and FontFace.width arrive, requestStorageAccessFor goes; TLS unchanged.
Opera stable · 137.0.6036.63 → 138.0.6044.24 · 2026-10-23
Opera released 138 to stable on 2026-10-20, and new opera sessions on the fleet now run 138.0.6044.24 instead of 137.0.6036.63. Opera 138 moves its Chromium base from 153.0.8010.55 to 154.0.8037.99, so web platform changes follow Chromium 154.
New
- Chromium 154.0.8037.99 (Opera release notes, "updated Chromium to version 154.0.8037.99").
- New web APIs that pages can feature-test:
Iterator.prototype.includesandFontFace.width. - Opera's own changes: a refreshed "Make Opera Yours" widget on the Start Page, and crash fixes in tabs, translate, autofill, data import and the AI panel (Opera release notes).
Removed or changed
document.requestStorageAccessForis gone (deprecated in Chromium 153): our probe found it on 137 and not on 138.
What sites see / detection
- User agent and client hints:
Chrome/154.0.0.0 … OPR/138.0.0.0in the user agent, and theSec-CH-UAbrands change fromOpera 137, Not_A Brand 8, Chromium 153toChromium 154, Opera 138, Not A(Brand 99. The placeholder brand and the order change with each Chromium major. - TLS and HTTP/2 unchanged: the JA4 hash, the full TLS fingerprint hash and the HTTP/2 fingerprint are identical to 137.
- Bot checks unchanged: bot.sannysoft.com flagged one check (WebGL Renderer) before and after.
For scraping
- Nothing to change in your code: launch options, the Playwright 1.60 client and
wsUrlare the same, and every Playwright feature we test still works. - If your code calls
document.requestStorageAccessFor, guard it with a feature test.
Measured on the fleet
The same probe ran against 137.0.6036.63 and 138.0.6044.24 on the fleet, each when it went live: identity, TLS and HTTP/2 fingerprint, web platform features, Playwright features and bot checks. Host-dependent values (cores, memory, timings) are left out.
What the site sees: identity
| Before | After | |
|---|---|---|
| User agent | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 OPR/137.0.0.0 | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 OPR/138.0.0.0 |
| Client hint brands | Opera 137, Not_A Brand 8, Chromium 153 | Chromium 154, Opera 138, Not A(Brand 99 |
| Client hint full versions | Opera 137.0.6036.63, Not_A Brand 8.0.0.0, Chromium 153.0.8010.55 | Chromium 154.0.8037.99, Opera 138.0.6044.24, Not A(Brand 99.0.0.0 |
Web platform features added
Iterator.prototype.includes(new in Chrome 154)FontFace.width(new in Chrome 154)
Web platform features removed
document.requestStorageAccessFor(deprecated in 153)
Raw diff
{
"engine": "opera",
"label": "stable",
"from": "137.0.6036.63",
"to": "138.0.6044.24",
"browser_version": {
"before": "153.0.8010.55",
"after": "154.0.8037.99"
},
"changes": {
"identity": [
{
"field": "user_agent",
"before": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36 OPR/137.0.0.0",
"after": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 OPR/138.0.0.0"
},
{
"field": "client_hint_brands",
"before": "Opera 137, Not_A Brand 8, Chromium 153",
"after": "Chromium 154, Opera 138, Not A(Brand 99"
},
{
"field": "client_hint_full_versions",
"before": "Opera 137.0.6036.63, Not_A Brand 8.0.0.0, Chromium 153.0.8010.55",
"after": "Chromium 154.0.8037.99, Opera 138.0.6044.24, Not A(Brand 99.0.0.0"
}
],
"network": [],
"features": {
"added": [
{
"key": "iterator_includes",
"label": "`Iterator.prototype.includes` (new in Chrome 154)"
},
{
"key": "fontface_width",
"label": "`FontFace.width` (new in Chrome 154)"
}
],
"removed": [
{
"key": "request_storage_access_for",
"label": "`document.requestStorageAccessFor` (deprecated in 153)"
}
]
},
"playwright": {
"broke": [],
"fixed": []
},
"fingerprint": [],
"bot_checks": {
"newly_failed": [],
"newly_passed": [],
"failed_before": 1,
"failed_after": 1
},
"plain_http": [],
"launch": {
"before_ms": 601,
"after_ms": 1147
}
},
"host_dependent_ignored": [
"hardware_concurrency",
"device_memory",
"launch/connect/page timings"
]
}