PerformanceNavigationTiming: domInteractive property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2021.

The domInteractive read-only property returns a DOMHighResTimeStamp representing the time immediately before the user agent sets the document's readyState to "interactive".

Note: This property is not Time to interactive (TTI). This property refers to the time when DOM construction is finished and interaction to it from JavaScript is possible. See also the interactive state of Document.readyState which corresponds to this property.

Measuring DOM processing time may not be consequential unless your site has a very large HTML source to a construct a Document Object Model from.

If there is no parser-blocking JavaScript then the DOMContentLoaded event (see domContentLoadedEventStart for the timestamp) will fire immediately after domInteractive.

Value

A DOMHighResTimeStamp representing the time immediately before the user agent sets the document's readyState to "interactive".

Examples

Logging DOM interaction time

The domInteractive property can be used to log the time when the DOM construction has finished and interaction with it is possible.

Example using a PerformanceObserver, which notifies of new navigation performance entries as they are recorded in the browser's performance timeline. Use the buffered option to access entries from before the observer creation.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(
      `${entry.name}: domInteractive time: ${entry.domInteractive}ms`,
    );
  });
});

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

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

js
const entries = performance.getEntriesByType("navigation");
entries.forEach((entry) => {
  console.log(`${entry.name}: domInteractive time: ${entry.domInteractive}ms`);
});

Specifications

Specification
Navigation Timing Level 2
# dom-performancenavigationtiming-dominteractive

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
domInteractive

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also