Skip to content

Conversation

@chrisdavidmills
Copy link
Contributor

Description

As of version 144, Chrome is deprecating the Attribution Reporting API; see https://chromestatus.com/feature/6320639375966208. This is part of the Privacy Sandbox deprecation/removal work.

This PR aims to add deprecation notices to all related features and mentions that I don't think will be picked up by @OnkarRuikar's BCD->MDN status syncing script. I could be wrong about which ones it picks up, so future such PRs may be even shorter.

Motivation

Additional details

Related issues and pull requests

@chrisdavidmills chrisdavidmills requested review from a team as code owners December 11, 2025 12:56
@chrisdavidmills chrisdavidmills requested review from bsmth and removed request for a team December 11, 2025 12:56
@github-actions github-actions bot added Content:HTML Hypertext Markup Language docs Content:WebAPI Web API docs Content:Other Any docs not covered by another "Content:" label Content:HTTP HTTP docs size/s [PR only] 6-50 LoC changed labels Dec 11, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 11, 2025

@OnkarRuikar
Copy link
Contributor

@chrisdavidmills you need to update them in the BCD repo and the script will take care of front-matter statuses, header banners, and inline status macros . For more info refer the How feature statuses are added or updated? document.

I ran the script offline on your PR and following are the results:
Logs

❌ Not deprecated in BCD: ../mdn/content/files/en-us/web/api/attribution_reporting_api/index.md

It updated following content to match the current BCD:

diff --git a/files/en-us/web/api/attribution_reporting_api/index.md b/files/en-us/web/api/attribution_reporting_api/index.md
index 504355bdef..957c915efb 100644
--- a/files/en-us/web/api/attribution_reporting_api/index.md
+++ b/files/en-us/web/api/attribution_reporting_api/index.md
@@ -3,11 +3,11 @@ title: Attribution Reporting API
 slug: Web/API/Attribution_Reporting_API
 page-type: web-api-overview
 status:
-  - deprecated
+  - experimental
 browser-compat: html.elements.a.attributionsrc
 ---
 
-{{deprecated_header}}{{securecontext_header}}{{DefaultAPISidebar("Attribution Reporting API")}}
+{{securecontext_header}}{{DefaultAPISidebar("Attribution Reporting API")}}{{SeeCompatTable}}
 
 The **Attribution Reporting API** enables developers to measure conversions — for example when a user clicks an ad embedded on one site and then proceeds to purchase the item over on the vendor's site — and then access reports on those conversions. It does this without relying on third-party tracking cookies.
 
diff --git a/files/en-us/web/api/htmlanchorelement/index.md b/files/en-us/web/api/htmlanchorelement/index.md
index ddf4dbb0b0..12e5a9a5bb 100644
--- a/files/en-us/web/api/htmlanchorelement/index.md
+++ b/files/en-us/web/api/htmlanchorelement/index.md
@@ -15,7 +15,7 @@ The **`HTMLAnchorElement`** interface represents hyperlink elements and provides
 
 _Inherits properties from its parent, {{domxref("HTMLElement")}}._
 
