Apple has released Safari Technology Preview 251, the latest version of its developer preview web browser. The preview version of Apple’s popular browser offers developers and other interested users the ability to try out features that may or may not, debut in future public release versions of Safari.
UPDATE: Apple has finally pubished the release notes for version 251. The list of changes is extensive:
- Fixed SVG anchors without an
href being exposed as links. (318186@main) (181924326)
- Added support for
@supports at-rule(...), which tests if a CSS at-rule is supported. (318482@main) (87884897) - Added support for the
object-view-box property. (318981@main) (132624217) - Added support for
property-scoped and property-index-scoped caching keywords in random(). (318960@main) (176395332) - Added support for the
random-item() function. (319180@main) (181816677) - Added support for a comma-separated list of conditions in
@container queries. (318233@main) (182249814) - Added support for
white-space-trim in the white-space shorthand. (318486@main) (182739052) - Added support for external and
data: URL filter references on HTML elements. (317991@main) (183059589) - Added support for
HighlightRegistry.highlightsFromPoint(). (318758@main) (184150480) - Added support for
random() in custom properties. (319039@main) (184715508) - Added support for the
ident() function. (319049@main) (184732904) - Added support for the
inherit() function. (319062@main) (184738624) - Added support for the
corner-shape property. (319205@main) (184950973)
- Fixed text overflowing a
max-width constrained box when the page is zoomed out, by scaling the minimum font size with the zoom factor. (318509@main) (66569768) - Fixed a background image not being repainted when only the URL fragment identifier changes. (318879@main) (105118256)
- Fixed a subgrid with a large
column-gap overflowing a parent constrained by max-width. (318009@main) (137422489) - Fixed nested
@scope picking the wrong scoping roots when <scope-start> contains :has(:scope ...). (318711@main) (138495467) - Fixed outside list markers disappearing or being mispositioned around line breaks. (318561@main) (159277763)
- Fixed the serialization of the
size property in @page when both a page size and orientation are given. (318083@main) (162168233) - Fixed the computed value of
outline-offset not being snapped as a line width. (319236@main) (180054053) - Fixed a flex item’s flex base size being clamped by its own
min-width and max-width. (318264@main) (180064739) - Fixed
:focus-visible being shown after calling focus() inside an already focused ancestor. (318775@main) (181570771) - Fixed multi-column height ignoring
min-height when it exceeds max-height. (318676@main) (182381903) - Fixed scroll snap selecting among equally aligned snap targets in the wrong order. (317997@main) (182571341)
- Fixed
text-underline-offset being mispositioned for highlighted text in vertical writing modes. (318107@main) (182889143) - Fixed the serialization of an unrecognized media query to preserve the original text as closely as possible. (318627@main) (182958311)
- Fixed the serialization of an unrecognized media query feature name to preserve the original casing. (318965@main) (183065105)
- Fixed
@container style queries evaluating root-relative lengths incorrectly. (318144@main) (183094796) - Fixed the originating element of
::part() in @container queries to be the element itself. (318620@main) (183154183) - Fixed an anti-aliased fringe on
::highlight() background fills in vertical writing modes. (318177@main) (183496114) - Fixed the first baseline of a
wrap-reverse flex container coming from the wrong flex line. (318154@main) (183516222) - Fixed a flex line’s cross size mixing the
baseline and last baseline alignment groups. (318165@main) (183536181) - Fixed the
-webkit-border-image width flag being lost when a length edge precedes a non-length edge. (318214@main) (183584830) - Fixed rounding of central baselines for atomic inline elements. (318268@main) (183584888)
- Fixed the
block-ellipsis of a clamped block being styled from the wrong block formatting context. (318437@main) (183606151) - Fixed
::highlight() pseudo-elements not inheriting from the parent element’s highlight. (318779@main) (183702060) - Fixed
clip on a child being ignored when determining whether an ancestor’s background is obscured. (318636@main) (183841775) - Fixed
var() not behaving as an arbitrary substitution function. (318912@main) (183913427) - Fixed line-height units resolving incorrectly when the page is zoomed. (318558@main) (184032914)
- Fixed the computed value of
line-height to more closely match how it was specified. (318710@main) (184232888) - Fixed
font-* properties resolving font-relative units against their own font instead of the parent element’s font metrics. (319052@main) (184336424) - Fixed the
rangeStart and rangeEnd animation attributes accepting length values that are not computationally independent when set from script. (318815@main) (184363719) - Fixed
-webkit-text-stroke not applying to highlighted text. (318976@main) (184375039) - Fixed the
ViewTimelineOptions inset member accepting length values that are not computationally independent when set from script. (318883@main) (184504829) - Fixed
::highlight() not repainting after a CSS rule change. (319169@main) (184643272) - Fixed
::highlight() not repainting when a highlight’s range is changed with CSS.highlights.set(). (319154@main) (184672580) - Fixed a
@function body not inheriting computed custom property values from the calling context. (319031@main) (184701762) - Fixed arguments that invoke a
@function being treated as a cycle. (319034@main) (184711017) - Fixed the
random() caching key not including the custom property name. (319096@main) (184722866) - Fixed an
auto <random-key> not being element-scoped, so every element shared the same item. (319153@main) (184845561)
- Removed the non-standard
percentage value from -webkit-line-clamp. (318858@main) (159808285) - Removed
margin-trim support from flex containers, following the CSSWG resolution limiting it to block and multi-column containers. (318654@main) (184151309) - Removed
margin-trim support from grid containers, following the CSSWG resolution limiting it to block and multi-column containers. (318690@main) (184164505)
- Fixed
ctx.font not re-resolving relative font sizes when set to the same string after the canvas element’s style changed. (318753@main) (184194378) - Fixed the canvas
font keywords larger and smaller scaling by 1.02 instead of approximately 1.2. (318798@main) (184312611)
- Added support for
popover=hint. (318958@main) (184548373)
- Fixed a color input with
display: none not opening when its <label> is clicked. (318723@main) (100476630) - Fixed
createContextualFragment() leaving nested <head> and <body> elements behind when stripping a stray <html> element. (317962@main) (183163523) - Fixed a
<label> default action triggering when clicked interactive content removes itself. (318827@main) (184381262) - Fixed clicking an element nested inside a checkbox or radio input wrongly activating the ancestor input. (318853@main) (184441087)
- Fixed focus not being restored to the correct element when a
<dialog> is closed. (319173@main) (184751412) - Fixed confirming an IME composition removing its containing positioned element. (319167@main) (184918934)
- Added support for
Iterator.prototype.includes(). (318184@main) (173846280) - Added support for the RegExp Buffer Boundaries proposal. (318415@main) (178287060)
- Added support for era and
monthCode fields in Intl and Temporal calendars. (318428@main) (182753821) - Added support for the
traceStack option on WebAssembly.Exception and for Exception.stack. (318397@main) (183342491) - Added support for WebAssembly Memory64. (318257@main) (183543404)
- Added support for deferred module evaluation with
import defer. (318481@main) (183892394) - Added support for
Iterator.prototype.join(). (318502@main) (183892495) - Added support for iterator chunking, including
Iterator.prototype.chunks() and Iterator.prototype.windows(). (318479@main) (183892687) - Added support for the joint iteration proposal, including
Iterator.zip() and Iterator.zipKeyed(). (318477@main) (183892768) - Added support for importing text modules with an import attribute of
type: text. (318950@main) (184443879)
- Fixed a regular expression with
^ inside a group that can match empty failing to anchor the pattern. (317981@main) (183300022) - Fixed incorrect matching for sticky regular expressions wrapped in
.*. (317983@main) (183300106) - Fixed a
JSON.stringify() regression in how toJSON is checked. (318072@main) (183400665) - Fixed
Iterator.zip to use null-prototype objects for its options object and synthetic underlying iterator. (318061@main) (183418070) - Fixed incorrect matching for regular expressions containing a negative lookahead. (318234@main) (183601444)
- Fixed module resolution ignoring the import attribute type in a module request. (318292@main) (183700464)
- Fixed the
Array.from() fast path ignoring a Symbol.iterator override on set.keys() and set.values(). (318374@main) (183801651) - Fixed stale character widths produced by
v mode class set operations in regular expressions. (318416@main) (183879621) - Fixed incorrect matching for regular expressions containing a lookbehind. (318418@main) (183881829)
- Fixed
Temporal.PlainDate construction with years outside the supported range. (318504@main) (183960408) - Fixed a
TypeError regression when passing monthCode to Temporal calendar methods. (318566@main) (183980712) - Fixed the order in which
Temporal constructors read newTarget.prototype. (318635@main) (184072358) - Fixed the
String.prototype.localeCompare() collator cache going stale after a language change. (318616@main) (184096794) - Fixed
Temporal skipping the epoch range check when resolving a time inside a daylight saving time gap. (318663@main) (184140083) - Fixed
Temporal time zone identifier parsing to match the specification’s parse records. (318741@main) (184169471) - Fixed
Array.prototype.sort() not being stable when called without a comparator. (318682@main) (184189734) - Fixed global object attribute getters and setters throwing when called as bare functions from global scope. (318748@main) (184273476)
- Fixed
Iterator.prototype.join() to match the latest specification. (318806@main) (184321382) - Fixed
Iterator.prototype.chunks() and Iterator.prototype.windows() to match the latest specification. (318802@main) (184321801) - Fixed
Intl.Locale collections not being sorted. (318808@main) (184322384) - Fixed
formatToParts() omitting the era separator that format() inserts. (318847@main) (184382546) - Fixed the
import defer implementation to match the updated proposal. (318875@main) (184423667) - Fixed
\P{...} on the right side of a v mode && or -- operation being treated as a union. (318854@main) (184443379) - Fixed
Temporal.Duration rounding decisions being made on doubles instead of exact integers. (318901@main) (184472920) - Fixed non-ISO calendar date field resolution at the edges of the supported range. (318940@main) (184478785)
- Fixed
Temporal returning plausible values instead of throwing when an underlying calendar operation fails. (318953@main) (184567556) - Fixed a regular expression string-list alternative containing a non-BMP character matching on only its leading code units. (318956@main) (184582034)
- Fixed the
WebAssembly.Global value setter not treating a missing argument as undefined. (318967@main) (184608074) - Fixed Unicode property escapes ignoring case-insensitive matching in
u and v modes. (319064@main) (184762230) - Fixed the Before Hijra era year being computed from rendered text instead of the calendar. (319172@main) (184853584)
- Added support for
HTMLMediaElement.removeTextTrack(). (318250@main) (183365541)
- Fixed WebVTT cue overlap avoidance to move a cue the shortest possible distance. (318012@main) (183151333)
- Fixed legacy EME
generateKeyRequest() returning an incorrect destination URL. (317970@main) (183305929) - Fixed
requestFullscreen() and requestPictureInPicture() not consuming user activation. (318673@main) (183621577) - Fixed selecting On in the media controls captions menu not turning on subtitles. (318468@main) (183776073)
- Fixed
MediaRecorder dropping pending video frames when recording is stopped. (318595@main) (183975207) - Fixed the auto position of a WebVTT cue with
start or end text alignment to be 50%. (318610@main) (184039946) - Fixed
MediaRecorder dropping a frame whenever the writer input reports that it is not ready. (318778@main) (184271782)
- Added support for the
to property on NavigationTransition. (319142@main) (184792753) - Added support for intercepting a navigation with a precommit handler. (319208@main) (184893603)
- Fixed
sourceElement reporting the deepest clicked element instead of the element responsible for the navigation. (319005@main) (184581613) - Fixed
NavigationHistoryEntry returning null instead of the empty string for url, key, and id when the document is not fully active. (319007@main) (184590003) - Fixed
navigateEvent.scroll() not scrolling to the beginning of the document when the fragment does not exist. (319068@main) (184595100) - Fixed
navigation.activation.from not being null when navigating away from the initial about:blank. (319217@main) (184624752) - Fixed
navigateerror not firing for a navigation started from a navigateerror handler. (319222@main) (184633618)
- Added support for backpressure when uploading a stream request body with
fetch(). (318236@main) (183400867)
- Fixed a same-frame fragment navigation cancelling a download started by a
download attribute click in the same task. (319105@main) (165498647) - Fixed a page reloading continually by tracking the latest navigation action when considering Enhanced Security state changes. (318304@main) (183480452)
- Fixed
XMLHttpRequest.getAllResponseHeaders() returning the previous response’s headers when the object is reused. (318217@main) (183561750) - Fixed
XMLHttpRequest.responseURL still returning the aborted request’s URL after calling abort(). (318241@main) (183587043) - Fixed the CNAME-cloaking cookie expiry cap being applied to a top-level page’s own cookies instead of only subresources. (318332@main) (183664485)
- Fixed
XMLHttpRequest.send() setting a Content-Type request header on GET and HEAD requests when passed a URLSearchParams. (318424@main) (183801778) - Fixed
imagesrcset not overriding href on <link rel="preload" as="image">. (318544@main) (183945535) - Fixed
<link rel=preload as> keywords not being matched ASCII case-insensitively. (318584@main) (184013239) - Fixed PDF byte-range requests being blocked by the
connect-src Content Security Policy directive instead of object-src. (318797@main) (184258237) - Fixed a Content Security Policy
host-source of the form *:*/path not matching. (318612@main) (184902666) - Fixed a policy decision that outlives its navigation being applied to an unrelated load. (319378@main) (184974939)
- Fixed text selection highlighting extending incorrectly when a float precedes the text. (319128@main) (109610452)
- Fixed text underlines rendering incorrectly for Urdu text. (319220@main) (161299983)
- Fixed a regression where editing text in some inputs stopped responding to backspace. (318095@main) (183391399)
- Fixed
text-align: justify justifying the last line of a block. (318562@main) (183976364) - Fixed Arabic letters in adjacent inline boxes not being joined. (319209@main) (184071471)
- Fixed a self-collapsing block nested in an inline box losing its margin when the root has a border. (318646@main) (184145672)
- Fixed trailing whitespace not being collapsed before a block nested in an inline box. (318653@main) (184151239)
- Fixed baseline alignment ignoring the offset of a block level box nested in an inline box. (318656@main) (184153324)
- Fixed an empty orthogonal block nested in an inline box stretching the line. (318659@main) (184158817)
- Fixed the margin after a block level box on a line being lost on relayout. (318660@main) (184159645)
- Fixed an empty editable container with only an out-of-flow child losing its line. (318671@main) (184176269)
- Fixed a float inside a block nested in an inline box intruding at the wrong position. (318678@main) (184184683)
- Fixed the baseline of an inline-block whose last line box holds a block level box dropping that line’s offset. (318702@main) (184222186)
- Fixed nested inline boxes around a block level box being stretched by their nesting depth. (318704@main) (184222677)
- Fixed an inline box with cloned decorations generating an extra line between two block level boxes. (318718@main) (184241600)
- Fixed a block whose content is a table being treated as self-collapsing. (318782@main) (184337051)
- Fixed a block level box’s margin after being counted twice when only that box needs layout. (318792@main) (184344633)
- Fixed an outside list marker making its list item’s children inline. (318891@main) (184380304)
- Fixed an excluded list marker aligning with a block level box on a line instead of the first line of text. (318908@main) (184405037)
- Fixed a block level box on a line reporting its scrollable overflow at its static position. (318885@main) (184505703)
- Fixed a block level box on a line not starting a new paragraph for
unicode-bidi: plaintext and text-indent: each-line. (318886@main) (184505835) - Fixed a highlight on the line after a block level box covering the box’s margin. (318887@main) (184506039)
- Fixed a block level box on a line switching off
text-wrap: balance for the whole container. (318893@main) (184508888) - Fixed inline boxes that are not relatively positioned offsetting their out-of-flow children by the position of the line. (318897@main) (184512485)
- Fixed a block level box on a line not contributing its margin box to its container’s overflow. (318906@main) (184526625)
- Fixed list-based hit testing reporting the container before a block level box on an earlier line. (318909@main) (184527135)
- Fixed selection gaps not being filled around a block level box on a line. (318911@main) (184527621)
- Fixed
line-clamp not counting the lines of a block level box on a line. (318921@main) (184545926) - Fixed a forced page break after a block level box on a line not moving the following content to the next page. (319029@main) (184712866)
- Fixed a float not being offered to the caret when its container has a block level box on a line. (319030@main) (184713698)
- Fixed a
<fieldset> on a line taking its legend’s overhang twice. (319033@main) (184714637) - Fixed a box that collapsed through with clearance on a line pushing the following content down by its margin. (319160@main) (184917509)
- Fixed intrinsic width computation when a line holds a block level box. (319212@main) (184968113)
- Added support for external and
data: URL filter references on SVG elements. (317538@main) (114823248) - Added support for passing a
DOMMatrix2DInit dictionary to SVGMatrix.multiply(). (318109@main) (180896205) - Added support for external SVG resource references, including
clip-path, marker, and paint servers. (318543@main) (183941298)
- Fixed
auto sizing of <svg:image> to follow the CSS default sizing algorithm. (318548@main) (122586485) - Fixed
SVGSVGElement.currentScale being a no-op on an outermost <svg> that is not the document root. (318762@main) (180889449) - Fixed
SVGLength.value returning negative numbers for r, rx, ry, width, height, and textLength, which disagreed with getComputedStyle(). (317963@main) (181108927) - Fixed a
clip-path basic shape being mispositioned on a <foreignObject> with a non-zero x or y. (318904@main) (182755161) - Fixed
feDropShadow ignoring an update to the Y component of stdDeviation when X changes. (318281@main) (183678196) - Fixed
<animateMotion> ignoring a numeric rotate value. (318565@main) (183832405) - Fixed SVG enumerated attributes not reverting to their initial value when removed or set to an invalid value. (319093@main) (184076505)
- Fixed dynamic changes to
x and y on <foreignObject> having no effect. (318669@main) (184172530) - Fixed a
clip-path basic shape being mispositioned on a rotated or scaled SVG element. (318924@main) (184494108) - Fixed
<animateMotion> ignoring a zero-length motion path. (318963@main) (184569273)
- Removed the
SVGPathSegList collection and the SVGPathSeg family of interfaces from SVGPathElement, matching SVG 2. (318760@main) (115039851)
- Fixed re-snapping to prefer the block-axis box when the two scroll axes conflict. (318343@main) (183366125)
- Fixed scroll snapping when a scroll overshoots past the end of the scroll container. (318081@main) (183375912)
- Fixed
element.scroll() and element.scrollTo() not scrolling inside a content-visibility: hidden subtree. (319219@main) (184935071)
- Added support for service workers reading stream upload data from a fetch event request body. (317964@main) (183108477)
- Added support for stream upload backpressure when a service worker reads the upload data. (318346@main) (183529369)
- Fixed a missing
Sec-Fetch-Dest header on service worker script requests. (318237@main) (181909962) - Fixed network fallback being allowed after a fetch event request body was already disturbed. (318042@main) (183125740)
- Fixed cancellation of a fetch event request body not being propagated to the original
ReadableStream. (318043@main) (183317580)
- Fixed: Improved the
InvalidStateError message thrown by selection methods to explain what is invalid. (318520@main) (134645414) - Fixed a missing
resize event when an iframe transitions from display: none to visible. (318713@main) (174638256) - Fixed
timeOrigin being skewed for Navigation Timing entries when the browsing context group changes. (318057@main) (179332119) - Fixed the Digital Credentials API to consume transient activation before serializing the request. (318122@main) (182412996)
- Fixed the Cookie Store API not preserving the order of the cookie change subscription list. (318087@main) (183271849)
- Fixed notifications after the first persistent one not being closed. (318007@main) (183362637)
- Fixed
getBoundingClientRect() returning a non-zero rect for SVG elements inside hidden containers. (318744@main) (183425103) - Fixed quota accounting over-charging positioned writes through a
FileSystemWritableFileStream. (318130@main) (183489019) - Fixed an Apple Pay deferred payment request being dropped when the payment method changes. (318155@main) (183516996)
- Fixed Cache Storage size accounting underflowing and persisting a corrupt size. (318204@main) (183578693)
- Fixed
FileReader.abort() being silently ignored on a reader reused after a completed read. (318288@main) (183695958) - Fixed MathML and SVG elements not resetting
tabIndex when tabindex is changed to an invalid value. (318303@main) (183696552) - Fixed fullscreen state not being unwound when entering fullscreen fails. (319243@main) (184157871)
- Fixed the
SharedWorkerGlobalScope prototype not being an immutable prototype exotic object. (318684@main) (184190755) - Fixed the
scrollend event not firing when wheel-scrolling a subframe. (318805@main) (184352772)
- Fixed a loss of precision in
exponentialRampToValueAtTime() caused by accumulating the ramp value. (317955@main) (124498013) - Fixed
decodeAudioData() failing with an EncodingError for valid M4A files whose ftyp brand is not mp4. (318005@main) (183148186) - Fixed
registerProcessor() error messages so they name the offending AudioParam instead of the processor. (317948@main) (183189781) - Fixed an
OscillatorNode with a-rate automation starting out of phase by honoring sub-sample start times. (317953@main) (183194827) - Fixed the
AudioBufferSourceNode output channel count to account for whether the node is actively processing. (317956@main) (183245229) - Fixed stale audio being played instead of silence when the audio destination ring buffer underruns. (317968@main) (183305574)
- Fixed an
AudioScheduledSourceNode not firing the ended event when it is not connected to the destination. (318515@main) (183986981) - Fixed a k-rate
AudioParam input to AudioBufferSourceNode.detune diverging from the equivalent automation. (318516@main) (183987621) - Fixed
AudioContext.close() not rejecting when called on an already-closed context. (318522@main) (183989479) - Fixed
AudioWorkletGlobalScope.currentFrame reporting 0 for a worklet created while the context is suspended. (318601@main) (184081765) - Fixed an
AudioWorkletProcessor being torn down too early after process() returns false. (318621@main) (184107806) - Fixed the
AudioWorkletNode processorerror event missing filename, lineno, and colno. (318705@main) (184224032) - Fixed
MediaStreamAudioSourceNode capturing the wrong track and continuing to play after the track ends. (318706@main) (184224142) - Fixed a zero-duration
exponentialRampToValueAtTime() at a non-frame-aligned time rendering NaN. (318868@main) (184434164) - Fixed setting
ConvolverNode.buffer to null not releasing the impulse response. (318870@main) (184434803) - Fixed reverse playback of buffers longer than 2^23 frames extrapolating outside the source samples. (318869@main) (184439324)
- Added support for wildcard domains and subdomains in
externally_connectable.matches. (318361@main) (183642164) - Added support for
setAccessLevel() on the local and sync storage areas. (318980@main) (183680404) - Added support for
scripting.ExecutionWorld. (319009@main) (184284891)
- Fixed several inconsistencies in the
browser.alarms API. (318493@main) (183770530) - Fixed a significant delay loading web extensions when the browser is launched cold. (318756@main) (183827503)
- Added icons for recorded WebGL and WebGPU actions in the Canvas tab. (318517@main) (42777850)
- Added support for recording WebGPU devices in the Canvas tab. (318407@main) (183538409)
- Added support for instrumenting WebGPU devices in the Canvas tab. (318336@main) (183757645)
- Added support for WebGPU content previews in the Canvas tab. (318363@main) (183785306)
- Added support for instrumenting WebGPU pipelines in the Canvas tab. (318366@main) (183790749)
- Added support for disabling WebGPU render pipelines in the Canvas tab. (318403@main) (183857257)
- Added support for using the WebGPU label of devices and pipelines as their name in the Canvas tab. (318409@main) (183876768)
- Added support for exposing client metadata for WebGPU devices. (318467@main) (183939079)
- Added support for recording WebGL extension actions in the Canvas tab. (318474@main) (183945866)
- Added support for mapping WebAssembly byte offsets to original sources with source maps. (318546@main) (184017160)
- Added support for editing WebGPU shaders in the Canvas tab. (318633@main) (184128414)
- Added support for highlighting WebGPU render pipelines in the Canvas tab. (318668@main) (184169419)
- Improved the estimated memory use reported for WebGL and WebGPU canvases to include their graphics resources. (318915@main) (184535731)
- Added support for recording object arguments and result objects in the Canvas tab. (319059@main) (184759172)
- Added support for showing names for recorded WebGPU bitfields. (319174@main) (184928178)
- Added support for snapshotting WebGPU element image copies. (319176@main) (184928370)
- Added syntax highlighting to recording actions in the Canvas tab. (319189@main) (184936730)
- Fixed canvas recordings retaining memory by pruning recordings that are no longer in use. (318613@main) (35893620)
- Fixed searching resources returning duplicate results for the same resource. (319061@main) (42879586)
- Fixed resource data for non-buffered resources persisting across navigations. (318035@main) (181210169)
- Fixed WebAssembly module scripts not being associated with the resource that fetched them. (318207@main) (183583149)
- Fixed stale frame navigation event timestamps being shown after initializing. (318213@main) (183584784)
- Fixed a selected details sidebar panel not being restored when it becomes available again. (318353@main) (183778380)
- Fixed detaching a child frame also detaching its parent frame. (318355@main) (183778531)
- Fixed stale execution contexts being kept when their identifiers change. (318356@main) (183779166)
- Fixed response end times being dropped for resources without request timing data. (318360@main) (183783292)
- Fixed recorded WebGPU object arguments not being swizzled correctly. (318545@main) (184017109)
- Fixed missing
console.record() options being treated as if they were present. (318555@main) (184029716) - Fixed recorded object identifiers colliding by assigning them per type. (318567@main) (184040370)
- Fixed configured WebGPU
<canvas> elements not being distinguished from CSS canvas client nodes. (318794@main) (184346714)
- Added support for the WebCodecs
ImageDecoder API. (319179@main) (184857272)
- Fixed a WGSL miscompilation when swizzling a packed
vec3 value. (318098@main) (183426431) - Fixed a large frame-rate drop when
executeBundles() is called with bundles containing indirect draws. (318538@main) (183458069) - Fixed
textureDimensions(t, level) clamping the mip level one past the last valid level. (318273@main) (183673818) - Fixed
GPUQueue.copyExternalImageToTexture() uploading indexed PNG images incorrectly. (318952@main) (184529653)
- Added WebRTC AV1 software fallback support. (317986@main) (182789617)
- Fixed a valid current value being ignored when both
min and max are given in a capture constraint range. (318046@main) (182968516) - Fixed
setSinkId() reporting success without switching audio output for a single-track MediaStream. (318149@main) (183147942) - Fixed
getUserMedia() interrupting the microphone system-wide when echoCancellation is disabled. (318164@main) (183517329) - Fixed
ImageCapture.takePhoto() failing permanently after a single transient capture error. (318260@main) (183640839)
The current Safari Technology Preview release is compatible with machines running macOS 26 Tahoe and macOS 27 Golden Gate, the newest version of macOS that is currently in beta testing and will launch later this year.
The update is available through the Software Update mechanism in System Preferences or System Settings to anyone who has downloaded the browser from Apple’s website.