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

The ReportingObserver() constructor of the Reporting API creates a new ReportingObserver object instance, which can be used to collect and access reports.


new ReportingObserver(callback[, options]);



A callback function that runs when the observer starts to collect reports (i.e. via ReportingObserver.observe()). The callback function is given two parameters:

  • reports: A sequence of Report objects representing the reports collected in the observer's report queue. This is probably the most common way to retrieve the reports.
  • observer: A reference to the same ReportingObserver object, allowing for recursive report collection, etc.
options Optional

An ReportingObserverOptions object allowing you to set the options for creating the object. The available options are:

  • types: An array of strings representing the types of report to be collected by this observer. Available types include deprecation, intervention, and crash (although this last type usually isn't retrievable via a ReportingObserver).
  • buffered: a boolean that defines whether the reports that were generated before the observer was able to be created should be observable (true) or not (false).


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

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


Reporting API
# dom-reportingobserver-reportingobserver

Browser compatibility

BCD tables only load in the browser

See also