Safari Technology Preview Release 244 is now available for download for macOS Tahoe and macOS Sequoia. If you already have Safari Technology Preview installed, you can update it in System Settings under General → Software Update.
This release includes WebKit changes between: 312008@main…312964@main.
Accessibility
Resolved Issues
- Fixed VoiceOver cursor positioning for elements focused via the
drawFocusIfNeeded() canvas API. (312024@main) (146323788)
- Fixed an issue where interactive elements containing an
<svg> named by a child <title> element did not expose an accessible name. (312953@main) (172559238)
- Fixed VoiceOver line-by-line reading skipping content in read-only documents. (312263@main) (174349841)
Animations
New Features
- Added the
animation property to AnimationEvent and TransitionEvent interfaces. (312859@main) (176527591)
Resolved Issues
- Fixed CSS anchor-positioned elements not updating correctly when their anchors have their transform animated. (312752@main) (175896047)
CSS
New Features
- Added support for the
normal and none values on the position-anchor CSS property. (312378@main) (172097721)
- Added support for transform-aware anchor positioning. (312317@main) (175401339)
Resolved Issues
- Fixed an issue where
-webkit-text-fill-color incorrectly overrode text-decoration-color. (312789@main) (47010945)
- Fixed
shape-outside computing incorrect text wrapping in RTL writing modes. (312516@main) (56890238)
- Fixed CSS
zoom interacting incorrectly with font-weight, font-style, and font-variant on iPad. (312944@main) (152173269)
- Fixed
FontFace.loaded to reject when a local() font source fails to load. (312933@main) (174631384)
- Fixed CSS trigonometric functions to correctly convert degrees to radians. (312860@main) (175575617)
- Fixed
sibling-index() and sibling-count() inside calc() functions to be correctly simplified. (312026@main) (175590806)
- Fixed
sibling-index() and sibling-count()to correctly return 0 when used in cross-tree ::part() styling. (312544@main) (175592607)
- Fixed the CSS
resize handle not working on an element when the handle overlaps a child iframe. (312099@main) (175621855)
- Fixed flex container baseline alignment being incorrectly computed for scroll containers by clamping to the border edge. (312206@main) (175631095)
- Fixed an issue where inline-level boxes with
calc() margins or padding lost the fixed component during intrinsic width computation. (312081@main) (175669222)
- Fixed floats with
margin-start incorrectly overlapping adjacent floats. (312083@main) (175669464)
- Fixed
aspect-ratio calculations for block-level elements with size constraints. (312084@main) (175669713)
- Fixed
aspect-ratio calculations for flex items with percentage cross-size constraints. (312085@main) (175669774)
- Fixed an issue where
block-size: stretch resolved incorrectly for absolutely positioned elements with orthogonal writing modes. (312086@main) (175669844)
- Fixed
aspect-ratio calculations for flex items with definite cross-size values. (312108@main) (175690028)
- Fixed
revert-layer computing incorrectly when there is a leading empty or space substitution value. (312721@main) (175729680)
- Fixed
:has() invalidation incorrectly resetting sibling relation bits, causing style invalidation failures for first-in-sibling-chain elements. (312221@main) (175738008)
- Fixed an issue where absolutely positioned tables with content exceeding their declared CSS width were incorrectly positioned. (312197@main) (175755871)
- Fixed height calculations for absolutely positioned tables with percentage-sized children. (312204@main) (175762381)
- Fixed an issue where absolutely positioned tables with explicit percentage or fixed heights did not resolve correctly against their containing block. (312280@main) (175852400)
- Fixed absolutely positioned tables ignoring
min-height and shrinking below their content height. (312313@main) (175883577)
- Fixed absolutely positioned tables ignoring
max-height constraints. (312357@main) (175932457)
- Fixed an issue where a flex item with
aspect-ratio and content-box padding computed the wrong height in a column flex container. (312441@main) (176033726)
- Fixed an issue where flex items with explicit
min-height: min-content were incorrectly treated as scrollable, zeroing out their minimum size. (312517@main) (176173688)
- Fixed
:has() invalidation performance when used inside nested :is() selectors. (312715@main) (176354723)
- Fixed
sibling-count() & sibling-index() used in @keyframes to re-resolve when siblings change. (312895@main) (176531901)
Forms
Resolved Issues
- Fixed
<datalist> suggestions appearing with a white background on white text in dark mode after typing. (312889@main) (168676757)
- Fixed the select picker appearing at an incorrect position when the
<select> element is anchor positioned. (312811@main) (175454476)
- Fixed
field-sizing: content clipping the placeholder on number inputs that have no value. (312936@main) (175883299)
- Fixed
<option> and <optgroup> elements to match the :disabled pseudo-class when inside a disabled <select>. (312890@main) (176559708)
HTML
New Features
- Added support for
tabindex, focus(), blur(), and autofocus on MathML elements per the HTML Standard. (312609@main) (176258900)
Resolved Issues
- Fixed
history.pushState() and history.replaceState() URL rewriting to match the updated specification. (312738@main) (83203469)
- Fixed sequential focus navigation to skip elements that do not meet the specification’s focusability requirements. (312032@main) (103370883)
- Fixed
innerText to no longer emit newlines for visibility: hidden block elements. (312010@main) (175569426)
- Fixed
innerText to correctly emit blank lines around <p> elements regardless of their CSS display value. (312169@main) (175729427)
- Fixed the speculative preload scanner to no longer incorrectly preload scripts inside SVG elements. (312327@main) (175800116)
- Fixed
innerText on tables to no longer emit spurious trailing newlines and to preserve row-exit newlines after empty rows. (312941@main) (176635985)
Images
Resolved Issues
- Fixed
naturalWidth and naturalHeight returning incorrect values for SVG images without intrinsic dimensions. (312552@main) (141196049)
- Fixed an issue where HDR images would flicker and lose their HDR appearance when overlapping layers animate. (312702@main) (163382580)
JavaScript
Resolved Issues
- Fixed an issue where parse errors in workers were not reported to the parent. (312701@main) (175610725)
- Fixed a performance issue with module resolution by limiting cache population to star-resolution and indirect-resolution cases. (312416@main) (175826413)
- Fixed a performance issue with
TypedArray.prototype.lastIndexOf by adding SIMD-accelerated reverse search for numeric types. (312383@main) (175904377)
- Fixed a performance issue where building a module namespace with many
export * statements was significantly slower than necessary. (312370@main) (175949532)
- Fixed
DataView constructor to match specification-defined argument validation order and error throwing behavior. (312483@main) (176110210)
- Fixed an issue where
Array.prototype.concat could produce incorrect results when combining arrays with incompatible indexing types. (312560@main) (176219964)
MathML
New Features
- Added support for multiple-character operators in MathML. (312867@main) (170907545)
Resolved Issues
- Fixed
padding and border rendering on <msqrt> and <mroot> elements and corrected token sizing for mathvariant. (312902@main) (173081436)
- Fixed absolute positioning of elements inside MathML by ensuring logical height is updated. (312905@main) (173088146)
- Fixed
tabIndex values not being set correctly for MathML elements. (312681@main) (174734133)
Media
New Features
- Added support for synchronized video playback on displays using genlock on macOS. (311815@main, 312166@main) (175197574)
Resolved Issues
- Fixed video playback failing when the declared MIME type in a
<source> element does not match the actual content type served by the server. (312399@main) (166181001)
- Fixed
ImageCapture to correctly queue takePhoto() and applyConstraints() requests to avoid concurrent capture session reconfiguration. (312196@main) (174950018)
- Fixed
::cue() selectors to correctly match the WebVTT root object in addition to child nodes. (312292@main) (175550173)
- Fixed Media Source Extensions
readyState not being updated immediately when playback stalls due to a gap in buffered data. (312694@main) (176330683)
Networking
Resolved Issues
- Fixed
XMLHttpRequest incorrectly dropping the request body during redirects. (312092@main) (98459882)
- Fixed an issue where partitioned cookies could not be deleted via
WKHTTPCookieStore. (312478@main) (174557252)
Rendering
New Features
- Added support for
anchor-valid and anchor-visible as aliases of anchors-valid and anchors-visible in position-visibility. (312080@main) (174438361)
- Added support for the Dutch IJ digraph in
text-transform: capitalize and ::first-letter, correctly titlecasing “ij” to “IJ” at word starts when the content language is Dutch. (312335@main) (175912959)
Resolved Issues
- Fixed an issue where a block formatting context with
margin-start could overlap an adjacent float. (312082@main) (93187697)
- Fixed boxes in the top layer to use the initial containing block as their static-position rectangle. (312908@main) (155495104)
- Fixed an issue where form controls with
height: 100% in auto-height containers incorrectly resolved to zero height. (312526@main) (161699543)
- Fixed text being incorrectly truncated in RTL containers when combined with
text-overflow: ellipsis and an inline-block pseudo-element. (312799@main) (168875614)
- Fixed an issue where
height: 100% was incorrectly calculated for replaced elements like images serving as grid items nested inside a flexbox. (312281@main) (169431440)
- Fixed an issue where if a document in an iframe uses
@prefers-color-scheme, it does not follow the color-scheme set by grandparents of the iframe. (312212@main) (172229372)
- Fixed an issue where list markers rendered on the wrong line when list items started with empty inline elements. (312356@main) (172762578)
- Fixed an issue where a child element with
filter: blur() ignored border-radius overflow clipping from its parent. (312531@main) (175519148)
- Fixed incorrect event type mappings where
mousemove and mouseup event listener region types were reversed. (312142@main) (175651369)
- Fixed an issue where containers with block-in-inline content did not expand when
max-height was removed. (312608@main) (175799547)
- Fixed always-on scrollbar thumbs not rendering on the root element of nested documents with
display: flex. (312300@main) (175866046)
- Fixed
scrollbar-gutter placement on the root element in RTL layouts. (312360@main) (175939512)
- Fixed an issue where numbered list item markers rendered with more spacing between the marker and list content than in other browsers. (312515@main) (176027025)
- Fixed an issue where block-level boxes nested within inline elements were not properly aligned when using
align-content: center. (312514@main) (176173122)
- Fixed a regression where
height: stretch on children of flex items incorrectly resolved to viewport height instead of behaving as auto when the flex container lacked an explicit height. (312916@main) (176288044)
- Fixed intrinsic sizing for non-replaced elements with percentage dimensions. (312828@main) (176493856)
SVG
Resolved Issues
- Fixed SMIL
repeat(n) event conditions not triggering animations. (312346@main) (173599629)
- Fixed
glyph-orientation-vertical: auto to use UTR#50 Vertical Orientation properties for correct character orientation in vertical text. (312008@main) (175064567)
- Fixed the SMIL clock value parser to accept hours greater than 99 and reject malformed seconds values. (312350@main) (175593583)
- Fixed
stroke-dasharray interpolation to use least common multiple for list length matching and corrected composition behavior. (312055@main) (175598175)
Security
Resolved Issues
- Fixed
Content-Security-Policy object-src with an empty or invalid source list to block empty <object> and <embed> elements consistently with object-src 'none'. (312899@main) (171298717)
Storage
Resolved Issues
- Fixed an issue where IndexedDB could incorrectly return a version 0 database after an abort during the initial
onupgradeneeded event. (312535@main) (176195526)
- Fixed
FileSystemHandle serialization and deserialization when no storage is available. (312616@main) (176267344)
Web API
New Features
- Added support for creating dedicated workers inside shared workers per the HTML Standard. (312503@main) (118945089)
Resolved Issues
- Fixed the parent window’s
history.state being set to null when history.pushState is called from a child iframe. (312475@main) (50019069)
- Fixed clicking on a scrollbar of an overflow container blurring the current
activeElement. (312924@main) (92367314)
- Fixed an issue where an
Event object’s target property could lose its JavaScript wrapper due to premature garbage collection. (312017@main) (175439759)
- Fixed
FileSystemDirectoryHandle.resolve() to return the correct path array for child entries. (312061@main) (175645387)
- Fixed
PerformanceNavigationTiming.domInteractive and domContentLoadedEventEnd incorrectly returning 0 instead of the correct timestamps. (312500@main) (175739835)
- Fixed
FileSystemDirectoryHandle.removeEntry() to correctly remove entries. (312193@main) (175745157)
- Fixed
CryptoKey to correctly remain associated with its secure context. (312502@main) (176157712)
- Fixed: Improved cross-origin isolation enforcement for workers. (312518@main) (176175488)
- Fixed
SharedArrayBuffer cloning and agent cluster ID assignment. (312800@main) (176465817)
Web Extensions
New Features
- Added support for propagating user gestures through
sendMessage(), connect(), postMessage(), and executeScript() APIs, enabling extensions to perform gesture-requiring actions like media playback. (312463@main) (175797617)
Resolved Issues
- Fixed an issue where web extension service worker registration database files accumulated on each Safari launch, causing performance degradation. (312231@main) (175484888)
Web Inspector
Resolved Issues
- Fixed an issue where the input field for recording canvas frames in the Graphics tab was sometimes too small to type in and only allowed typing one character at a time. (312433@main) (157787230)
- Fixed Timeline recordings showing unrelated events incorrectly nested inside longer events. (312649@main) (176309164)
WebAssembly
Resolved Issues
- Fixed a regression where
RegisterSet::normalizeWidths() lost vector-width information, causing v128 argument corruption in WebAssembly SIMD thunks. (312610@main) (176035764)
WebGL
Resolved Issues
- Fixed
compressedTexImage not validating whether the compressed texture format extension has been enabled. (312180@main) (175652171)
- Fixed some
texImage functions reporting errors with incorrect function names. (312156@main) (175652807)
- Fixed some WebGL context state properties not being correctly reset on context loss. (312605@main) (176190808)
WebGPU
Resolved Issues
- Fixed
GPUDevice.onuncapturederror event handler attribute not working. (312043@main) (149577124)
- Fixed: Restored
maxStorageBuffersInFragmentStage and related WebGPU limits. (312387@main) (160800947)