PerformanceTiming and PerformanceNavigationLimited availability
The window.performance.timing and window.performance.navigation APIs report performance timing information for events that occur during the loading and use of the current page.
Not yet supported in all major browsers — check the table and provide a fallback.
Discouraged: This feature is supserseded by the PerformanceNavigationTiming API. Use instead: Performance, Navigation timing performance entries
Browser support
DesktopChrome
1–55Not supported
56+Supportedsince Jan 25, 2017
Current: 155Edge
12–17Not supported
18+Supportedsince Oct 2, 2018
Current: 154Firefox
1–55Not supported
56+Supportedsince Sep 28, 2017
Current: 157Safari
1–14Not supported
14.1+Supportedsince Apr 26, 2021
Current: 27MobileChrome Android
18–55Not supported
56+Supportedsince Feb 1, 2017
Current: 155Firefox Android
4–55Not supported
56+Supportedsince Sep 28, 2017
Current: 157Safari iOS
1–14Not supported
14.5+Supportedsince Apr 26, 2021
Current: 27How to use
Support is still inconsistent across browsers. Use feature detection and test carefully.
Example
Full syntax and examples are on MDN: navigation.
Feature detection
JS · check before using
if ("PerformanceTiming" in globalThis) {
// PerformanceTiming is available
} else {
// load a polyfill or use a fallback
}Documentation (MDN)
Specification
Sub-features
Support for each part of the feature (29). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Performance.navigation | 10 | 12 | 7 | 8 | 18 | 7 | 9 |
| Performance.timing | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceNavigation | 10 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceNavigation.redirectCount | 10 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceNavigation.toJSON | 56 | 12 | 25 | 14.1 | 56 | 25 | 14.5 |
| PerformanceNavigation.type | 10 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.connectEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.connectStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domComplete | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domContentLoadedEventEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domContentLoadedEventStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domInteractive | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domLoading | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domainLookupEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.domainLookupStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.fetchStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.loadEventEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.loadEventStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.navigationStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
Show 9 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| PerformanceTiming.redirectEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.redirectStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.requestStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.responseEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.responseStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.secureConnectionStart | 6 | 18 | 56 | 8 | 18 | 56 | 9 |
| PerformanceTiming.toJSON | 44 | 12 | 25 | 10.1 | 44 | 25 | 10.3 |
| PerformanceTiming.unloadEventEnd | 6 | 12 | 7 | 8 | 18 | 7 | 9 |
| PerformanceTiming.unloadEventStart | 6 | 12 | 7 | 8 | 18 | 7 | 9 |