Release Notes for Safari Technology Preview 253
Safari Technology Preview Release 253 is now available for download for macOS Golden Gate and macOS Tahoe. 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: 320113@main…321067@main.
Accessibility
Resolved Issues
- Fixed an issue where VoiceOver announced
aria-keyshortcutsvalues containingMetaorAltliterally instead of using the macOS terminologyCommandandOption. (320424@main) (186342070) - Fixed an issue where VoiceOver could repeatedly announce the same live region content as it streamed into a page. (320576@main) (186694747)
Animations
New Features
- Added support for style-originated scroll timelines to match globally, allowing them to be defined outside of the target’s hierarchy or that of an element with a
timeline-scopeproperty. (320183@main) (186261285)
Resolved Issues
- Fixed an issue where an animation attached to a view timeline’s scroll range was not updated when the scroll container’s scrollable overflow changed. (320244@main) (185328465)
- Fixed an issue where an animation could attach to a style-originated timeline made visible by
timeline-scopeinstead of one established by an ancestor, which now takes priority. (320223@main) (186265325) - Fixed an issue where a style-originated timeline defined outside of a
timeline-scopehierarchy could remain active instead of yielding an inactive timeline. (320227@main) (186330965) - Fixed an issue where changing a
timeline-scopevalue did not update timelines for animations outside of its hierarchy. (320231@main) (186331685) - Fixed a regression where a paused and seeked animation incorrectly finished when resumed after a separate animation running at a non-default playback rate. (320238@main) (186339093)
- Fixed an issue where the
ViewTimelineconstructor did not require asubjectparameter. (320969@main) (187200265)
CSS
New Features
- Added support for the extended numeric range in longhand East Asian counter styles. (320887@main) (109875198)
- Added support for
CSSContainerRule.conditions. (320762@main) (182257864) - Allow combining
safeandunsafekeywords withnormalalignment, and changesafebehavior for absolutely (and fixed positioned) boxes to keep the box within their original containing block (the viewport). (185952139) - Added support for using
sibling-index()andsibling-count()within container query conditions. (320493@main) (186564084)
Resolved Issues
- Fixed an issue where a near-zero fixed
background-sizevalue collapsed the image tile to nothing. (320169@main) (140387662) - Fixed an issue where the
[class~=foo]attribute selector did not perform as well as an equivalent class selector. (320862@main) (164128575) - Fixed an issue where highlight colors, such as those used by
::selection, did not inherit as aStyleColor, which could prevent values likecolor-mix(in oklab, teal 50%, currentcolor)from resolving correctly. (320228@main) (184495338) - Fixed an issue where a second CSS custom highlight sharing a
Rangewith an already-registered highlight never painted. (320355@main) (185173794) - Fixed an issue where outside list markers were only repositioned after layout when their first formatted line was in a descendant block, instead of for every outside list marker. (320561@main) (185529863)
- Fixed an issue where an inset
box-shadowwith a large spread on a wrapped inline element painted outside the element as full-width bands. (320150@main) (185651318) - Fixed an issue where
CSS.highlightsiterated in hash order instead of registration order after its wrapper was garbage collected. (320343@main) (185754041) - Fixed an issue where
corner-shaperendered incorrectly when inner corners intersected. (320287@main) (185931169) - Fixed an issue where a grid item with an
aspect-ratiocould keep a stale inline size contribution when the grid container shrank. (320117@main) (186101273) - Fixed an issue where flexible grid tracks did not respect the grid container’s minimum and maximum size. (320160@main) (186103325)
- Fixed an issue where fixed grid track sizing functions were overridden to zero while sizing tracks to fit non-spanning items. (320168@main) (186117142)
- Fixed an issue where explicitly-placed grid items advanced the auto-placement cursor. (320253@main) (186118858)
- Fixed an issue where the propagated root background was painted in the wrong position in
vertical-rlwriting mode. (320167@main) (186274088) - Fixed an issue where opening a
<details>element made its<summary>one pixel shorter. (320461@main) (186413478) - Fixed an issue where a typed parameter of a CSS custom function did not keep its type. (320340@main) (186439114)
- Fixed an issue where
attr()stopped invalidating on attribute changes after a view transition. (320420@main) (186467515) - Fixed an issue where
unicode-bidianddirectionhad no effect on an inside::marker. (320504@main) (186468752) - Fixed an issue where
fit-tolerancedid not interpolate between<length-percentage>values. (320383@main) (186509338) - Fixed an issue where a grid item’s automatic minimum size was not clamped to a fixed maximum track sizing function. (320750@main) (186606479)
- Fixed a regression where the line-height quirk in quirks mode was not applied to line boxes inside a nested
inline-blockelement that had noline-heightof its own. (320514@main) (186614663) - Fixed an issue where interpolating a
<length-percentage>from acalc()value to a pure<length>dropped the percentage component at 100% progress. (320585@main) (186628152) - Fixed an issue where
text-decoration-thicknessandtext-underline-offsetdid not preserve percentage values when interpolating. (320584@main) (186628810) - Fixed an issue where
align-contentleft the list marker behind. (320532@main) (186676835) - Fixed an issue where
text-indentmoved an outside list marker along with the indented text. (320533@main) (186678552) - Fixed an issue where a float in a list item’s content pushed the outside list marker inward with the line. (320549@main) (186680551)
- Fixed an issue where a tab character rendered too narrow when
tab-sizewas small in a proportional font. (320671@main) (186698040) - Fixed an issue where a gradient in the
contentproperty painted blank. (320620@main) (186742805) - Fixed an issue where some combinations of
corner-shapewith thick borders rendered incorrectly. (320826@main) (186808871) - Fixed an issue where
fit-content()grid tracks could be stretched beyond their argument instead of capping the track’s growth limit. (320780@main) (186961437) - Fixed an issue where an orthogonal
<caption>‘s margins were missing from the table. (321056@main) (187137359) - Fixed an issue where an orthogonal
<caption>ignored its margin against the table edge. (321060@main) (187139068) - Fixed an issue where transforming a table row group could misplace its absolutely positioned children. (321065@main) (187252945)
- Fixed an issue where the resolved
rightandbottomvalues of an out-of-flow positioned element were wrong inside a vertical inline containing block. (321061@main) (187295559) - Fixed an issue where the identity and translation fast path of a transformation matrix ignored the
wcomponent when mapping a 4-component point. (321030@main) (187297446)
Canvas
Resolved Issues
- Fixed an issue where a placeholder
<canvas>element with no pushedOffscreenCanvasframe would fail instead of returning a transparent black image. (320202@main) (186229685) - Fixed an issue where an off-by-one error in the bottom-row check caused canvas noise injection to misclassify the bottom-left pixel. (320510@main) (186640624)
- Fixed a performance regression where drawing a canvas onto itself with
drawImageprevented its backing surface from being recycled. (320735@main) (186731221) - Fixed an issue where a canvas 2D context remained unusable after a temporary failure to allocate its backing store. (320605@main) (186799597)
- Fixed an issue where drawing to
<canvas>computed path bounds unnecessarily when the whole backing store was already marked dirty. (320709@main) (186946552)
Editing
Resolved Issues
- Fixed an issue where the context menu in PDFs with copying disabled was missing text selection options. (320444@main) (186527750)
- Fixed an issue on macOS where the Copy option was enabled in the edit menu after selecting text in a PDF that disallows copying. (320534@main) (186648332)
Forms
Resolved Issues
- Fixed an issue where a large picker for a base-appearance
<select>could render outside the viewport, by applyingsafealignment to keep it within its original containing block. (320564@main) (185952139)
HTML
Resolved Issues
- Fixed an issue where the window
loadevent could fail to fire if areadystatechangehandler triggered a new load during page completion. (320331@main) (186373617)
JavaScript
New Features
- Added support for
BigIntvalues inIntl.PluralRules.prototype.selectandIntl.PluralRules.prototype.selectRange. (320396@main) (186534585) - Added support for a faster Toom-3 multiplication algorithm for large
BigIntvalues. (321013@main) (187336927)
Resolved Issues
- Fixed an issue in JavaScriptCore where a stale inline cache for a custom accessor on a previously flattened dictionary could persist after the accessor was shadowed, which could cause code that replaces built-in properties at runtime (such as a test mocking library overriding
XMLHttpRequest) to keep using the original value. (320742@main) (180048596) - Fixed an issue where
Intl.DurationFormatindigitalstyle included a stray separator whenminutesDisplaywas set to"auto"and minutes ended up hidden. (320182@main) (180722012) - Fixed an issue where
Array.prototype.toSplicedthrew aTypeErrorinstead of aRangeErrorwhen the array’s length wasInfinity. (320554@main) (184438837) - Fixed an issue where
TypedArraysetFromTypedArraycould not usememmovewhen the region was intentionally overlapping and the spec algorithm needed to read back the modified result. (320130@main) (186145219) - Fixed an issue where the
TypedArrayconstructor could produce incorrect results when copyingArraycontent whose element access has side effects. (320185@main) (186227333) - Fixed a performance issue where
String.prototype.toLowerCaseandString.prototype.toUpperCasedid not scan strings inline in the DFG and FTL JIT tiers. (320293@main) (186301688) - Fixed an issue where a character following a class set operand in a
/vmode regular expression class incorrectly addedU+0000to the class. (320216@main) (186319779) - Fixed an issue where
Temporal.ZonedDateTime.prototype.roundresolved the rounded wall-clock time using a minute-rounded offset instead of the correct offset. (320217@main) (186319834) - Fixed an issue where
Object.freeze()did not invalidate the megamorphic inline cache epoch, which could cause stale property accesses on a frozen object. (320276@main) (186393610) - Fixed an issue where deleting a property of a dictionary prototype in place did not invalidate the megamorphic store cache. (320375@main) (186513123)
- Fixed a performance issue where
RegExp.prototype.testdid not fast-fail when the input string was shorter than the pattern’s minimum possible match length. (320487@main) (186534079) - Fixed an issue where regular expression lookbehind assertions could fail to match, or match at an invalid position, due to incorrect handling of surrogate pairs in the regular expression interpreter. (320492@main) (186536137)
- Fixed an issue where
Atomics.isLockFree()converted its argument with a 32-bit integer conversion instead ofToIntegerOrInfinity, which could cause it to incorrectly returntruefor large size values. (320715@main) (186610789) - Fixed an issue where a stack frame for a script loaded from a
data:URL included the entire script inError.stackinstead of a truncated URL. (320770@main) (186614179) - Fixed an issue where a JIT fast path for
RegExp.prototype.testcould skip the required read oflastIndex, silently dropping observable side effects. (320582@main) (186792229) - Fixed an issue where tail-call optimization was skipped for
evalcalls that didn’t resolve to the realevalfunction, and incorrectly applied inside generator and async function bodies, which could produce incorrect results. (320687@main) (186840477) - Fixed an issue where
RegExp.escapeincorrectly narrowed supplementary code points to 16 bits. (320682@main) (186962453) - Fixed an issue where a
\-following a class set operand in a/vmode regular expression class incorrectly threw aSyntaxError. (320683@main) (186962513) - Fixed an issue where
RegExp::deleteCode()cleared a regular expression’s cached pattern atom, which could cause incorrect values from staticRegExpproperties such asleftContextandrightContextafter the compiled code was reclaimed while idle. (320817@main) (187104089) - Fixed an issue where
String.prototype.atandString.prototype.codePointAtcould return an incorrect value for an out-of-bounds or negative index because the JIT compiler could eliminate their bounds check. (321014@main) (187336661)
Media
Resolved Issues
- Fixed an issue where wireless playback could create a remote media session helper too eagerly, which could delay switching an active playback route to a wireless device. (320748@main) (184536781)
- Fixed an issue where
MediaRecordercould hold back a lone video keyframe indefinitely instead of using it to start a new recording segment. (320219@main) (186229843) - Fixed an issue where an AV1 sequence header that exactly filled the buffer was incorrectly rejected due to an off-by-one bounds check. (321041@main) (187306821)
- Fixed an issue where black video-range pixel buffers were produced with super-black values instead of legal black. (321040@main) (187309125)
Networking
Resolved Issues
- Fixed an issue where custom scheme CORS checks incorrectly blocked subresources loaded from an HTML document opened via a
file:URL. (320685@main) (179999480) - Fixed an issue where reading a file-backed
Blobrange larger than 2GB truncated the read length due to an integer overflow. (320981@main) (187207663) - Fixed an issue where validation of an HTTP header value did not check its final character, allowing control characters and DEL to be accepted as valid. (321019@main) (187288970)
Performance
Resolved Issues
- Fixed an issue where navigation could redundantly parse and decode a page’s URL multiple times, causing significant hangs for pages with very long URLs. (320292@main) (185796614)
- Fixed excessive CPU and power usage caused by
IntersectionObserverobservation on pages with many observed elements. (320395@main) (185839711) - Fixed an issue where style resolution for elements sharing a
scroll-timelinename could block the main thread for multiple seconds. (320902@main) (186090970) - Fixed an issue where
ScrollingStateTree::insertNodeperformed redundant work reordering children on pages with many sibling scrolling nodes. (320527@main) (186143008) - Fixed an issue where ordinary property changes, such as toggling
overflow: hidden, could trigger an unnecessary full-layer repaint. (320296@main) (186422878)
Rendering
Resolved Issues
- Fixed an issue where a layer with a negative
z-indexinside a stacking context failed to composite correctly when overlapping an externally composited layer. (320473@main) (130595406) - Fixed an issue where the
<mo>operator dictionary was consulted even when the element contained non-text content. (320730@main) (173078723) - Fixed an issue where accents and other combining marks could be painted outside their base letter when letter-spacing, word-spacing, expansion, or synthetic bold were applied. (320957@main) (186013305)
- Fixed a regression that caused extra spacing to appear between an image and surrounding content near the bottom of a page. (320115@main) (186102748)
- Fixed an issue where hovering links could trigger unnecessarily wide repaints, by repainting ink-overflow-only style changes without running inline layout. (320128@main) (186104270)
- Fixed an issue where text nodes inside a
display: contentselement received redundant updates during style resolution. (320144@main) (186246705) - Fixed an issue where content changing inside an element with a
blur()filter did not properly repaint, leaving stale pixels around the edge of the filtered region. (320398@main) (186278957) - Fixed an issue where a MathML
rowspan="0"attribute was incorrectly clamped to 1. (320324@main) (186420659) - Fixed an issue where non-MathML children of
<annotation>and<annotation-xml>were not rendered. (320334@main) (186429768) - Fixed an issue where drawing a native image did not respect the requested
InterpolationQuality, affecting image scaling across canvas, SVG, and PDF rendering paths. (320429@main) (186439811) - Fixed an issue where a layer with
clip-pathormaskcould be treated as fully opaque, causing incorrect rendering. (320634@main) (186722177) - Fixed an issue where a
position: stickyelement with-webkit-box-reflectapplied could composite its reflection incorrectly. (320712@main) (186812790) - Fixed an issue where an optimization to text matrix handling when drawing glyphs could cause text to render upside down. (321067.5@safari-7626.1.8-branch) (187588379)
SVG
New Features
- Added support for the SVG 2
pathattribute on<textPath>, which lets text follow an inline path without referencing a separate<path>element viahref. (321038@main) (185831618)
Resolved Issues
- Fixed an issue where SVG conditional processing attributes on
clipPath,mask, andpatternelements incorrectly prevented the resource from being referenced. (320207@main) (19103270) - Fixed an issue where SVG number attributes did not revert to their initial value when removed or set to an invalid value. (320226@main) (165378154)
- Fixed an issue where a SMIL animation of a presentation attribute was never released after the animated element was detached from the document, permanently freezing the animated value. (320199@main) (185452156)
- Fixed an issue where
SVGLengthresolvedexunits by rounding the font’s x-height up to a whole pixel, causing the SVG DOM andgetComputedStyleto disagree. (320606@main) (185984854) - Fixed an issue where additive color animations in SVG lost precision due to per-layer 8-bit rounding. (320166@main) (186223510)
- Fixed an issue where an SVG transform change could leave an ancestor layer’s cached repaint rects stale, resulting in incorrect repainting. (320722@main) (187005898)
- Fixed an issue where
SVGImage::isAnimating()returnedtruefor SVG images that had no animations. (320839@main) (187106396)
Security
Resolved Issues
- Fixed an issue where a click in a backgrounded window could result in an action being taken. (320186@main) (186280350)
- Fixed an issue where
CredentialStorage::removeCredentialsWithOriginfailed to purge HTTPS credentials that used the default port. (320968@main) (187210150)
Web API
New Features
- Added support for
QuotaExceededErroras aDOMExceptionsubclass, exposed onwindowand worker global scopes. (320856@main) (141586555)
Resolved Issues
- Fixed an issue where
scrollWidthandclientWidthreturned inconsistent values when the page was zoomed in or out due to rounding. (320773@main) (121879134) - Fixed an issue where rotating the device to landscape orientation could pause a video playing in full screen, by adding a site-specific quirk. (320318@main) (148284059)
- Fixed several
URLPatternmatching issues affecting Service Worker routing, including incorrect encoding of theusernameandpasswordcomponents and unhandled unclosed pattern groups. (320122@main) (183434701) - Fixed an issue where WebDriver reported an empty URL instead of
about:blankfor a browsing context that had not yet navigated. (320428@main) (183468933) - Fixed an issue where
WKWebView.magnificationreported the pre-gesture scale for a few moments after a pinch-to-zoom gesture ended, instead of the scale about to commit. (320341@main) (185381317) - Fixed an issue where
Cache.delete()andCache.keys()swallowed exceptions thrown while constructing aRequestfrom a URL string. (320524@main) (186636105) - Fixed a regression where WebXR hit testing failed with a
TypeErrorwhenoffsetRaywas not specified. (320717@main) (186997100) - Fixed an issue where interrupting a scroll with a tap could incorrectly trigger navigation of the link under the pointer. (321053@main) (187268555)
- Fixed an issue where click events did not include the modifier keys that were pressed at the time of the click. (320984@main) (187270584)
Web Extensions
New Features
- Added support for the
offscreenAPI. (318833@main) (184269255)
Resolved Issues
- Fixed an issue where
i18n.getMessage()dropped non-string substitution arguments instead of coercing them to strings. (320931@main) (149855718) - Fixed an issue where
webRequest.onBeforeRequestreported the resource typemain_frameinstead ofsub_framefor subframe document loads. (321067@main) (167403388) - Fixed an issue where a high priority static declarativeNetRequest redirect rule was not favored over a low priority session redirect rule. (320739@main) (176176246)
- Fixed an issue where
webRequestevents did not fire for loads blocked by a declarativeNetRequest rule. (320336@main) (176177851) - Fixed an issue where
webRequestevents did not fire for page loads created withtabs.create. (320430@main) (177727052) - Fixed an issue where an extension’s service worker lost its clients after being unloaded and reloaded, preventing it from finding an existing offscreen document. (320198@main) (186116488)
- Fixed an issue where an extension’s popover could be cut off because
vh,svh, andlvhunits resolved to the popover’s minimum height instead of its actual size. (320726@main) (186391990)
Web Inspector
New Features
- Added support for network throttling of the inspected page. (320893@main) (144892477)
Resolved Issues
- Fixed an issue in Web Inspector where
WebSockethandshake headers were missing when using theNetwork.frameworkloader. (320156@main) (185255819) - Fixed an issue in Web Inspector where a
Debugger.globalObjectClearedevent from a subframe cleared every target’s script map instead of only the affected target’s. (320787@main) (187042936)
WebAssembly
Resolved Issues
- Fixed an issue where JS string builtins and imported string constants were not applied when compiling WebAssembly modules loaded as ES modules. (320174@main) (186037843)
- Fixed an issue where the
WebAssembly.Exceptionconstructor rejectednulloptions and incorrectly accepted non-object options. (320215@main) (186319813) - Fixed an issue where the WebAssembly validator rejected
i31.get_sandi31.get_uwhen the operand’s static type was a bottom reference type. (320578@main) (186660590)
WebDriver
Resolved Issues
- Fixed an issue where WebDriver BiDi’s
script.call_functiontrimmed error messages incorrectly, cutting off part of the message. (320205@main) (186311752) - Fixed an issue where WebDriver’s
deleteAllCookiescommand could report success before cookies had actually finished being deleted. (320440@main) (186410147) - Fixed an issue where WebDriver reported a stale element reference error instead of a no such element error for a node reference belonging to a different browsing context. (320518@main) (186615759)
- Fixed an issue where WebDriver did not properly handle the right-hand variants of modifier keys, such as
ShiftRightandControlRight, on Cocoa platforms. (320741@main) (186961436) - Fixed a regression where WebDriver returned
no such elementinstead ofstale element referencefor a node reference from a previous document. (320729@main) (187042183) - Fixed an issue where WebDriver’s Add Cookie command dropped the cookie when the request did not include a
sameSiteattribute. (320916@main) (187193380)
WebGL
Resolved Issues
- Fixed an issue where WebGL contexts created with
premultipliedAlpha: falsewere composited incorrectly. (320650@main) (53509398)
WebGPU
Resolved Issues
- Fixed an issue where uploading a
canvasas a WebGPU texture had very poor performance. (320765@main) (153642354) - Fixed an issue where
GPUDevice.createBindGroup()‘s fast path failed to reuse bind groups containing aGPUBufferentry alongside an external texture, forcing an unnecessary full rebuild. (320309@main) (186379208) - Fixed an issue where a WebGPU external texture imported from a
videoelement using WebM or MSE playback rendered as a black placeholder instead of the video frame. (320427@main) (186470526) - Fixed an issue where using WebGPU render bundles on some GPUs could cause the device to be unexpectedly lost. (320689@main) (186688781)
- Fixed an issue where WebGPU could report the
primitive-indexfeature as available on GPUs that don’t support it, resulting in an uncaptured error. (320691@main) (186690340) - Fixed an issue in WebGPU where an array value constructor referenced through a type alias could generate invalid Metal Shading Language, silently producing incorrect compute results. (320690@main) (186803296)
- Fixed an issue in WebGPU where inlining three or more calls to a function operating on a large struct could silently miscompile on some devices, producing incorrect results. (320697@main) (186804865)
- Fixed an issue where asynchronous pipeline creation could stall rendering. (321042@main) (187296614)
WebRTC
Resolved Issues
- Fixed an issue where a WebRTC UDP connection to an unresolved remote address was incorrectly restricted to IPv6. (320716@main) (186844205)
- Fixed an issue where a TURN UDP connection could fail unnecessarily when DNS resolution failed, by allowing the socket to open directly to the host. (320720@main) (186847964)