Release Notes for Safari Technology Preview 241

Safari Technology Preview Release 241 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: 309287@main…310186@main.

Accessibility

Resolved Issues

  • Fixed an issue where calling speechSynthesis.cancel() removed utterances queued by subsequent speechSynthesis.speak() calls. (309349@main) (46151521)
  • Fixed an issue where incorrect bounding boxes were computed for MathML table rows and cells. (309640@main) (172851295)
  • Fixed an issue where comboboxes did not forward focus to their aria-activedescendant, preventing assistive technologies from interacting with list items. (309641@main) (172931277)
  • Fixed an issue where aria-owns was not respected when computing the accessible name from element content. (310020@main) (173249317)

Animations

Resolved Issues

  • Fixed an issue where animation-fill-mode did not correctly apply viewport-based units after the viewport was resized. (310007@main) (80075191)

CSS

New Features

  • Added support for the stretch keyword in box sizing properties. (309405@main) (132539604)
  • Added stable support for CSS scroll anchoring. (310113@main) (171840378)

Resolved Issues

  • Fixed an issue where U+2028 LINE SEPARATOR was not rendered as a forced line break per the CSS specification. (309701@main) (88470339)
  • Fixed an issue where outline-offset was inflated for outline: auto on macOS. (309812@main) (94116168)
  • Fixed font-family serialization to preserve quotes around family names that match CSS-wide keywords or generic families. (309959@main) (125334960)
  • Fixed an issue where a font was downloaded despite no characters in the document falling within its unicode-range. (309360@main) (140674753)
  • Fixed an issue where a flex item containing a percentage-height image did not shrink correctly around the image. (309544@main) (156902823)
  • Fixed an issue where View Transition snapshots were incorrectly stored in sRGB, causing rendering issues with non-sRGB colors. (310012@main) (167634138)
  • Fixed a performance issue where contain: layout caused significantly slower forced layouts when all siblings created their own formatting context. (310173@main) (171545381)
  • Fixed an issue where underlines were split when a ruby base was expanded due to long ruby text. (309356@main) (171653095)
  • Fixed an issue where changing color-scheme did not repaint the background of composited iframes. (309567@main) (171658244)
  • Fixed an issue where nested children of a popover element failed to render when using position: absolute. (310019@main) (171735933)
  • Fixed an issue where color: initial resolved to the wrong color in dark appearance mode. (309430@main) (172320282)
  • Fixed an issue where an element with display: contents did not establish an anchor scope when using anchor-scope. (309946@main) (172355302)
  • Fixed a regression where media queries could fail to resolve correctly in the presence of viewport units and anchors, causing styles to not update on viewport changes. (309470@main) (172385594)
  • Fixed a regression where absolutely positioned elements with intrinsic height incorrectly resolved percentage heights, causing content to not render on some sites. (309513@main) (172513516)
  • Fixed <general-enclosed> in media queries to reject content with unmatched close brackets per the <any-value> grammar. (309497@main) (172575115)
  • Fixed an issue where a right-floated table could overlap another table. (309316@main) (172655655)
  • Fixed an issue where grid containers failed to avoid float boxes. (309317@main) (172655720)
  • Fixed an issue where checkboxes could overlap with adjacent text. (310015@main) (172741572)
  • Fixed an issue where the rlh unit was double-zoomed with evaluation-time CSS zoom. (309654@main) (172798163)
  • Fixed outline: auto to correctly respect zoom. (309926@main) (173068660)
  • Fixed :active, :focus-within, and :hover pseudo-classes to correctly account for elements in the top layer. (309755@main) (173145294)
  • Fixed the shape() function to omit default control point anchors in computed value serialization per the CSS Shapes specification. (309851@main) (173233716)
  • Fixed: Updated SVG and MathML user agent style sheets to use :focus-visible instead of :focus. (309912@main) (173321368)
  • Fixed an issue where view transition snapshots could capture stale transform values for accelerated CSS transform animations. (309982@main) (173323193)
  • Fixed an issue where lh and rlh units resolved with double-zoom when line-height was a number value. (310043@main) (173448638)
  • Fixed outline-width to be ignored when outline-style is auto, matching the specification. (310145@main) (173567890)
  • Fixed :in-range and :out-of-range pseudo-classes for time inputs with reversed ranges. (310156@main) (173589851)

Canvas

Resolved Issues

  • Fixed an issue where a 2D canvas element unnecessarily forced a compositing layer. (309599@main) (172864747)

Forms

Resolved Issues

  • Fixed an issue where keyboard commands such as paste did not work in form fields that restrict input to numbers. (309300@main) (4360235)
  • Fixed: Made the <input type="checkbox" switch> control behave more like other controls with regards to native appearance CSS properties. (310143@main) (173487610)

HTML

New Features

  • Added support for the auto keyword in the sizes attribute on <img> elements, enabling automatic size calculation based on the rendered layout width. (309476@main) (172827205)

Resolved Issues

  • Fixed an issue where an HTML map element without a name attribute did not match its associated image using the id attribute. (309490@main) (12359382)
  • Fixed an issue where replaceWith() stopped processing remaining nodes if a script in the replacement removed a sibling. (309411@main) (172753019)
  • Fixed an issue where HEIC images were incorrectly converted to JPEG when uploaded via drag-and-drop. (309872@main) (173206598)
  • Fixed an issue where setting the rel attribute on an <a> element multiple times did not clear prior link relations. (310144@main) (173567839)

Images

Resolved Issues

  • Fixed an issue where adopting a standalone img element did not update its image data. (309523@main) (172856773)

JavaScript

Resolved Issues

  • Fixed Array.prototype.concat to correctly handle arrays with indexed accessors, preventing getter reentry from bypassing Symbol.isConcatSpreadable checks. (309423@main) (172237596)
  • Fixed an issue where a greedy or non-greedy non-BMP character class in a regular expression could advance the index past the end of input. (309968@main) (172978772)
  • Fixed TypedArray [[Set]] to check the receiver before writing to the typed array. (309967@main) (173386404)

MathML

Resolved Issues

  • Fixed an issue where symmetric non-stretchy large operators were not centered around the math axis. (309778@main) (170905663)
  • Fixed an issue where minsize and maxsize defaults and percentages did not use the unstretched size as specified. (309764@main) (170908253)

Media

Resolved Issues

  • Fixed an issue where preservesPitch and playbackRate were not correctly handled on an HTMLMediaElement connected to an AudioContext via createMediaElementSource. (310098@main) (93275149)
  • Fixed an issue where video captions could be hidden behind other elements during inline playback. (309505@main) (171023402)
  • Fixed an issue where seeking in a WebM video did not work correctly while content was still loading. (309373@main) (172473039)
  • Fixed an issue where media playback could not move to the next item in a playlist when the tab was in the background. (309879@main) (172676372)
  • Fixed an issue where HDR video content appeared washed out due to colorspace information being lost during processing. (309502@main) (172721079)

Networking

Resolved Issues

  • Fixed a regression where the referrer could be missing after a process-swap navigation. (309382@main) (169006635)

Printing

Resolved Issues

  • Fixed an issue where animations were not rendered during print, causing missing content on animated pages. (309488@main) (36901701)
  • Fixed an issue where printing light text on a dark background with backgrounds disabled could result in invisible text. (309604@main) (170070133)

Rendering

