From experience, it can be a bit slow to get hold of sites willing to experiment so 3 milestones might be a bit short. Either way, you have the required lgtm so good luck! It seems like a useful API. And you can request an extension if it's not enough.

/Daniel

On 2026-03-24 20:12, 'Stephanie Zhang' via blink-dev wrote:

Thanks for the review, Alex!

No existing Range-producing APIs are modified. OpaqueRange is a new type created only via the new createValueRange() method. It extends AbstractRange rather than Range, so existing APIs are unaffected.

We’d like to validate the API shape with developers first, particularly the value-offset model for real use cases like inline suggestions and highlights. We don’t have specific partners lined up today, but we plan to reach out to potential partners during the experiment and hope to learn from interested developers as well.

*From:*Alex Russell <[email protected]>
*Sent:* Monday, March 23, 2026 11:44 AM
*To:* blink-dev <[email protected]>
*Cc:* Stephanie Zhang <[email protected]>
*Subject:* [EXTERNAL] Re: Intent to Experiment: OpaqueRange


        

You don't often get email from [email protected]. Learn why this is important <https://aka.ms/LearnAboutSenderIdentification>

        

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] <mailto:[email protected]>,
    [email protected] <mailto:[email protected]>,
    [email protected] <mailto:[email protected]>,
    [email protected] <mailto:[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://github.com/web-platform-dx/web-features/issues/3863>

    *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/CH3PR00MB26119B282B3576D0DE08F3B8EC48A%40CH3PR00MB2611.namprd00.prod.outlook.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CH3PR00MB26119B282B3576D0DE08F3B8EC48A%40CH3PR00MB2611.namprd00.prod.outlook.com?utm_medium=email&utm_source=footer>.

--
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/2e20c875-9e89-4f18-9288-68e8d1d3dd9a%40gmail.com.

Reply via email to