Skip to content

Updates for Safari 26.4 beta#29063

Open
Elchi3 wants to merge 2 commits intomdn:mainfrom
Elchi3:safari-26.4-beta
Open

Updates for Safari 26.4 beta#29063
Elchi3 wants to merge 2 commits intomdn:mainfrom
Elchi3:safari-26.4-beta

Conversation

@Elchi3
Copy link
Member

@Elchi3 Elchi3 commented Feb 17, 2026

The https://collector.openwebdocs.org project (v10.17.3) found new features shipping in Safari 26.4 beta (21624.1.11.11.3) on macOS 26.4 beta (25E5207k) which was released last night. Currently, the collector covers about 90% of BCD, so the following list might not be exhaustive. Also, if a feature is in Safari TP only, it is not considered here.

This PR contains 88 feature updates or additions and they can be verified with the release notes or with the comments in this PR. Verified features are marked with (*).

  • api.Element.currentCSSZoom (*)
  • api.FontFaceSet.FontFaceSet (*)
  • api.PerformanceResourceTiming.deliveryType (*)
  • api.PerformanceResourceTiming.finalResponseHeadersStart (*)
  • api.PerformanceResourceTiming.firstInterimResponseStart (*)
  • api.ReadableByteStreamController (*)
  • api.ReadableByteStreamController.byobRequest (*)
  • api.ReadableByteStreamController.close (*)
  • api.ReadableByteStreamController.desiredSize (*)
  • api.ReadableByteStreamController.enqueue (*)
  • api.ReadableByteStreamController.error (*)
  • api.ReadableStream.@@asyncIterator (*)
  • api.ReadableStreamBYOBReader (*)
  • api.ReadableStreamBYOBReader.ReadableStreamBYOBReader (*)
  • api.ReadableStreamBYOBReader.cancel (*)
  • api.ReadableStreamBYOBReader.closed (*)
  • api.ReadableStreamBYOBReader.read (*)
  • api.ReadableStreamBYOBReader.releaseLock (*)
  • api.ReadableStreamBYOBRequest (*)
  • api.ReadableStreamBYOBRequest.respond (*)
  • api.ReadableStreamBYOBRequest.respondWithNewView (*)
  • api.ReadableStreamBYOBRequest.view (*)
  • api.Response.body.readable_byte_stream (*)
  • api.WebTransport (*)
  • api.WebTransport.WebTransport (*)
  • api.WebTransport.WebTransport.options_allowPooling_parameter (*)
  • api.WebTransport.WebTransport.options_congestionControl_parameter (*)
  • api.WebTransport.WebTransport.options_requireUnreliable_parameter (*)
  • api.WebTransport.WebTransport.options_serverCertificateHashes_parameter (*)
  • api.WebTransport.anticipatedConcurrentIncomingBidirectionalStreams (*)
  • api.WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams (*)
  • api.WebTransport.byob_readers (*)
  • api.WebTransport.close (*)
  • api.WebTransport.closed (*)
  • api.WebTransport.congestionControl (*)
  • api.WebTransport.createBidirectionalStream (*)
  • api.WebTransport.createBidirectionalStream.options_sendOrder_parameter (*)
  • api.WebTransport.createSendGroup (*)
  • api.WebTransport.createUnidirectionalStream (*)
  • api.WebTransport.createUnidirectionalStream.byob_readers (*)
  • api.WebTransport.createUnidirectionalStream.options_sendOrder_parameter (*)
  • api.WebTransport.datagrams (*)
  • api.WebTransport.draining (*)
  • api.WebTransport.getStats (*)
  • api.WebTransport.incomingBidirectionalStreams (*)
  • api.WebTransport.incomingUnidirectionalStreams (*)
  • api.WebTransport.protocol (*)
  • api.WebTransport.ready (*)
  • api.WebTransport.reliability (*)
  • api.WebTransport.supportsReliableOnly_static (*)
  • api.WebTransportBidirectionalStream (*)
  • api.WebTransportBidirectionalStream.readable (*)
  • api.WebTransportBidirectionalStream.readable.returns_WebTransportReceiveStream (*)
  • api.WebTransportBidirectionalStream.writable (*)
  • api.WebTransportBidirectionalStream.writable.returns_WebTransportSendStream (*)
  • api.WebTransportDatagramDuplexStream (*)
  • api.WebTransportDatagramDuplexStream.byob_readers (*)
  • api.WebTransportDatagramDuplexStream.createWritable (*)
  • api.WebTransportDatagramDuplexStream.incomingHighWaterMark (*)
  • api.WebTransportDatagramDuplexStream.incomingMaxAge (*)
  • api.WebTransportDatagramDuplexStream.maxDatagramSize (*)
  • api.WebTransportDatagramDuplexStream.outgoingHighWaterMark (*)
  • api.WebTransportDatagramDuplexStream.outgoingMaxAge (*)
  • api.WebTransportDatagramDuplexStream.readable (*)
  • api.WebTransportDatagramsWritable (*)
  • api.WebTransportDatagramsWritable.sendGroup (*)
  • api.WebTransportDatagramsWritable.sendOrder (*)
  • api.WebTransportError (*)
  • api.WebTransportError.WebTransportError (*)
  • api.WebTransportError.source (*)
  • api.WebTransportError.streamErrorCode (*)
  • api.WebTransportReceiveStream (*)
  • api.WebTransportReceiveStream.getStats (*)
  • api.WebTransportSendGroup (*)
  • api.WebTransportSendGroup.getStats (*)
  • api.WebTransportSendStream (*)
  • api.WebTransportSendStream.getStats (*)
  • api.WebTransportSendStream.getWriter (*)
  • api.WebTransportSendStream.sendGroup (*)
  • api.WebTransportSendStream.sendOrder (*)
  • css.properties.display.grid-lanes (*)
  • css.properties.display.inline-grid-lanes (*)
  • css.properties.flow-tolerance (*)
  • css.properties.flow-tolerance.infinite (*)
  • css.properties.flow-tolerance.normal (*)
  • css.properties.font-size.math (*)
  • css.properties.math-depth (*)
  • css.properties.math-depth.auto-add (*)
  • javascript.builtins.Iterator.concat (*)

@github-actions github-actions bot added data:api Compat data for Web APIs. https://developer.mozilla.org/docs/Web/API data:css Compat data for CSS features. https://developer.mozilla.org/docs/Web/CSS data:html Compat data for HTML elements. https://developer.mozilla.org/docs/Web/HTML size:xl [PR only] >1000 LoC changed labels Feb 17, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 17, 2026

Tip: Review these changes grouped by change (recommended for most PRs), or grouped by feature (for large PRs).

@caugner
Copy link
Contributor

caugner commented Feb 17, 2026

api.HTMLSelectedContentElement (unsure about this one, could be early exposure?)
html.elements.selectedcontent (unsure about this one, could be early exposure?)

The interface is behind two prefs:

  • HTMLEnhancedSelectParsingEnabled - stable since WebKit/WebKit@d51bd85 (624.1.2 before Safari 26.4 beta)
  • HTMLEnhancedSelectEnabled - stable since WebKit/WebKit@38528ac (625.1.7 after Safari 26.4 beta) - previously named HTMLEnhancedSelectSelectedContentEnabled, but only testable then

So this looks indeed like accidental exposure, or intentional temporary exposure (like Firefox's early beta).

@caugner
Copy link
Contributor

caugner commented Feb 17, 2026

Landed in WebKit 624.1.4 before Safari 26.4 beta, and the commit does not indicate any pref, so I would assume this shipped intentionally?

@caugner
Copy link
Contributor

caugner commented Feb 17, 2026

PS: For some reason, the WebKit repo does not seem to have a safari-*624*-branch branch yet.

@zloirock
Copy link

It also seems Iterator.concat is shipped.

@caugner
Copy link
Contributor

caugner commented Feb 17, 2026

It also seems Iterator.concat is shipped.

Does https://collector.openwebdocs.org/tests/javascript/builtins/Iterator/concat pass for you?

@zloirock
Copy link

@caugner I see it in core-js compat tests and in console.

Снимок экрана — 2026-02-17 в 16 49 16

@zloirock
Copy link

@caugner it's passed too.
Снимок экрана — 2026-02-17 в 16 51 01

@caugner
Copy link
Contributor

caugner commented Feb 17, 2026

@Elchi3 Any idea why your collector test missed this? Or did you accidentally/intentionally not include it in the PR?

@Elchi3
Copy link
Member Author

Elchi3 commented Feb 17, 2026

I intentionally left this out because it is not in the release notes and I haven't confirmed if it is shipping in earlier versions. I just added a collector test for Iterator.concat last week. Will add it here or in a separate PR it is shipping in earlier versions.

@jdatapple
Copy link
Contributor

jdatapple commented Feb 17, 2026

api.PerformanceResourceTiming.deliveryType

This property exists but as an empty string. Maybe the test should be updated to look for a non-empty string? As it exists in Safari, it doesn't do anything useful.

api.PerformanceResourceTiming.finalResponseHeadersStart
api.PerformanceResourceTiming.firstInterimResponseStart

These are supported and will be included in an update to the release notes.

html.elements.selectedcontent

This should not be accessible in Safari 26.4 beta.

Iterator.concat

This shipped in Safari 18.4. See Safari 18.4 Release Notes

Keyboard Lock API

This is enabled and should be available on macOS, iPadOS, and iOS.

@zloirock
Copy link

This shipped in Safari 18.4

Maybe it was implemented in 18.4, but definitely not shipped. It was missed in 26.3 and was shipped in Bun only 3 weeks ago.

@jdatapple
Copy link
Contributor

jdatapple commented Feb 18, 2026

This shipped in Safari 18.4

Maybe it was implemented in 18.4, but definitely not shipped. It was missed in 26.3 and was shipped in Bun only 3 weeks ago.

This appears to be correct! It was implemented, but did not get enabled until this beta (26.4 beta).

@github-actions github-actions bot added the data:js Compat data for JS/ECMAScript features. https://developer.mozilla.org/docs/Web/JavaScript label Feb 18, 2026
@Elchi3
Copy link
Member Author

Elchi3 commented Feb 18, 2026

api.PerformanceResourceTiming.deliveryType

This property exists but as an empty string. Maybe the test should be updated to look for a non-empty string? As it exists in Safari, it doesn't do anything useful.

Thanks, the empty string behavior is per spec so Safari is not wrong with this initial implementation.

html.elements.selectedcontent
This should not be accessible in Safari 26.4 beta.

Removed from this PR.

This shipped in Safari 18.4

Maybe it was implemented in 18.4, but definitely not shipped. It was missed in 26.3 and was shipped in Bun only 3 weeks ago.

This appears to be correct! It was implemented, but did not get enabled until this beta (26.4 beta).

Updated to set as shipping in 26.4

Keyboard Lock API
This is enabled and should be available on macOS, iPadOS, and iOS.

Thanks, but I still can't confirm this. See also https://bugs.webkit.org/show_bug.cgi?id=306525 and the comment on https://bugs.webkit.org/show_bug.cgi?id=299616.

@caugner
Copy link
Contributor

caugner commented Feb 18, 2026

Thanks, but I still can't confirm this. See also bugs.webkit.org/show_bug.cgi?id=306525 and the comment on bugs.webkit.org/show_bug.cgi?id=299616.

The now-stable FullScreenKeyboardLock pref depends on the FULLSCREEN_API build option (cf. https://bugs.webkit.org/show_bug.cgi?id=265923), which is disabled by default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

data:api Compat data for Web APIs. https://developer.mozilla.org/docs/Web/API data:css Compat data for CSS features. https://developer.mozilla.org/docs/Web/CSS data:html Compat data for HTML elements. https://developer.mozilla.org/docs/Web/HTML data:js Compat data for JS/ECMAScript features. https://developer.mozilla.org/docs/Web/JavaScript size:xl [PR only] >1000 LoC changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants