<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>312861</bug_id>
          
          <creation_ts>2026-04-21 01:10:00 -0700</creation_ts>
          <short_desc>REGRESSION: PerformanceNavigationTiming.domInteractive and domContentLoadedEventEnd always return 0</short_desc>
          <delta_ts>2026-05-03 21:19:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 26</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>p.majer</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>karlcow</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2202602</commentid>
    <comment_count>0</comment_count>
    <who name="">p.majer</who>
    <bug_when>2026-04-21 01:10:00 -0700</bug_when>
    <thetext>Overview:
PerformanceNavigationTiming.domInteractive and domContentLoadedEventEnd return 0 instead of the correct elapsed time since navigation start. loadEventEnd returns the correct value. The deprecated performance.timing equivalents work correctly.

Steps to Reproduce:

Open any page in Safari (e.g. https://example.com)
Open Web Inspector → Console
Run:

const nav = performance.getEntriesByType(&apos;navigation&apos;)[0];
console.log(&apos;domInteractive:&apos;, nav.domInteractive);
console.log(&apos;domContentLoadedEventEnd:&apos;, nav.domContentLoadedEventEnd);
console.log(&apos;loadEventEnd:&apos;, nav.loadEventEnd);
Actual Results:
domInteractive and domContentLoadedEventEnd both log 0. loadEventEnd logs the correct value (e.g. 137).

Expected Results:
All three fields should return elapsed milliseconds since navigation start (e.g. domInteractive: 120, domContentLoadedEventEnd: 145, loadEventEnd: 137). This matches the behaviour of Chromium and Firefox, and matches what the deprecated performance.timing API returns in WebKit itself.

Build Date &amp; Hardware:
Safari 26.4 (WebKit 21624.1.16.11.4), macOS 26.4.1, Apple Silicon.

Additional Builds and Platforms:
Does not occur in Chrome or Firefox. Regression is WebKit-only.

Confirmed affected on:

macOS 26.4.1 (Apple Silicon), Safari 26.4 (WebKit 21624.1.16.11.4)
Debian 12 (x64)

Additional Information:
Bisecting Playwright&apos;s dated WebKit builds (which use snapshots of WebKit upstream) places the regression between WebKit revisions 2266 (working) and 2267 (broken), corresponding to a WebKit upstream snapshot from approximately late January / early February 2026.

Preliminary analysis: Document::setReadyState(Interactive) in Document.cpp calls documentEventTimingFromNavigationTiming() to write the domInteractive timestamp into the PerformanceNavigationTiming entry. This function requires window-&gt;performance().navigationTiming() to be non-null. A change in the ordering of addNavigationTiming() relative to setReadyState(Interactive) appears to have caused m_navigationTiming to be null at that point, so the timestamp is never recorded. The legacy PerformanceTiming path writes directly to m_eventTiming and is unaffected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2204807</commentid>
    <comment_count>1</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-27 01:20:41 -0700</bug_when>
    <thetext>Safari Technology Preview 242
domInteractive: – 0
domContentLoadedEventEnd: – 0
loadEventEnd: – 45

Firefox Nightly 151.0a1 
domInteractive: 520 
domContentLoadedEventEnd: 522 
loadEventEnd: 526 


 Chrome Canary 149.0.7811.0
domInteractive: 654.3999999761581
domContentLoadedEventEnd: 654.3999999761581
loadEventEnd: 662.7999999523163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2204828</commentid>
    <comment_count>2</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-04-27 02:13:55 -0700</bug_when>
    <thetext>Maybe this is related to a change by Chris?
https://github.com/WebKit/WebKit/commit/cf994a7e92ba1e6f0fd32f5eaf94b96b10c658b3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2205287</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-28 01:10:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/175739835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2207058</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2026-05-03 18:34:19 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/64139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2207081</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-03 21:19:50 -0700</bug_when>
    <thetext>Committed 312500@main (2d4afb4d2ec5): &lt;https://commits.webkit.org/312500@main&gt;

Reviewed commits have been landed. Closing PR #64139 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>