Release Notes for Safari Technology Preview 244

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…313209@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 currentTime on iOS to update more frequently during media playback. (312246@main) (175774587)
  • 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)
  • Fixed an issue where @prefers-color-scheme in an SVG image will sometimes not follow the system color preference. (313021@main) (176413340)

Scrolling

Resolved Issues

  • Fixed an issue on iOS where programmatic smooth scrolling with scroll-snap-type: mandatory failed after the browser chrome was hidden. (312558@main) (100727098)
  • Fixed an issue on iOS where restored scroll position was incorrect after relaunching Safari. (312430@main) (127308062)
  • Fixed scrollTo() clamping incorrectly before layout completes, causing wrong scroll position after navigating back, as a quirk for x.com. (312749@main) (175565114)
  • Fixed an issue on iOS where scroll position was not preserved correctly when rotating the device on right-to-left pages. (312391@main) (175910769)

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 calling preventDefault() during a pointerdown event to correctly suppress mousedown and mouseup compatibility events on iOS. (312396@main) (174864309)
  • 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)