-- {{domxref("HTMLAnchorElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}}
+- {{domxref("HTMLAnchorElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}} {{experimental_inline}}
   - : Gets and sets the [`attributionsrc`](/en-US/docs/Web/HTML/Reference/Elements/a#attributionsrc) attribute on an {{htmlelement("a")}} element programmatically, reflecting the value of that attribute. `attributionsrc` specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header. On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} header in the response, to register a navigation-based attribution source.
 - {{domxref("HTMLAnchorElement.download")}}
   - : A string indicating that the linked resource is intended to be downloaded rather than displayed in the browser. The value represents the proposed name of the file. If the name is not a valid filename of the underlying OS, the browser will adapt it.
diff --git a/files/en-us/web/api/htmlimageelement/index.md b/files/en-us/web/api/htmlimageelement/index.md
index 6bbb15cfea..870622f184 100644
--- a/files/en-us/web/api/htmlimageelement/index.md
+++ b/files/en-us/web/api/htmlimageelement/index.md
@@ -22,7 +22,7 @@ _Inherits properties from its parent, {{domxref("HTMLElement")}}._
 
 - {{domxref("HTMLImageElement.alt")}}
   - : A string that reflects the [`alt`](/en-US/docs/Web/HTML/Reference/Elements/img#alt) HTML attribute, thus indicating the alternate fallback content to be displayed if the image has not been loaded.
-- {{domxref("HTMLImageElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}}
+- {{domxref("HTMLImageElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}} {{experimental_inline}}
   - : Gets and sets the [`attributionsrc`](/en-US/docs/Web/HTML/Reference/Elements/img#attributionsrc) attribute on an {{htmlelement("img")}} element programmatically, reflecting the value of that attribute. `attributionsrc` specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header along with the image request. On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} or {{httpheader("Attribution-Reporting-Register-Trigger")}} header in the response, to register an image-based [attribution source](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_sources#html-based_event_sources) or [attribution trigger](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_triggers#html-based_attribution_triggers), respectively.
 - {{domxref("HTMLImageElement.complete")}} {{ReadOnlyInline}}
   - : Returns a boolean value that is `true` if the browser has finished fetching the image, whether successful or not. That means this value is also `true` if the image has no {{domxref("HTMLImageElement.src", "src")}} value indicating an image to load.
diff --git a/files/en-us/web/api/htmlscriptelement/index.md b/files/en-us/web/api/htmlscriptelement/index.md
index f2cc0197c5..afcf902d26 100644
--- a/files/en-us/web/api/htmlscriptelement/index.md
+++ b/files/en-us/web/api/htmlscriptelement/index.md
@@ -20,7 +20,7 @@ JavaScript files should be served with the `text/javascript` [MIME type](/en-US/
 
 _Inherits properties from its parent, {{domxref("HTMLElement")}}._
 
-- {{domxref("HTMLScriptElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}}
+- {{domxref("HTMLScriptElement.attributionSrc")}} {{securecontext_inline}} {{deprecated_inline}} {{experimental_inline}}
   - : Gets and sets the [`attributionsrc`](/en-US/docs/Web/HTML/Reference/Elements/script#attributionsrc) attribute on a {{htmlelement("script")}} element programmatically, reflecting the value of that attribute. `attributionsrc` specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header along with the script resource request. On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} or {{httpheader("Attribution-Reporting-Register-Trigger")}} header in the response, to register a JavaScript-based [attribution source](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_sources#javascript-based_event_sources) or [attribution trigger](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_triggers#javascript-based_attribution_triggers), respectively.
 - {{domxref("HTMLScriptElement.async")}}
   - : A boolean value that controls how the script should be executed. For classic scripts, if the `async` property is set to `true`, the external script will be fetched in parallel to parsing and evaluated as soon as it is available. For [module scripts](/en-US/docs/Web/JavaScript/Guide/Modules), if the `async` property is set to `true`, the script and all their dependencies will be fetched in parallel to parsing and evaluated as soon as they are available.
diff --git a/files/en-us/web/html/reference/elements/a/index.md b/files/en-us/web/html/reference/elements/a/index.md
index 0db236b1ab..4c92a0b6eb 100644
--- a/files/en-us/web/html/reference/elements/a/index.md
+++ b/files/en-us/web/html/reference/elements/a/index.md
@@ -32,7 +32,7 @@ li {
 
 This element's attributes include the [global attributes](/en-US/docs/Web/HTML/Reference/Global_attributes).
 
-- `attributionsrc` {{deprecated_inline}}
+- `attributionsrc` {{deprecated_inline}} {{experimental_inline}}
   - : Specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header. On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} header in the response, to register a [navigation-based attribution source](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_sources#navigation-based_attribution_sources).
 
     The browser stores the source data associated with the navigation-based attribution source (as provided in the {{httpheader("Attribution-Reporting-Register-Source")}} response header) when the user clicks the link. See the [Attribution Reporting API](/en-US/docs/Web/API/Attribution_Reporting_API) for more details.
diff --git a/files/en-us/web/html/reference/elements/img/index.md b/files/en-us/web/html/reference/elements/img/index.md
index 6d8e295333..b131072f3c 100644
--- a/files/en-us/web/html/reference/elements/img/index.md
+++ b/files/en-us/web/html/reference/elements/img/index.md
@@ -86,7 +86,7 @@ This element includes the [global attributes](/en-US/docs/Web/HTML/Reference/Glo
 
     This attribute is also used when copying and pasting the image to text, or saving a linked image to a bookmark.
 
-- `attributionsrc` {{deprecated_inline}}
+- `attributionsrc` {{deprecated_inline}} {{experimental_inline}}
   - : Specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header along with the image request.
 
     On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} or {{httpheader("Attribution-Reporting-Register-Trigger")}} header in the response, to register an image-based [attribution source](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_sources#html-based_event_sources) or [attribution trigger](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_triggers#html-based_attribution_triggers), respectively. Which response header should be sent back depends on the value of the `Attribution-Reporting-Eligible` header that triggered the registration.
diff --git a/files/en-us/web/html/reference/elements/script/index.md b/files/en-us/web/html/reference/elements/script/index.md
index ebbed1b8bf..180b76e747 100644
--- a/files/en-us/web/html/reference/elements/script/index.md
+++ b/files/en-us/web/html/reference/elements/script/index.md
@@ -28,7 +28,7 @@ This element includes the [global attributes](/en-US/docs/Web/HTML/Reference/Glo
 
     See [Browser compatibility](#browser_compatibility) for notes on browser support. See also [Async scripts for asm.js](/en-US/docs/Games/Techniques/Async_scripts).
 
-- `attributionsrc` {{deprecated_inline}}
+- `attributionsrc` {{deprecated_inline}} {{experimental_inline}}
   - : Specifies that you want the browser to send an {{httpheader("Attribution-Reporting-Eligible")}} header along with the script resource request. On the server-side this is used to trigger sending an {{httpheader("Attribution-Reporting-Register-Source")}} or {{httpheader("Attribution-Reporting-Register-Trigger")}} header in the response, to register a JavaScript-based [attribution source](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_sources#javascript-based_event_sources) or [attribution trigger](/en-US/docs/Web/API/Attribution_Reporting_API/Registering_triggers#javascript-based_attribution_triggers), respectively. Which response header should be sent back depends on the value of the `Attribution-Reporting-Eligible` header that triggered the registration.
 
     > [!NOTE]
diff --git a/files/en-us/web/http/reference/headers/permissions-policy/index.md b/files/en-us/web/http/reference/headers/permissions-policy/index.md
index 7bd49e4729..88c5ee9b2e 100644
--- a/files/en-us/web/http/reference/headers/permissions-policy/index.md
+++ b/files/en-us/web/http/reference/headers/permissions-policy/index.md
@@ -79,7 +79,7 @@ You can specify
 - {{httpheader("Permissions-Policy/aria-notify", "aria-notify")}} {{Experimental_Inline}} {{non-standard_inline}}
   - : Controls whether the current document is allowed to use the {{domxref("Document.ariaNotify", "ariaNotify()")}} method to fire {{glossary("screen reader")}} announcements.
 
-- {{httpheader('Permissions-Policy/attribution-reporting','attribution-reporting')}} {{Deprecated_Inline}}
+- {{httpheader('Permissions-Policy/attribution-reporting','attribution-reporting')}} {{Deprecated_Inline}} {{experimental_inline}}
   - : Controls whether the current document is allowed to use the [Attribution Reporting API](/en-US/docs/Web/API/Attribution_Reporting_API).
 
 - {{httpheader('Permissions-Policy/autoplay','autoplay')}} {{Experimental_Inline}}

Ideally things should happen in the following manor:

a. For the API pages tracked in the BCD repository

  1. Submit a PR (in BCD repo) to mark them deprecated. Above diff shows they are still marked experimental in BCD. If you dicrectly do it in content then the bot will simply revert them to expermiental status as per BCD.
  2. After the the PR is merged request them to do immediate release.
  3. At midnight the bot will submit a sync PR in the content repo.

b. For the pages not tracked in BCD, you'll have to update the statuses (in all three places on the page) manually. The bot doesn't touch pages that are not tracked in BCD.


If you have already done all the changes in the content branch then you can do the following:

  1. Backup your changes git diff > ~/temp_dir/attrib-stateus.patch.
  2. Submit PR in BCD to update tracked APIs.
  3. After they are synced to MDN, submit the changes for untracked API pages using the following:
# pull the latest changes in main  branch
git checkout main
git pull mdn main

# get the latest to this branch  
git checkout deprecate-attribution-reporting-api
# dump the above commit in this PR 
git reset --hard HEAD~1
# update this PR branch
git rebase main
# get the remaining changes back
git apply ~/temp_dir/attrib-status.patch
# update the Github PR
commit -am "Add deprecation markers for APIs not tracked in BCD"
git push --force

@chrisdavidmills
Copy link
Contributor Author

Thanks a lot, @OnkarRuikar. I'll set these content PRs to draft for now, and wait until the associated BCD PRs have been merged and the update has been run. Then I'll update these branches and see what still needs to be done.

@chrisdavidmills chrisdavidmills marked this pull request as draft December 12, 2025 11:35
@sideshowbarker sideshowbarker removed request for a team December 12, 2025 12:44
@OnkarRuikar
Copy link
Contributor

@github-actions github-actions bot added the merge conflicts 🚧 [PR only] label Dec 13, 2025
@github-actions
Copy link
Contributor

This pull request has merge conflicts that must be resolved before it can be merged.

@github-actions github-actions bot removed the Content:HTML Hypertext Markup Language docs label Dec 15, 2025
@chrisdavidmills chrisdavidmills marked this pull request as ready for review December 15, 2025 14:14
@github-actions github-actions bot removed the merge conflicts 🚧 [PR only] label Dec 15, 2025
Copy link
Member

@bsmth bsmth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@chrisdavidmills chrisdavidmills merged commit 9e837bb into mdn:main Dec 15, 2025
8 checks passed
@chrisdavidmills chrisdavidmills deleted the deprecate-attribution-reporting-api branch December 15, 2025 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Content:HTTP HTTP docs Content:Other Any docs not covered by another "Content:" label Content:WebAPI Web API docs size/s [PR only] 6-50 LoC changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants