v136 · miscellaneous
API Deprecation Timeline
The deprecation journey of HTMLFencedFrameElement.canLoadOpaqueURL(): when it was added, when the replacement arrived, when the deprecation warning started, and when it was fully removed in Chrome 136. Includes a live probe of both APIs and a migration cheatsheet.
probing canLoadOpaqueURL()…
probing canLoadAdAuctionFencedFrame()…
HTMLFencedFrameElement.canLoadOpaqueURL() was an early feature-detection helper attached to the element constructor. In 2023 it was replaced by navigator.canLoadAdAuctionFencedFrame() which lives alongside other navigator-level fenced-frame APIs. Chrome 136 removes the old API entirely.
Deprecation timeline
Chrome 97 (2022)
canLoadOpaqueURL() added
Attached to
HTMLFencedFrameElement as a static method. Allowed fenced-frame implementors to probe whether opaque-URL loading was available.Chrome 116 (2023)
Replacement API added: navigator.canLoadAdAuctionFencedFrame()
The new method lives on
navigator alongside navigator.runAdAuction() and other related APIs. Better API hygiene — a capability query belongs on navigator, not an element constructor.Chrome 116+ (2023–2024)
Deprecation warning added
Every call to
HTMLFencedFrameElement.canLoadOpaqueURL() emits a DevTools deprecation warning: "HTMLFencedFrameElement.canLoadOpaqueURL() is deprecated. Use navigator.canLoadAdAuctionFencedFrame() instead."Chrome 136 (2025)
API removed
HTMLFencedFrameElement.canLoadOpaqueURL is undefined. Any code calling it will throw TypeError: ... is not a function. Migrate to navigator.canLoadAdAuctionFencedFrame() immediately.Live API probes
Click "Run probes" to check both APIs.
Migration cheatsheet
Old (Chrome <136 — now removed)
// ❌ Throws TypeError in Chrome 136+
if (HTMLFencedFrameElement
.canLoadOpaqueURL()) {
// show fenced frame ad
}
New (Chrome 116+ — use this)
// ✓ Works in Chrome 116–136+
if (navigator
.canLoadAdAuctionFencedFrame?.()) {
// show fenced frame ad
}
| Property | Old API (removed) | New API |
|---|---|---|
| Location | HTMLFencedFrameElement | navigator |
| Call syntax | HTMLFencedFrameElement.canLoadOpaqueURL() | navigator.canLoadAdAuctionFencedFrame() |
| Available since | Chrome 97 | Chrome 116 |
| Removed in | Chrome 136 | — |
| Safe feature-detect | No (throws) | navigator.canLoadAdAuctionFencedFrame?.() ?? false |