First, thanks for the thorough and code-focused Explainer; nicely done.

Are any of the existing Range-producing APIs modified here? I.e., do they 
now return OpaqueRange objects rather than (transparent) Range responses 
if, e.g., they happen to include an <input>?

Also, are there any reasons not to ship now? E.g., are there partners lined 
up waiting to try OpaqueRange that we can learn from?

Regardless, LGTM1 to experiment for 3 releases.

On Monday, March 23, 2026 at 11:29:56 AM UTC-7 Stephanie Zhang wrote:

> *Contact emails*
> *[email protected]* <[email protected]>, 
> *[email protected]* <[email protected]>, 
> *[email protected]* <[email protected]>, 
> *[email protected]* <[email protected]>
> *Explainer*
>
> *https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/OpaqueRange/explainer.md*
>  
> <https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/OpaqueRange/explainer.md>
> *Specification*
> *https://github.com/whatwg/dom/pull/1404* 
> <https://github.com/whatwg/dom/pull/1404>
> *Summary*
> OpaqueRange represents a live span of text within a form control’s value 
> (for example, a <textarea> or text <input>), so developers can work with 
> value text using range-like APIs. It enables operations like 
> getBoundingClientRect(), getClientRects(), and use with the CSS Highlights 
> API for UI such as inline suggestions, highlights, and anchored popovers. 
> It preserves encapsulation by exposing only value offsets (and returning 
> null for startContainer/endContainer), so DOM endpoints and internal 
> structure aren’t exposed.
> *Blink component*
> *Blink>DOM* 
> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EDOM%22>
> *Web Feature ID*
> Missing feature
> *New feature ID for OpaqueRange · Issue #3863 · 
> web-platform-dx/web-features* 
> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fweb-platform-dx%2Fweb-features%2Fissues%2F3863&data=05%7C02%7Cstephanie.zhang%40microsoft.com%7C368ae7a2c0294ba588fa08de869f78e5%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639096216666151397%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=TPOSBzyoxtjmySsertgJ9DDWsEl9UwLzIYDpZ3u7cYE%3D&reserved=0>
> *TAG review*
> *https://github.com/w3ctag/design-reviews/issues/1206* 
> <https://github.com/w3ctag/design-reviews/issues/1206>
> *TAG review status*
> Pending
> *Goals for experimentation*
> Validate API design and gather developer feedback on whether the API meets 
> their needs.
> *Risks*
>
> *Interoperability and Compatibility*
> OpaqueRange adds new methods (e.g., createValueRange()) to <textarea> and 
> text <input> elements so authors can create ranges over value text. It 
> doesn’t change existing editing or selection behavior, so the risk to 
> existing sites is low. The main interoperability risk is lack of 
> implementation across engines, which could make text-anchored UI or 
> highlights inside native controls work in only some browsers.
>
> *Gecko*: No signal (
> *https://github.com/mozilla/standards-positions/issues/1289* 
> <https://github.com/mozilla/standards-positions/issues/1289>)
>
> *WebKit*: No signal (
> *https://github.com/WebKit/standards-positions/issues/541* 
> <https://github.com/WebKit/standards-positions/issues/541>)
>
> *Web developers*: Positive (
> *https://github.com/w3c/csswg-drafts/issues/10346* 
> <https://github.com/w3c/csswg-drafts/issues/10346>) Another positive 
> example: *https://github.com/whatwg/html/issues/11478* 
> <https://github.com/whatwg/html/issues/11478>
>
> *Other signals*:
> *Ergonomics*
> OpaqueRange is typically used with selection offsets and with 
> geometry/highlighting APIs. The geometry calls are synchronous and can 
> trigger layout, similar to existing Range geometry methods. Since the range 
> is live, offsets are updated as the control’s value is edited.
> *Activation*
> Moderate. Developers need to learn the value-offset model and how it 
> differs from Range (there are no DOM endpoints).
> *Security*
> No new data exposure beyond existing access to form control values and 
> selection. Exposes only value offsets and geometry and does not expose 
> internal DOM (startContainer/endContainer are null).
> *WebView application risks*
> *Does this intent deprecate or change behavior of existing APIs, such that 
> it has potentially high risk for Android WebView-based applications?*
> Low. OpaqueRange adds a new method to <textarea> and text <input> 
> elements, but does not change or deprecate any existing behavior
>
> *Ongoing technical constraints*
> None
> *Debuggability*
> No DevTools changes required.
> *Will this feature be supported on all six Blink platforms (Windows, Mac, 
> Linux, ChromeOS, Android, and Android WebView)?*
> Yes
> Works on all platforms that support <input> and <textarea> elements.
> *Is this feature fully tested by **web-platform-tests* 
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
> *?*
> Yes
>
> *https://wpt.fyi/results/dom/ranges/tentative?label=experimental&label=master&aligned*
>  
> <https://wpt.fyi/results/dom/ranges/tentative?label=experimental&label=master&aligned>
> *Flag name on about://flags*
> N/A
> *Finch feature name*
> OpaqueRange
> *Requires code in //chrome?*
> False
> *Tracking bug*
> *https://issues.chromium.org/issues/421421332* 
> <https://issues.chromium.org/issues/421421332>
> *Measurement*
> UseCounter `OpaqueRange` measures successful creation of OpaqueRange 
> objects on <textarea> and text <input> elements.
> *Estimated milestones*
> Origin trial desktop first 148 
> DevTrial on desktop 148 
> Origin trial Android first 148 
> DevTrial on Android 148 
>
> *Link to entry on the Chrome Platform Status*
> *https://chromestatus.com/feature/6297362687066112?gate=5151419728134144* 
> <https://chromestatus.com/feature/6297362687066112?gate=5151419728134144>
> *Links to previous Intent discussions*
> Intent to Prototype: 
> *https://groups.google.com/a/chromium.org/d/msgid/blink-dev/LV9PR21MB5189A114B34C8A3685A3C4A4805CA%40LV9PR21MB5189.namprd21.prod.outlook.com*
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/LV9PR21MB5189A114B34C8A3685A3C4A4805CA%40LV9PR21MB5189.namprd21.prod.outlook.com>
>
> This intent message was generated by *Chrome Platform Status* 
> <https://chromestatus.com/>.
>  
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/364acbb8-5515-4e0e-8fe8-e4a880a4c751n%40chromium.org.

Reply via email to