[whatwg/dom] Custom Attributes (PR #1517)

<!--
Thank you for contributing to the DOM Standard! Please describe the change you are making and complete the checklist below if your change is not editorial.

When you submit this PR, and each time you edit this comment (including checking a checkbox through the UI!), PR Preview will run and update it. As such make any edits in one go and only after PR Preview has run.

If you think your PR is ready to land, please double-check that the build is passing and the checklist is complete before pinging.
-->
This adds the necessary machinery & steps to support custom attributes.

- [ ] At least two implementers are interested (and none opposed):
   * …
   * …
- [x] [Tests](https://github.com/web-platform-tests/wpt) are written and can be reviewed and commented upon at:
   * https://github.com/web-platform-tests/wpt/pull/64342
- [ ] [Implementation bugs](https://github.com/whatwg/meta/blob/main/MAINTAINERS.md#handling-pull-requests) are filed:
   * Chromium: …
   * Gecko: …
   * WebKit: …
   * Deno (only for aborting and events): …
   * Node.js (only for aborting and events): …
- [ ] [MDN issue](https://github.com/whatwg/meta/blob/main/MAINTAINERS.md#handling-pull-requests) is filed: …
- [ ] The top of this comment includes a [clear commit message](https://github.com/whatwg/meta/blob/main/COMMITTING.md) to use. <!-- If you created this PR from a single commit, Github copied its message. Otherwise, you need to add a commit message yourself. -->

(See [WHATWG Working Mode: Changes](https://whatwg.org/working-mode#changes) for more details.)


<!--
    This comment and the below content is programmatically generated.
    You may add a comma-separated list of anchors you'd like a
    direct link to below (e.g. #idl-serializers, #idl-sequence):

    Don't remove this comment or modify anything below this line.
    If you don't want a preview generated for this pull request,
    just replace the whole of this comment's content by "no preview"
    and remove what's below.
-->
***

### :boom: Error: 422 Unprocessable Entity :boom: ###

[PR Preview](https://github.com/specinfra/pr-preview#pr-preview) failed to build. _(Last tried on Oct 29, 2026, 9:06 AM UTC)_.

<details>
<summary>More</summary>


PR Preview relies on a number of web services to run. There seems to be an issue with the following one:

:rotating_light: [Spec Generator](https://www.w3.org/publications/spec-generator/) - Spec Generator is the web service used to build bikeshed/ReSpec specs

:link: [Related URL](https://www.w3.org/publications/spec-generator/?type=bikeshed-spec&output=html&url=https%3A%2F%2Fraw.githubusercontent.com%2Fkeithamus%2Fdom%2F71880b90d53314aca285b973aa11838ea9e6ba47%2Fdom.bs&force=1&md-status=LS-PR&md-Text-Macro=PR-NUMBER%201517)

**Error output:**

```json
[
    {
        "lineNum": "3036:6",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "3039:6",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'scoped document set' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "3047:8",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "3050:8",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'scoped document set' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "3058:10",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "3062:25",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'try to upgrade an attribute'."
    },
    {
        "lineNum": "3067:11",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'upgrade an attribute'."
    },
    {
        "lineNum": "3250:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "3417:26",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "3434:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "~3485:1",
        "messageType": "link",
        "text": "No 'idl-name' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "3500:21",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "5125:31",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "5212:44",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "5289:6",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "~5783:1",
        "messageType": "link",
        "text": "No 'idl-name' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "5860:69",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "6097:19",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "6275:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "6328:3",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "6376:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "6492:7",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "6518:6",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "6523:33",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "6565:14",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "6567:23",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "6569:14",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "6616:52",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'looking up a custom attribute definition'."
    },
    {
        "lineNum": "6620:49",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'construct a custom attribute'."
    },
    {
        "lineNum": "6623:31",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'custom attribute constructor'."
    },
    {
        "lineNum": "6650:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'looking up a custom attribute definition'."
    },
    {
        "lineNum": "6653:54",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'construct a custom attribute'."
    },
    {
        "lineNum": "6658:3",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'custom attribute constructor'."
    },
    {
        "lineNum": "6678:2",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "7100:12",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "~7224:1",
        "messageType": "link",
        "text": "No 'idl-name' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "7309:16",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "7405:40",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "7675:2",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7697:2",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7708:11",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7713:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7718:17",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'try to upgrade an attribute'."
    },
    {
        "lineNum": "7721:33",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'custom attribute definition'."
    },
    {
        "lineNum": "7746:11",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7751:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7776:2",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7790:11",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7795:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7803:11",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7808:4",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'enqueue a custom attribute callback reaction'."
    },
    {
        "lineNum": "7812:20",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'try to upgrade an attribute'."
    },
    {
        "lineNum": "8403:2",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'is scoped' with for='['CustomAttributeRegistry']'."
    },
    {
        "lineNum": "8424:34",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "8538:38",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttributeRegistry'."
    },
    {
        "lineNum": "8826:29",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'custom attribute definition'."
    },
    {
        "lineNum": "8834:54",
        "messageType": "link",
        "text": "No 'dfn' refs found for 'upgrade an attribute'."
    },
    {
        "lineNum": "8844:2",
        "messageType": "link",
        "text": "No 'idl' refs found for 'CustomAttrConstructor'."
    },
    {
        "lineNum": null,
        "messageType": "failure",
        "text": "Did not generate, due to errors exceeding the allowed error level."
    }
]
```

_This seems to be an issue with the [Spec Generator](https://www.w3.org/publications/spec-generator/) service. PR Preview doesn't manage this service and so has no control over it. If you've identified an issue with it, you can [report the issue to the maintainers of Spec Generator](https://github.com/w3c/spec-generator/issues/new) directly. Please be courteous. Thank you!_

_If you don't have enough information above to solve the error by yourself or if the issue doesn't seem related to Spec Generator, you can [file an issue with PR Preview](https://github.com/specinfra/pr-preview/issues/new?title=Unidentified%20Error&body=See%20whatwg/dom%231517.)._

</details>

You can view, comment on, or merge this pull request online at:

  https://github.com/whatwg/dom/pull/1517

-- Commit Summary --

  * Custom Attributes

-- File Changes --

    M dom.bs (572)

-- Patch Links --

https://github.com/whatwg/dom/pull/1517.patch
https://github.com/whatwg/dom/pull/1517.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/dom/pull/1517
You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/dom/pull/1517@github.com>

Received on Thursday, 29 October 2026 09:07:08 UTC