Skip to content

Commit ca5ecb2

Browse files
ddbeckcaugner
andauthored
Add general partial_implementation guideline (#26780)
Co-authored-by: Claas Augner <[email protected]>
1 parent 1d72717 commit ca5ecb2

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

docs/data-guidelines/index.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,43 @@ Do not use `"preview"` for planned but not yet implemented support changes. In o
5252

5353
This guideline was adopted to protect the quality of stable data in the face of schedule uncertainty. To learn more about the adoption of `"preview"` values, see [#12344](https://github.com/mdn/browser-compat-data/issues/12344) and [#10334](https://github.com/mdn/browser-compat-data/pull/10334).
5454

55+
## `"partial_implementation"` general usage guidelines
56+
57+
> ![NOTE]
58+
> This guideline was added in August 2025 and feedback is welcome.
59+
> If you have questions or concerns about how to apply it, [file an issue](https://github.com/mdn/browser-compat-data/issues/new/choose).
60+
61+
You must set `"partial_implementation": true` when all of the following conditions are met:
62+
63+
- The browser's support does not implement mandatory specified behavior.
64+
- The browser's support is inconsistent with at least one other browser.
65+
- The browser's support causes confusing feature detection results.
66+
- The browser's support has a demonstrable negative impact on web developers.
67+
68+
This list only covers cases where `"partial_implementation": true` is required.
69+
`"partial_implementation": true` may apply in unusual situations not covered by this guideline, such as significant changes in a single-implementation feature's behavior before standardization.
70+
71+
Here are some example situations:
72+
73+
- `"partial_implementation": false`: All implementing browsers ignore part of a feature's specified behavior in the same way.
74+
This behavior is consistent and is a _de facto_ complete implementation.
75+
76+
- `"partial_implementation": false`: All implementing browsers provide a form control user interface, but the specification gives the implementer discretion over its look and feel.
77+
A developer complains that one browser's user interface lacks some desired quality that other browsers implement; they want it to be marked as partially implemented.
78+
Use a note or non-standard behavioral subfeature instead.
79+
<!-- TODO: link to behavioral subfeature guidelines, when available -->
80+
81+
- `"partial_implementation": false`: An implementing browser fails a web platform test against a corner case.
82+
No web developers have reported the bug and it's unlikely that there are real-world applications that would attempt to use the corner case.
83+
Use a note instead.
84+
85+
- `"partial_implementation": true`: `CSS.supports()` returns `true` for a property name and value, but the value has no behavior.
86+
See also: [Non-functional defined names imply `"partial_implementation"`](#non-functional-defined-names-imply-partial_implementation).
87+
88+
- `"partial_implementation": true`: One browser exposes a constructor, `Example()`, but it always throws an error. Other browsers implement the constructor's intended behavior. This confuses feature detection because `typeof Example === "function"` returns `true`, even though the constructor does not work.
89+
90+
This guideline was proposed and adopted in [#26780](https://github.com/mdn/browser-compat-data/pull/26780).
91+
5592
## `"partial_implementation"` requires a note
5693

5794
If you set `"partial_implementation": true`, then write a note describing how the implementation is incomplete.
@@ -60,7 +97,7 @@ This guideline was proposed in [#7332](https://github.com/mdn/browser-compat-dat
6097

6198
## Non-functional defined names imply `"partial_implementation"`
6299

63-
If a browser recognizes an API name, but the API doesn’t have any discernable behavior, use `"partial_implementation": true` instead of `"version_added": false`, as if the feature has non-standard support, rather than no support.
100+
If a browser recognizes an API name, but the API doesn’t have any discernible behavior, use `"partial_implementation": true` instead of `"version_added": false`, as if the feature has non-standard support, rather than no support.
64101

65102
For example, suppose there is some specification for a Web API `NewFeature.method()`. Running `typeof NewFeature.method` in some browser returns `function` (not `undefined`), but the method, when called, returns `null` instead of an expected value. For that feature, set `"partial_implementation": true` and write a note describing the feature’s misbehavior.
66103

docs/index.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ An alphabetical index of keywords linking to relevant sections in the docs.
6868

6969
---
7070

71-
- **Partial implementation**[Data guidelines: "partial_implementation" requires a note](./data-guidelines/index.md#partial_implementation-requires-a-note)
71+
- **Partial implementation**
72+
- [Data guidelines: `"partial_implementation"` general usage guidelines](./data-guidelines/index.md#partial_implementation-general-usage-guidelines)
73+
- [Data guidelines: "partial_implementation" requires a note](./data-guidelines/index.md#partial_implementation-requires-a-note)
74+
7275
- **Permissions API**[Data guidelines for API features](./data-guidelines/api.md#permissions-api-permissions-permissionname_permission)
7376
- **Preview support**[Data guidelines: Choosing "preview" values](./data-guidelines/index.md#choosing-preview-values)
7477
- **Promises**[Data guidelines for API features](./data-guidelines/api.md#methods-returning-promises-returns_promise)

0 commit comments

Comments
 (0)