PerformanceResourceTiming.responseStart

The responseStart read-only property returns a timestamp immediately after the browser receives the first byte of the response from the server, cache, or local resource.

Value

The responseStart property can have the following values:

  • A DOMHighResTimeStamp immediately after the browser receives the first byte of the response from the server.
  • 0 if the resource was instantaneously retrieved from a cache.
  • 0 if the resource is a cross-origin request and no Timing-Allow-Origin HTTP response header is used.

Examples

Measuring request time

The responseStart and requestStart properties can be used to measure how long the request takes.

const request = entry.responseStart - entry.requestStart;

Using a PerformanceObserver:

const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const request = entry.responseStart - entry.requestStart;
    if (request > 0) {
      console.log(`${entry.name}: Request time: ${request}ms`);
    }
  });
});

observer.observe({ type: "resource", buffered: true });

Or using Performance.getEntriesByType(), which only shows resource performance entries present in the browser's performance timeline at the time you call this method:

const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
  const request = entry.responseStart - entry.requestStart;
  if (request > 0) {
    console.log(`${entry.name}: Request time: ${request}ms`);
  }
});

Cross-origin timing information

If the value of the responseStart property is 0, the resource might be a cross-origin request. To allow seeing cross-origin timing information, the Timing-Allow-Origin HTTP response header needs to be set.

For example, to allow https://developer.mozilla.org to see timing resources, the cross-origin resource should send:

Timing-Allow-Origin: https://developer.mozilla.org

Specifications

Specification
Resource Timing
# dom-performanceresourcetiming-responsestart

Browser compatibility

BCD tables only load in the browser

See also