This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The DeprecationReportBody interface of the Reporting API represents the body of a deprecation report (the return value of its Report.body property).

A deprecation report is generated when a deprecated feature (e.g. a deprecated API method) is used on a document being observed by a ReportingObserver.


A string representing the deprecated feature that generated the report, for example NavigatorGetUserMedia. This can be used to group reports by deprecated feature.
A Date object (rendered as a string) representing the date when the feature is expected to be removed from the current browser. If the date is not known, this property will return null.
A string containing a human-readable description of the deprecation, including information such as what newer feature has superceded it, if any. This typically matches the message a browser will display in its DevTools console when a deprecated feature is used, if one is available.
A string containing the path to the source file where the deprecated feature was used, if known, or null otherwise.
A number representing the line in the source file in which the deprecated feature was used, if known, or null otherwise.
A number representing the column in the source file in which the deprecated feature was used, if known, or null otherwise.


In our deprecation_report.html example, we create a simple reporting observer to observe usage of deprecated features on our web page:

let options = {
  types: ['deprecation'],
  buffered: true

let observer = new ReportingObserver(function(reports, observer) {
  reportBtn.onclick = () => displayReports(reports);
}, options);

We then tell it to start observing reports using ReportingObserver.observe(); this tells the observer to start collecting reports in its report queue, and runs the callback function specified inside the constructor:


Because of the event handler we set up inside the ReportingObserver() constructor, we can now click the button to display the report details.

image of a jolly bearded man with various stats displayed below it about a deprecated feature

The report details are displayed via the displayReports() fuction, which takes the observer callback's reports parameter as its parameter:

function displayReports(reports) {
  const outputElem = document.querySelector('.output');
  const list = document.createElement('ul');

  for(let i = 0; i < reports.length; i++) {
    let listItem = document.createElement('li');
    let textNode = document.createTextNode('Report ' + (i + 1) + ', type: ' + reports[i].type);
    let innerList = document.createElement('ul');

    for (let key in reports[i].body) {
      let innerListItem = document.createElement('li');
      let keyValue = reports[i].body[key];
      innerListItem.textContent = key + ': ' + keyValue;

The reports parameter contains an array of all the reports in the observer's report queue. We loop over each report using a basic for loop, then iterate over each entry of in the report's body (a DeprecationReportBody instance) using a structure, displaying each key/value pair inside a list item.


Specification Status Comment
Reporting API
The definition of 'DeprecationReportBody' in that specification.
Editor's Draft

Browser compatibility

No compatibility data found. Please contribute data for "api.DeprecationReportBody" (depth: 1) to the MDN compatibility data repository.

See also