Resolved Issues

  • Fixed an issue where the document background color did not align with the CSS specification, causing incorrect background colors when pinch-zooming out. (309332@main) (23607800)
  • Fixed an issue where WidthIterator consumed the first character twice, potentially causing incorrect text measurement. (309437@main) (128492167)
  • Fixed a regression where hovering over elements could leave repaint artifacts on the page. (309861@main) (169112402)
  • Fixed an issue where Find in Page scrolled to the wrong location when matching text inside elements with user-select: none. (309923@main) (170477571)
  • Fixed an issue where remote snapshotting could flip part of the page. (309441@main) (170868383)
  • Fixed an issue where an anonymous block created for list markers was not properly collapsed when block content prevented line-box parenting. (309466@main) (172686060)
  • Fixed an issue where elements flickered when scrolling. (309493@main) (172701438)
  • Fixed an issue where U+2029 PARAGRAPH SEPARATOR was not treated as a forced line break. (309706@main) (173106856)
  • Fixed an issue where tiles were missing after navigating back in history. (309966@main) (173288233)

SVG

Resolved Issues

  • Fixed an issue where SVG animation did not clear the animated CSS property when attributeName was dynamically changed. (309621@main) (97097883)
  • Fixed an issue where a CSS filter referencing an SVG filter via url(#id) was not invalidated when the filter content changed. (309495@main) (101870430)
  • Fixed an issue where invalid SVG filter effects were rendered instead of being suppressed. (309463@main) (130951885)
  • Fixed an issue where getScreenCTM() did not include CSS transforms and zoom contributions in the legacy SVG rendering path. (309354@main) (171525696)
  • Fixed an issue where an SVG <image> element was not repainted when the href attribute was removed. (309397@main) (172530834)
  • Fixed an issue where an invalid attribute type in one SVG animation group prevented all subsequent animation groups from running. (309436@main) (172593109)
  • Fixed a regression where wheel events were not dispatched to an empty <svg> root element. (310013@main) (172909441)
  • Fixed an issue where SMIL parseClockValue did not reject out-of-range minutes and seconds values per the SMIL timing specification. (310184@main) (173577212)

Deprecations

  • Removed the SVGLocatable and SVGTransformable interfaces to align with the SVG2 specification. (309396@main) (104668934)
  • Removed the viewTarget property from SVGViewSpec to align with the SVG2 specification. (309424@main) (172590438)

Storage

New Features

  • Added support for setting maxAge in the Cookie Store API via cookieStore.set(). (309738@main) (166301541)

Web API

New Features

  • Added support for fractional coordinates in PointerEvent and TouchEvent properties such as clientX/clientY, pageX/pageY, offsetX/offsetY, and screenX/screenY, while MouseEvent values remain whole. (298383@main) (9564176)

Resolved Issues

  • Fixed NavigateEvent.navigationType to return "replace" when navigating to a URL that matches the active document’s URL. (309871@main) (169999046)
  • Fixed an issue where navigation.currentEntry.key did not change in private browsing windows after calling history.pushState(). (309489@main) (171147417)
  • Fixed a performance issue where ResizeObserver callbacks became increasingly sluggish over time. (309376@main) (172718139)
  • Fixed an issue where IntersectionObserver could get sluggish over time due to O(n^2) iteration when observing many elements. (309387@main) (172727210)
  • Fixed an issue where navigation.currentEntry.id did not change in private browsing windows after calling history.replaceState(). (309560@main) (172897962)

Web Inspector

Resolved Issues

  • Fixed an issue where an active recording in the Timelines tab would stop when navigating or reloading the current page even when the setting to stop recording once the page loads was turned off. (309566@main) (169732727)

WebRTC

New Features

  • Added support for the RTCRtpCodec dictionary and related constructs. (309610@main) (172745579)

Resolved Issues

  • Fixed an issue where RTCDataChannel did not check the SCTP buffered amount synchronously. (309322@main) (172386678)
  • Fixed an issue where MediaStreamTrack could have incorrect settings if the source settings changed while the track was being transferred. (309458@main) (172657570)
  • Fixed an issue where a remote WebRTC track was not unmuted when the first packet was received. (309987@main) (172904930)
  • Fixed validation of RTC send encodings to better align with the specification. (310055@main) (172997814)