<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Blog – WebKit</title>
	<atom:link href="https://webkit.org/blog/feed/" rel="self" type="application/rss+xml"/>
	<link>https://webkit.org</link>
	<description>Open Source Web Browser Engine</description>
	<lastBuildDate>Wed, 23 Sep 2026 21:46:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<itunes:explicit>no</itunes:explicit><itunes:subtitle>Open Source Web Browser Engine</itunes:subtitle><item>
		<title>Release Notes for Safari Technology Preview 253</title>
		<link>https://webkit.org/blog/18357/release-notes-for-safari-technology-preview-253/</link>
		
		<dc:creator/>
		<pubDate>Wed, 23 Sep 2026 21:46:47 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18357</guid>

					<description><![CDATA[Safari Technology Preview Release 253 is now available for download for macOS Golden Gate and macOS Tahoe.]]></description>
										<content:encoded><![CDATA[<p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 253 is now <a href="https://developer.apple.com/safari/resources/">available for download</a> 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.</p>
<p>This release includes WebKit changes between: <a href="https://github.com/WebKit/WebKit/compare/1392437bb060048807e94d171c0fdf45e7d27301...1bc0a2a2076a8b80ef11e91ce0ebcc3edcddcc3c">320113@main&#8230;321067@main</a>.</p>
<h3>Accessibility</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where VoiceOver announced <code>aria-keyshortcuts</code> values containing <code>Meta</code> or <code>Alt</code> literally instead of using the macOS terminology <code>Command</code> and <code>Option</code>. (<a href="https://commits.webkit.org/320424@main">320424@main</a>)  (186342070)</li>
<li>Fixed an issue where VoiceOver could repeatedly announce the same live region content as it streamed into a page. (<a href="https://commits.webkit.org/320576@main">320576@main</a>)  (186694747)</li>
</ul>
<h3>Animations</h3>
<h4>New Features</h4>
<ul>
<li>Added support for style-originated scroll timelines to match globally, allowing them to be defined outside of the target&#8217;s hierarchy or that of an element with a <code>timeline-scope</code> property. (<a href="https://commits.webkit.org/320183@main">320183@main</a>)  (186261285)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where an animation attached to a view timeline&#8217;s scroll range was not updated when the scroll container&#8217;s scrollable overflow changed. (<a href="https://commits.webkit.org/320244@main">320244@main</a>)  (185328465)</li>
<li>Fixed an issue where an animation could attach to a style-originated timeline made visible by <code>timeline-scope</code> instead of one established by an ancestor, which now takes priority. (<a href="https://commits.webkit.org/320223@main">320223@main</a>)  (186265325)</li>
<li>Fixed an issue where a style-originated timeline defined outside of a <code>timeline-scope</code> hierarchy could remain active instead of yielding an inactive timeline. (<a href="https://commits.webkit.org/320227@main">320227@main</a>)  (186330965)</li>
<li>Fixed an issue where changing a <code>timeline-scope</code> value did not update timelines for animations outside of its hierarchy. (<a href="https://commits.webkit.org/320231@main">320231@main</a>)  (186331685)</li>
<li>Fixed a regression where a paused and seeked animation incorrectly finished when resumed after a separate animation running at a non-default playback rate. (<a href="https://commits.webkit.org/320238@main">320238@main</a>)  (186339093)</li>
<li>Fixed an issue where the <code>ViewTimeline</code> constructor did not require a <code>subject</code> parameter. (<a href="https://commits.webkit.org/320969@main">320969@main</a>)  (187200265)</li>
</ul>
<h3>CSS</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the extended numeric range in longhand East Asian counter styles. (<a href="https://commits.webkit.org/320887@main">320887@main</a>)  (109875198)</li>
<li>Added support for <code>CSSContainerRule.conditions</code>. (<a href="https://commits.webkit.org/320762@main">320762@main</a>)  (182257864)</li>
<li>Allow combining <code>safe</code> and <code>unsafe</code> keywords with <code>normal</code> alignment, and change <code>safe</code> behavior for absolutely (and fixed positioned) boxes to keep the box within their original containing block (the viewport).  (185952139)</li>
<li>Added support for using <code>sibling-index()</code> and <code>sibling-count()</code> within container query conditions. (<a href="https://commits.webkit.org/320493@main">320493@main</a>)  (186564084)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a near-zero fixed <code>background-size</code> value collapsed the image tile to nothing. (<a href="https://commits.webkit.org/320169@main">320169@main</a>)  (140387662)</li>
<li>Fixed an issue where the <code>[class~=foo]</code> attribute selector did not perform as well as an equivalent class selector. (<a href="https://commits.webkit.org/320862@main">320862@main</a>)  (164128575)</li>
<li>Fixed an issue where highlight colors, such as those used by <code>::selection</code>, did not inherit as a <code>StyleColor</code>, which could prevent values like <code>color-mix(in oklab, teal 50%, currentcolor)</code> from resolving correctly. (<a href="https://commits.webkit.org/320228@main">320228@main</a>)  (184495338)</li>
<li>Fixed an issue where a second CSS custom highlight sharing a <code>Range</code> with an already-registered highlight never painted. (<a href="https://commits.webkit.org/320355@main">320355@main</a>)  (185173794)</li>
<li>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. (<a href="https://commits.webkit.org/320561@main">320561@main</a>)  (185529863)</li>
<li>Fixed an issue where an inset <code>box-shadow</code> with a large spread on a wrapped inline element painted outside the element as full-width bands. (<a href="https://commits.webkit.org/320150@main">320150@main</a>)  (185651318)</li>
<li>Fixed an issue where <code>CSS.highlights</code> iterated in hash order instead of registration order after its wrapper was garbage collected. (<a href="https://commits.webkit.org/320343@main">320343@main</a>)  (185754041)</li>
<li>Fixed an issue where <code>corner-shape</code> rendered incorrectly when inner corners intersected. (<a href="https://commits.webkit.org/320287@main">320287@main</a>)  (185931169)</li>
<li>Fixed an issue where a grid item with an <code>aspect-ratio</code> could keep a stale inline size contribution when the grid container shrank. (<a href="https://commits.webkit.org/320117@main">320117@main</a>)  (186101273)</li>
<li>Fixed an issue where flexible grid tracks did not respect the grid container&#8217;s minimum and maximum size. (<a href="https://commits.webkit.org/320160@main">320160@main</a>)  (186103325)</li>
<li>Fixed an issue where fixed grid track sizing functions were overridden to zero while sizing tracks to fit non-spanning items. (<a href="https://commits.webkit.org/320168@main">320168@main</a>)  (186117142)</li>
<li>Fixed an issue where explicitly-placed grid items advanced the auto-placement cursor. (<a href="https://commits.webkit.org/320253@main">320253@main</a>)  (186118858)</li>
<li>Fixed an issue where the propagated root background was painted in the wrong position in <code>vertical-rl</code> writing mode. (<a href="https://commits.webkit.org/320167@main">320167@main</a>)  (186274088)</li>
<li>Fixed an issue where opening a <code>&lt;details&gt;</code> element made its <code>&lt;summary&gt;</code> one pixel shorter. (<a href="https://commits.webkit.org/320461@main">320461@main</a>)  (186413478)</li>
<li>Fixed an issue where a typed parameter of a CSS custom function did not keep its type. (<a href="https://commits.webkit.org/320340@main">320340@main</a>)  (186439114)</li>
<li>Fixed an issue where <code>attr()</code> stopped invalidating on attribute changes after a view transition. (<a href="https://commits.webkit.org/320420@main">320420@main</a>)  (186467515)</li>
<li>Fixed an issue where <code>unicode-bidi</code> and <code>direction</code> had no effect on an inside <code>::marker</code>. (<a href="https://commits.webkit.org/320504@main">320504@main</a>)  (186468752)</li>
<li>Fixed an issue where <code>fit-tolerance</code> did not interpolate between <code>&lt;length-percentage&gt;</code> values. (<a href="https://commits.webkit.org/320383@main">320383@main</a>)  (186509338)</li>
<li>Fixed an issue where a grid item&#8217;s automatic minimum size was not clamped to a fixed maximum track sizing function. (<a href="https://commits.webkit.org/320750@main">320750@main</a>)  (186606479)</li>
<li>Fixed a regression where the line-height quirk in quirks mode was not applied to line boxes inside a nested <code>inline-block</code> element that had no <code>line-height</code> of its own. (<a href="https://commits.webkit.org/320514@main">320514@main</a>)  (186614663)</li>
<li>Fixed an issue where interpolating a <code>&lt;length-percentage&gt;</code> from a <code>calc()</code> value to a pure <code>&lt;length&gt;</code> dropped the percentage component at 100% progress. (<a href="https://commits.webkit.org/320585@main">320585@main</a>)  (186628152)</li>
<li>Fixed an issue where <code>text-decoration-thickness</code> and <code>text-underline-offset</code> did not preserve percentage values when interpolating. (<a href="https://commits.webkit.org/320584@main">320584@main</a>)  (186628810)</li>
<li>Fixed an issue where <code>align-content</code> left the list marker behind. (<a href="https://commits.webkit.org/320532@main">320532@main</a>)  (186676835)</li>
<li>Fixed an issue where <code>text-indent</code> moved an outside list marker along with the indented text. (<a href="https://commits.webkit.org/320533@main">320533@main</a>)  (186678552)</li>
<li>Fixed an issue where a float in a list item&#8217;s content pushed the outside list marker inward with the line. (<a href="https://commits.webkit.org/320549@main">320549@main</a>)  (186680551)</li>
<li>Fixed an issue where a tab character rendered too narrow when <code>tab-size</code> was small in a proportional font. (<a href="https://commits.webkit.org/320671@main">320671@main</a>)  (186698040)</li>
<li>Fixed an issue where a gradient in the <code>content</code> property painted blank. (<a href="https://commits.webkit.org/320620@main">320620@main</a>)  (186742805)</li>
<li>Fixed an issue where some combinations of <code>corner-shape</code> with thick borders rendered incorrectly. (<a href="https://commits.webkit.org/320826@main">320826@main</a>)  (186808871)</li>
<li>Fixed an issue where <code>fit-content()</code> grid tracks could be stretched beyond their argument instead of capping the track&#8217;s growth limit. (<a href="https://commits.webkit.org/320780@main">320780@main</a>)  (186961437)</li>
<li>Fixed an issue where an orthogonal <code>&lt;caption&gt;</code>&#8216;s margins were missing from the table. (<a href="https://commits.webkit.org/321056@main">321056@main</a>)  (187137359)</li>
<li>Fixed an issue where an orthogonal <code>&lt;caption&gt;</code> ignored its margin against the table edge. (<a href="https://commits.webkit.org/321060@main">321060@main</a>)  (187139068)</li>
<li>Fixed an issue where transforming a table row group could misplace its absolutely positioned children. (<a href="https://commits.webkit.org/321065@main">321065@main</a>)  (187252945)</li>
<li>Fixed an issue where the resolved <code>right</code> and <code>bottom</code> values of an out-of-flow positioned element were wrong inside a vertical inline containing block. (<a href="https://commits.webkit.org/321061@main">321061@main</a>)  (187295559)</li>
<li>Fixed an issue where the identity and translation fast path of a transformation matrix ignored the <code>w</code> component when mapping a 4-component point. (<a href="https://commits.webkit.org/321030@main">321030@main</a>)  (187297446)</li>
</ul>
<h3>Canvas</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a placeholder <code>&lt;canvas&gt;</code> element with no pushed <code>OffscreenCanvas</code> frame would fail instead of returning a transparent black image. (<a href="https://commits.webkit.org/320202@main">320202@main</a>)  (186229685)</li>
<li>Fixed an issue where an off-by-one error in the bottom-row check caused canvas noise injection to misclassify the bottom-left pixel. (<a href="https://commits.webkit.org/320510@main">320510@main</a>)  (186640624)</li>
<li>Fixed a performance regression where drawing a canvas onto itself with <code>drawImage</code> prevented its backing surface from being recycled. (<a href="https://commits.webkit.org/320735@main">320735@main</a>)  (186731221)</li>
<li>Fixed an issue where a canvas 2D context remained unusable after a temporary failure to allocate its backing store. (<a href="https://commits.webkit.org/320605@main">320605@main</a>)  (186799597)</li>
<li>Fixed an issue where drawing to <code>&lt;canvas&gt;</code> computed path bounds unnecessarily when the whole backing store was already marked dirty. (<a href="https://commits.webkit.org/320709@main">320709@main</a>)  (186946552)</li>
</ul>
<h3>Editing</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where the context menu in PDFs with copying disabled was missing text selection options. (<a href="https://commits.webkit.org/320444@main">320444@main</a>)  (186527750)</li>
<li>Fixed an issue on macOS where the Copy option was enabled in the edit menu after selecting text in a PDF that disallows copying. (<a href="https://commits.webkit.org/320534@main">320534@main</a>)  (186648332)</li>
</ul>
<h3>Forms</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a large picker for a base-appearance <code>&lt;select&gt;</code> could render outside the viewport, by applying <code>safe</code> alignment to keep it within its original containing block. (<a href="https://commits.webkit.org/320564@main">320564@main</a>)  (185952139)</li>
</ul>
<h3>HTML</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where the window <code>load</code> event could fail to fire if a <code>readystatechange</code> handler triggered a new load during page completion. (<a href="https://commits.webkit.org/320331@main">320331@main</a>)  (186373617)</li>
</ul>
<h3>JavaScript</h3>
<h4>New Features</h4>
<ul>
<li>Added support for <code>BigInt</code> values in <code>Intl.PluralRules.prototype.select</code> and <code>Intl.PluralRules.prototype.selectRange</code>. (<a href="https://commits.webkit.org/320396@main">320396@main</a>)  (186534585)</li>
<li>Added support for a faster Toom-3 multiplication algorithm for large <code>BigInt</code> values. (<a href="https://commits.webkit.org/321013@main">321013@main</a>)  (187336927)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>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 <code>XMLHttpRequest</code>) to keep using the original value. (<a href="https://commits.webkit.org/320742@main">320742@main</a>)  (180048596)</li>
<li>Fixed an issue where <code>Intl.DurationFormat</code> in <code>digital</code> style included a stray separator when <code>minutesDisplay</code> was set to <code>"auto"</code> and minutes ended up hidden. (<a href="https://commits.webkit.org/320182@main">320182@main</a>)  (180722012)</li>
<li>Fixed an issue where <code>Array.prototype.toSpliced</code> threw a <code>TypeError</code> instead of a <code>RangeError</code> when the array&#8217;s length was <code>Infinity</code>. (<a href="https://commits.webkit.org/320554@main">320554@main</a>)  (184438837)</li>
<li>Fixed an issue where <code>TypedArray</code> <code>setFromTypedArray</code> could not use <code>memmove</code> when the region was intentionally overlapping and the spec algorithm needed to read back the modified result. (<a href="https://commits.webkit.org/320130@main">320130@main</a>)  (186145219)</li>
<li>Fixed an issue where the <code>TypedArray</code> constructor could produce incorrect results when copying <code>Array</code> content whose element access has side effects. (<a href="https://commits.webkit.org/320185@main">320185@main</a>)  (186227333)</li>
<li>Fixed a performance issue where <code>String.prototype.toLowerCase</code> and <code>String.prototype.toUpperCase</code> did not scan strings inline in the DFG and FTL JIT tiers. (<a href="https://commits.webkit.org/320293@main">320293@main</a>)  (186301688)</li>
<li>Fixed an issue where a character following a class set operand in a <code>/v</code> mode regular expression class incorrectly added <code>U+0000</code> to the class. (<a href="https://commits.webkit.org/320216@main">320216@main</a>)  (186319779)</li>
<li>Fixed an issue where <code>Temporal.ZonedDateTime.prototype.round</code> resolved the rounded wall-clock time using a minute-rounded offset instead of the correct offset. (<a href="https://commits.webkit.org/320217@main">320217@main</a>)  (186319834)</li>
<li>Fixed an issue where <code>Object.freeze()</code> did not invalidate the megamorphic inline cache epoch, which could cause stale property accesses on a frozen object. (<a href="https://commits.webkit.org/320276@main">320276@main</a>)  (186393610)</li>
<li>Fixed an issue where deleting a property of a dictionary prototype in place did not invalidate the megamorphic store cache. (<a href="https://commits.webkit.org/320375@main">320375@main</a>)  (186513123)</li>
<li>Fixed a performance issue where <code>RegExp.prototype.test</code> did not fast-fail when the input string was shorter than the pattern&#8217;s minimum possible match length. (<a href="https://commits.webkit.org/320487@main">320487@main</a>)  (186534079)</li>
<li>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. (<a href="https://commits.webkit.org/320492@main">320492@main</a>)  (186536137)</li>
<li>Fixed an issue where <code>Atomics.isLockFree()</code> converted its argument with a 32-bit integer conversion instead of <code>ToIntegerOrInfinity</code>, which could cause it to incorrectly return <code>true</code> for large size values. (<a href="https://commits.webkit.org/320715@main">320715@main</a>)  (186610789)</li>
<li>Fixed an issue where a stack frame for a script loaded from a <code>data:</code> URL included the entire script in <code>Error.stack</code> instead of a truncated URL. (<a href="https://commits.webkit.org/320770@main">320770@main</a>)  (186614179)</li>
<li>Fixed an issue where a JIT fast path for <code>RegExp.prototype.test</code> could skip the required read of <code>lastIndex</code>, silently dropping observable side effects. (<a href="https://commits.webkit.org/320582@main">320582@main</a>)  (186792229)</li>
<li>Fixed an issue where tail-call optimization was skipped for <code>eval</code> calls that didn&#8217;t resolve to the real <code>eval</code> function, and incorrectly applied inside generator and async function bodies, which could produce incorrect results. (<a href="https://commits.webkit.org/320687@main">320687@main</a>)  (186840477)</li>
<li>Fixed an issue where <code>RegExp.escape</code> incorrectly narrowed supplementary code points to 16 bits. (<a href="https://commits.webkit.org/320682@main">320682@main</a>)  (186962453)</li>
<li>Fixed an issue where a <code>\-</code> following a class set operand in a <code>/v</code> mode regular expression class incorrectly threw a <code>SyntaxError</code>. (<a href="https://commits.webkit.org/320683@main">320683@main</a>)  (186962513)</li>
<li>Fixed an issue where <code>RegExp::deleteCode()</code> cleared a regular expression&#8217;s cached pattern atom, which could cause incorrect values from static <code>RegExp</code> properties such as <code>leftContext</code> and <code>rightContext</code> after the compiled code was reclaimed while idle. (<a href="https://commits.webkit.org/320817@main">320817@main</a>)  (187104089)</li>
<li>Fixed an issue where <code>String.prototype.at</code> and <code>String.prototype.codePointAt</code> could return an incorrect value for an out-of-bounds or negative index because the JIT compiler could eliminate their bounds check. (<a href="https://commits.webkit.org/321014@main">321014@main</a>)  (187336661)</li>
</ul>
<h3>Media</h3>
<h4>Resolved Issues</h4>
<ul>
<li>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. (<a href="https://commits.webkit.org/320748@main">320748@main</a>)  (184536781)</li>
<li>Fixed an issue where <code>MediaRecorder</code> could hold back a lone video keyframe indefinitely instead of using it to start a new recording segment. (<a href="https://commits.webkit.org/320219@main">320219@main</a>)  (186229843)</li>
<li>Fixed an issue where an AV1 sequence header that exactly filled the buffer was incorrectly rejected due to an off-by-one bounds check. (<a href="https://commits.webkit.org/321041@main">321041@main</a>)  (187306821)</li>
<li>Fixed an issue where black video-range pixel buffers were produced with super-black values instead of legal black. (<a href="https://commits.webkit.org/321040@main">321040@main</a>)  (187309125)</li>
</ul>
<h3>Networking</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where custom scheme CORS checks incorrectly blocked subresources loaded from an HTML document opened via a <code>file:</code> URL. (<a href="https://commits.webkit.org/320685@main">320685@main</a>)  (179999480)</li>
<li>Fixed an issue where reading a file-backed <code>Blob</code> range larger than 2GB truncated the read length due to an integer overflow. (<a href="https://commits.webkit.org/320981@main">320981@main</a>)  (187207663)</li>
<li>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. (<a href="https://commits.webkit.org/321019@main">321019@main</a>)  (187288970)</li>
</ul>
<h3>Performance</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where navigation could redundantly parse and decode a page&#8217;s URL multiple times, causing significant hangs for pages with very long URLs. (<a href="https://commits.webkit.org/320292@main">320292@main</a>)  (185796614)</li>
<li>Fixed excessive CPU and power usage caused by <code>IntersectionObserver</code> observation on pages with many observed elements. (<a href="https://commits.webkit.org/320395@main">320395@main</a>)  (185839711)</li>
<li>Fixed an issue where style resolution for elements sharing a <code>scroll-timeline</code> name could block the main thread for multiple seconds. (<a href="https://commits.webkit.org/320902@main">320902@main</a>)  (186090970)</li>
<li>Fixed an issue where <code>ScrollingStateTree::insertNode</code> performed redundant work reordering children on pages with many sibling scrolling nodes. (<a href="https://commits.webkit.org/320527@main">320527@main</a>)  (186143008)</li>
<li>Fixed an issue where ordinary property changes, such as toggling <code>overflow: hidden</code>, could trigger an unnecessary full-layer repaint. (<a href="https://commits.webkit.org/320296@main">320296@main</a>)  (186422878)</li>
</ul>
<h3>Rendering</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a layer with a negative <code>z-index</code> inside a stacking context failed to composite correctly when overlapping an externally composited layer. (<a href="https://commits.webkit.org/320473@main">320473@main</a>)  (130595406)</li>
<li>Fixed an issue where the <code>&lt;mo&gt;</code> operator dictionary was consulted even when the element contained non-text content. (<a href="https://commits.webkit.org/320730@main">320730@main</a>)  (173078723)</li>
<li>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. (<a href="https://commits.webkit.org/320957@main">320957@main</a>)  (186013305)</li>
<li>Fixed a regression that caused extra spacing to appear between an image and surrounding content near the bottom of a page. (<a href="https://commits.webkit.org/320115@main">320115@main</a>)  (186102748)</li>
<li>Fixed an issue where hovering links could trigger unnecessarily wide repaints, by repainting ink-overflow-only style changes without running inline layout. (<a href="https://commits.webkit.org/320128@main">320128@main</a>)  (186104270)</li>
<li>Fixed an issue where text nodes inside a <code>display: contents</code> element received redundant updates during style resolution. (<a href="https://commits.webkit.org/320144@main">320144@main</a>)  (186246705)</li>
<li>Fixed an issue where content changing inside an element with a <code>blur()</code> filter did not properly repaint, leaving stale pixels around the edge of the filtered region. (<a href="https://commits.webkit.org/320398@main">320398@main</a>)  (186278957)</li>
<li>Fixed an issue where a MathML <code>rowspan="0"</code> attribute was incorrectly clamped to 1. (<a href="https://commits.webkit.org/320324@main">320324@main</a>)  (186420659)</li>
<li>Fixed an issue where non-MathML children of <code>&lt;annotation&gt;</code> and <code>&lt;annotation-xml&gt;</code> were not rendered. (<a href="https://commits.webkit.org/320334@main">320334@main</a>)  (186429768)</li>
<li>Fixed an issue where drawing a native image did not respect the requested <code>InterpolationQuality</code>, affecting image scaling across canvas, SVG, and PDF rendering paths. (<a href="https://commits.webkit.org/320429@main">320429@main</a>)  (186439811)</li>
<li>Fixed an issue where a layer with <code>clip-path</code> or <code>mask</code> could be treated as fully opaque, causing incorrect rendering. (<a href="https://commits.webkit.org/320634@main">320634@main</a>)  (186722177)</li>
<li>Fixed an issue where a <code>position: sticky</code> element with <code>-webkit-box-reflect</code> applied could composite its reflection incorrectly. (<a href="https://commits.webkit.org/320712@main">320712@main</a>)  (186812790)</li>
<li>Fixed an issue where an optimization to text matrix handling when drawing glyphs could cause text to render upside down. (<a href="https://commits.webkit.org/321067.5@safari-7626.1.8-branch">321067.5@safari-7626.1.8-branch</a>)  (187588379)</li>
</ul>
<h3>SVG</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the SVG 2 <code>path</code> attribute on <code>&lt;textPath&gt;</code>, which lets text follow an inline path without referencing a separate <code>&lt;path&gt;</code> element via <code>href</code>. (<a href="https://commits.webkit.org/321038@main">321038@main</a>)  (185831618)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where SVG conditional processing attributes on <code>clipPath</code>, <code>mask</code>, and <code>pattern</code> elements incorrectly prevented the resource from being referenced. (<a href="https://commits.webkit.org/320207@main">320207@main</a>)  (19103270)</li>
<li>Fixed an issue where SVG number attributes did not revert to their initial value when removed or set to an invalid value. (<a href="https://commits.webkit.org/320226@main">320226@main</a>)  (165378154)</li>
<li>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. (<a href="https://commits.webkit.org/320199@main">320199@main</a>)  (185452156)</li>
<li>Fixed an issue where <code>SVGLength</code> resolved <code>ex</code> units by rounding the font&#8217;s x-height up to a whole pixel, causing the SVG DOM and <code>getComputedStyle</code> to disagree. (<a href="https://commits.webkit.org/320606@main">320606@main</a>)  (185984854)</li>
<li>Fixed an issue where additive color animations in SVG lost precision due to per-layer 8-bit rounding. (<a href="https://commits.webkit.org/320166@main">320166@main</a>)  (186223510)</li>
<li>Fixed an issue where an SVG transform change could leave an ancestor layer&#8217;s cached repaint rects stale, resulting in incorrect repainting. (<a href="https://commits.webkit.org/320722@main">320722@main</a>)  (187005898)</li>
<li>Fixed an issue where <code>SVGImage::isAnimating()</code> returned <code>true</code> for SVG images that had no animations. (<a href="https://commits.webkit.org/320839@main">320839@main</a>)  (187106396)</li>
</ul>
<h3>Security</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a click in a backgrounded window could result in an action being taken. (<a href="https://commits.webkit.org/320186@main">320186@main</a>)  (186280350)</li>
<li>Fixed an issue where <code>CredentialStorage::removeCredentialsWithOrigin</code> failed to purge HTTPS credentials that used the default port. (<a href="https://commits.webkit.org/320968@main">320968@main</a>)  (187210150)</li>
</ul>
<h3>Web API</h3>
<h4>New Features</h4>
<ul>
<li>Added support for <code>QuotaExceededError</code> as a <code>DOMException</code> subclass, exposed on <code>window</code> and worker global scopes. (<a href="https://commits.webkit.org/320856@main">320856@main</a>)  (141586555)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where <code>scrollWidth</code> and <code>clientWidth</code> returned inconsistent values when the page was zoomed in or out due to rounding. (<a href="https://commits.webkit.org/320773@main">320773@main</a>)  (121879134)</li>
<li>Fixed an issue where rotating the device to landscape orientation could pause a video playing in full screen, by adding a site-specific quirk. (<a href="https://commits.webkit.org/320318@main">320318@main</a>)  (148284059)</li>
<li>Fixed several <code>URLPattern</code> matching issues affecting Service Worker routing, including incorrect encoding of the <code>username</code> and <code>password</code> components and unhandled unclosed pattern groups. (<a href="https://commits.webkit.org/320122@main">320122@main</a>)  (183434701)</li>
<li>Fixed an issue where WebDriver reported an empty URL instead of <code>about:blank</code> for a browsing context that had not yet navigated. (<a href="https://commits.webkit.org/320428@main">320428@main</a>)  (183468933)</li>
<li>Fixed an issue where <code>WKWebView.magnification</code> reported the pre-gesture scale for a few moments after a pinch-to-zoom gesture ended, instead of the scale about to commit. (<a href="https://commits.webkit.org/320341@main">320341@main</a>)  (185381317)</li>
<li>Fixed an issue where <code>Cache.delete()</code> and <code>Cache.keys()</code> swallowed exceptions thrown while constructing a <code>Request</code> from a URL string. (<a href="https://commits.webkit.org/320524@main">320524@main</a>)  (186636105)</li>
<li>Fixed a regression where WebXR hit testing failed with a <code>TypeError</code> when <code>offsetRay</code> was not specified. (<a href="https://commits.webkit.org/320717@main">320717@main</a>)  (186997100)</li>
<li>Fixed an issue where interrupting a scroll with a tap could incorrectly trigger navigation of the link under the pointer. (<a href="https://commits.webkit.org/321053@main">321053@main</a>)  (187268555)</li>
<li>Fixed an issue where click events did not include the modifier keys that were pressed at the time of the click. (<a href="https://commits.webkit.org/320984@main">320984@main</a>)  (187270584)</li>
</ul>
<h3>Web Extensions</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>offscreen</code> API. (<a href="https://commits.webkit.org/318833@main">318833@main</a>)  (184269255)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where <code>i18n.getMessage()</code> dropped non-string substitution arguments instead of coercing them to strings. (<a href="https://commits.webkit.org/320931@main">320931@main</a>)  (149855718)</li>
<li>Fixed an issue where <code>webRequest.onBeforeRequest</code> reported the resource type <code>main_frame</code> instead of <code>sub_frame</code> for subframe document loads. (<a href="https://commits.webkit.org/321067@main">321067@main</a>)  (167403388)</li>
<li>Fixed an issue where a high priority static declarativeNetRequest redirect rule was not favored over a low priority session redirect rule. (<a href="https://commits.webkit.org/320739@main">320739@main</a>)  (176176246)</li>
<li>Fixed an issue where <code>webRequest</code> events did not fire for loads blocked by a declarativeNetRequest rule. (<a href="https://commits.webkit.org/320336@main">320336@main</a>)  (176177851)</li>
<li>Fixed an issue where <code>webRequest</code> events did not fire for page loads created with <code>tabs.create</code>. (<a href="https://commits.webkit.org/320430@main">320430@main</a>)  (177727052)</li>
<li>Fixed an issue where an extension&#8217;s service worker lost its clients after being unloaded and reloaded, preventing it from finding an existing offscreen document. (<a href="https://commits.webkit.org/320198@main">320198@main</a>)  (186116488)</li>
<li>Fixed an issue where an extension&#8217;s popover could be cut off because <code>vh</code>, <code>svh</code>, and <code>lvh</code> units resolved to the popover&#8217;s minimum height instead of its actual size. (<a href="https://commits.webkit.org/320726@main">320726@main</a>)  (186391990)</li>
</ul>
<h3>Web Inspector</h3>
<h4>New Features</h4>
<ul>
<li>Added support for network throttling of the inspected page. (<a href="https://commits.webkit.org/320893@main">320893@main</a>)  (144892477)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue in Web Inspector where <code>WebSocket</code> handshake headers were missing when using the <code>Network.framework</code> loader. (<a href="https://commits.webkit.org/320156@main">320156@main</a>)  (185255819)</li>
<li>Fixed an issue in Web Inspector where a <code>Debugger.globalObjectCleared</code> event from a subframe cleared every target&#8217;s script map instead of only the affected target&#8217;s. (<a href="https://commits.webkit.org/320787@main">320787@main</a>)  (187042936)</li>
</ul>
<h3>WebAssembly</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where JS string builtins and imported string constants were not applied when compiling WebAssembly modules loaded as ES modules. (<a href="https://commits.webkit.org/320174@main">320174@main</a>)  (186037843)</li>
<li>Fixed an issue where the <code>WebAssembly.Exception</code> constructor rejected <code>null</code> options and incorrectly accepted non-object options. (<a href="https://commits.webkit.org/320215@main">320215@main</a>)  (186319813)</li>
<li>Fixed an issue where the WebAssembly validator rejected <code>i31.get_s</code> and <code>i31.get_u</code> when the operand&#8217;s static type was a bottom reference type. (<a href="https://commits.webkit.org/320578@main">320578@main</a>)  (186660590)</li>
</ul>
<h3>WebDriver</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where WebDriver BiDi&#8217;s <code>script.call_function</code> trimmed error messages incorrectly, cutting off part of the message. (<a href="https://commits.webkit.org/320205@main">320205@main</a>)  (186311752)</li>
<li>Fixed an issue where WebDriver&#8217;s <code>deleteAllCookies</code> command could report success before cookies had actually finished being deleted. (<a href="https://commits.webkit.org/320440@main">320440@main</a>)  (186410147)</li>
<li>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. (<a href="https://commits.webkit.org/320518@main">320518@main</a>)  (186615759)</li>
<li>Fixed an issue where WebDriver did not properly handle the right-hand variants of modifier keys, such as <code>ShiftRight</code> and <code>ControlRight</code>, on Cocoa platforms. (<a href="https://commits.webkit.org/320741@main">320741@main</a>)  (186961436)</li>
<li>Fixed a regression where WebDriver returned <code>no such element</code> instead of <code>stale element reference</code> for a node reference from a previous document. (<a href="https://commits.webkit.org/320729@main">320729@main</a>)  (187042183)</li>
<li>Fixed an issue where WebDriver&#8217;s Add Cookie command dropped the cookie when the request did not include a <code>sameSite</code> attribute. (<a href="https://commits.webkit.org/320916@main">320916@main</a>)  (187193380)</li>
</ul>
<h3>WebGL</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where WebGL contexts created with <code>premultipliedAlpha: false</code> were composited incorrectly. (<a href="https://commits.webkit.org/320650@main">320650@main</a>)  (53509398)</li>
</ul>
<h3>WebGPU</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where uploading a <code>canvas</code> as a WebGPU texture had very poor performance. (<a href="https://commits.webkit.org/320765@main">320765@main</a>)  (153642354)</li>
<li>Fixed an issue where <code>GPUDevice.createBindGroup()</code>&#8216;s fast path failed to reuse bind groups containing a <code>GPUBuffer</code> entry alongside an external texture, forcing an unnecessary full rebuild. (<a href="https://commits.webkit.org/320309@main">320309@main</a>)  (186379208)</li>
<li>Fixed an issue where a WebGPU external texture imported from a <code>video</code> element using WebM or MSE playback rendered as a black placeholder instead of the video frame. (<a href="https://commits.webkit.org/320427@main">320427@main</a>)  (186470526)</li>
<li>Fixed an issue where using WebGPU render bundles on some GPUs could cause the device to be unexpectedly lost. (<a href="https://commits.webkit.org/320689@main">320689@main</a>)  (186688781)</li>
<li>Fixed an issue where WebGPU could report the <code>primitive-index</code> feature as available on GPUs that don&#8217;t support it, resulting in an uncaptured error. (<a href="https://commits.webkit.org/320691@main">320691@main</a>)  (186690340)</li>
<li>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. (<a href="https://commits.webkit.org/320690@main">320690@main</a>)  (186803296)</li>
<li>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. (<a href="https://commits.webkit.org/320697@main">320697@main</a>)  (186804865)</li>
<li>Fixed an issue where asynchronous pipeline creation could stall rendering. (<a href="https://commits.webkit.org/321042@main">321042@main</a>)  (187296614)</li>
</ul>
<h3>WebRTC</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a WebRTC UDP connection to an unresolved remote address was incorrectly restricted to IPv6. (<a href="https://commits.webkit.org/320716@main">320716@main</a>)  (186844205)</li>
<li>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. (<a href="https://commits.webkit.org/320720@main">320720@main</a>)  (186847964)</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WebKit Features for Safari 27.0</title>
		<link>https://webkit.org/blog/18325/webkit-features-for-safari-27-0/</link>
		
		<dc:creator/>
		<pubDate>Thu, 17 Sep 2026 11:30:41 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18325</guid>

					<description><![CDATA[Our Safari release notes have never been as long as they are for this version.]]></description>
										<content:encoded><![CDATA[<p>Our Safari <a href="https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes">release notes</a> have never been as long as they are for this version. The number of features alone rose from 58 to 83 since the first beta in June.</p>
<p>Safari MCP makes working with coding agents dramatically easier. Customizable select turns the real <code>&lt;select&gt;</code> element into something you can fully restyle — now with new UA default styles that provide an even-better starting place. Scroll anchoring stops content from jumping when something loads in above. The <code>&lt;model&gt;</code> element comes to iOS, iPadOS, and macOS, giving 3D a powerful HTML element. Websites can now provide immersive environments on visionOS. And much more.</p>
<h2><a name="safari-mcp"></a>Safari MCP</h2>
<p>Are you developing websites using coding agents? The Safari MCP server, now available in Safari 27.0 will make your workflow faster and more powerful. Give Claude Code, Codex, or the agent of your choice control over the browser window so it can see how your code renders. Safari MCP provides access to the DOM, network requests, screenshots, and console output. Your agent can do more on its own while you do less hopping between windows, less dropping screenshots in your terminal, and less typing prompts to describe what’s not working.</p>
<p>The Safari MCP server enables your agent to:</p>
<ul>
<li>see how your code renders in Safari</li>
<li>verify user states in forms, checkout flows, selections &amp; more</li>
<li>compare computed styles and layout to results in other browsers</li>
<li>test for accessibility issues like missing labels, improper ARIA attributes, and poor contrast</li>
<li>analyze performance with navigation timing and resource load times</li>
</ul>
<p>And much more. The MCP server runs entirely on your local machine. It makes no network calls of its own. It does not have access to your personal information in Safari. And any captured data goes directly to the agent you’re running, not to Apple.</p>
<p>To give it a try, go to Safari > Settings > Developer > check “Allow remote automation and external agents.” (If the Developer pane is not available, first go to Advanced, and check “<a href="https://developer.apple.com/documentation/safari-developer-tools/enabling-developer-features">Show features for web developers</a>”.)</p>
<p>If you’re using Claude:</p>
<pre><code>claude mcp add safari-mcp -- "/usr/bin/safaridriver" --mcp
</code></pre>
<p>If you’re using Codex:</p>
<pre><code>codex mcp add safari-mcp -- "/usr/bin/safaridriver" --mcp
</code></pre>
<p>For other agents, you put the following in your mcp.json or config.json file.</p>
<pre><code class="json">{
  <span class="string">"mcpServers"</span><span class="operator">:</span> {
    <span class="string">"safari-mcp"</span><span class="operator">:</span> {
      <span class="string">"command"</span><span class="operator">:</span> <span class="string">"/usr/bin/safaridriver"</span>,
      <span class="string">"args"</span><span class="operator">:</span> [<span class="string">"--mcp"</span>]
    }
  }
}
</code></pre>
<p>Let us know what you think, especially if you have any feature requests. Learn more by reading <a href="https://webkit.org/blog/18136/introducing-the-safari-mcp-server-for-web-developers/">Introducing the Safari MCP server for web developers</a>, or by referencing <a href="https://developer.apple.com/documentation/safari-developer-tools/connecting-an-ai-agent-to-safari">documentation</a>.</p>
<h2><a name="quality"></a>Quality</h2>
<p>The biggest feature of Safari 27.0 isn’t a feature at all. It’s the tremendous effort that went into improving the quality of existing features. At WWDC, we were proud to announce 525 fixes. Then we added 60% more, reaching a total of 844. Plus the majority of feature work improves existing features.</p>
<figure><picture><img fetchpriority="high" decoding="async" src="https://webkit.org/wp-content/uploads/Safari27-piechart.png" alt="Pie chart of breakdown of what's in Safari 27. Resolved issues is 86% of the pie. Improved features is 11%. Brand new issues is 2%. And deprecations is a sliver less than 1%." width="2470" height="1386" class="aligncenter size-full wp-image-18337" srcset="https://webkit.org/wp-content/uploads/Safari27-piechart.png 2470w, https://webkit.org/wp-content/uploads/Safari27-piechart-300x168.png 300w, https://webkit.org/wp-content/uploads/Safari27-piechart-1024x575.png 1024w, https://webkit.org/wp-content/uploads/Safari27-piechart-768x431.png 768w, https://webkit.org/wp-content/uploads/Safari27-piechart-1536x862.png 1536w, https://webkit.org/wp-content/uploads/Safari27-piechart-2048x1149.png 2048w" sizes="(max-width: 2470px) 100vw, 2470px" /></picture></figure>
<p>When we look at the efforts we made to improve quality, the story can be seen in several themes.</p>
<p><strong>Compatibility.</strong> Our team made many changes to help make specific websites work correctly for their users. For example, Hindi InScript typing in an online document editor, images vanishing from search results on a restaurant reservation site, and Pahawh Hmong text misrendering in an online encyclopedia.</p>
<p><strong>Foundations.</strong> Sometimes the best way to improve quality is to start over. Safari 27.0 has an all-new ES module loader. We rebuilt CSS Zoom. And now inline layout places elements with subpixel precision.</p>
<p><strong>Depth.</strong> We got deep into specific technologies. There are 66 fixes to SVG in this release alone, including an end-to-end review of the SMIL animation engine. HTML tables got a systematic pass, with absolutely positioned tables now handling percentage-sized children, <code>min-height</code>, and <code>max-height</code> correctly. Plus deep work on Media Source Extensions (MSE) and Encrypted Media Extensions (EME). And much more.</p>
<p><strong>Alignment.</strong> Much of the work is to better match exactly what web standards prescribe. For example, we corrected the MathML Core operator dictionary and its spacing values across several fixes. Fixes to <code>innerText</code> bring Safari’s rendered-text output better in line with standards for display, visibility, white-space, and form controls. And we improved how HTTP cache obeys <code>Cache-Control</code>.</p>
<p><strong>Integration.</strong> Sometimes two features each work perfectly alone, but combined, something starts to go wrong. We fixed a lot of these this year. For example, <code>-webkit-line-clamp</code> shipped in WebKit in 2010, while <code>text-wrap: balance</code> arrived in 2024. Before Safari 27.0, if you applied both to the same element, the balancing simply didn’t happen. Now that’s fixed.</p>
<p>We truly hope all of these efforts throughout the last year make your work as a web developer a little easier. Read through the <a href="#resolved-issues">resolved issues</a> at the end of this article to see specifics. And learn more about what we are doing to raise the quality of WebKit by watching <a href="https://www.youtube.com/watch?v=7Hg1fCrm4yM">What’s new in WebKit for Safari 27</a>.</p>
<h2><a name="customizable-select"></a>Customizable Select</h2>
<p>The <code>&lt;select&gt;</code> element has been part of the web since the very beginning of HTML. But until recently, there wasn’t a lot you could to do style it or fill it with custom content. Customizable Select changes that. Now in Safari 27.0, it lets you build a fully custom drop-down menu to match the look and feel of your website or web app, without reaching for JavaScript or a pile of <code>&lt;div&gt;</code>. You can even push far beyond a typical drop-down menu to a very different UI. Because it’s a real form control, you get automatic, reliable support for keyboard navigation, screen readers, form submission, validation, <code>change</code> events and more.</p>
<p>Start by applying <code>appearance: base-select</code> in your CSS. This immediately switches to the look and feel provided by new UA styles, and enables the new powers in HTML.</p>
<pre><code class="css"><span class="keyword">select</span>, 
<span class="keyword">select</span>::<span class="keyword">picker</span>(<span class="keyword">select</span>) { 
    <span class="attribute">appearance</span>: <span class="identifier">base-select</span> 
}
</code></pre>
<p>You might notice that the default UA styles in Safari 27.0 are different than they were for the first beta back in June. The summer gave us the opportunity to reflect on what it will be like for web developers to write custom styles on top of the new defaults. We realized after 30 years of web developers struggling with form control styling, we wanted to provide something even better.</p>
<figure class="widescreen mattewhite"><picture><source srcset="https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-dark-scaled.png" type="image/png" media="(prefers-color-scheme: dark)"><img decoding="async" src="https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-scaled.png" alt="screenshot of six select menus - three before &amp; three after, showing the difference in default styling" width="2560" height="982" class="aligncenter size-full wp-image-18344" srcset="https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-scaled.png 2560w, https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-300x115.png 300w, https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-1024x393.png 1024w, https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-768x294.png 768w, https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-1536x589.png 1536w, https://webkit.org/wp-content/uploads/customizable-select-new-UA-styles-light-2048x785.png 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /><figcaption>Previous default UA styles for Customizable Select on the left, with the new design on the right.</figcaption></figure>
<p>These defaults set you up with all the basics. You won’t be left with homework to do to get the select into a usable state. You can simply switch to the new control with <code>appearance: base-select</code>, and apply as little or as much additional code as you’d like. Don’t like the new defaults? You are in luck, it’s very easy to override them. Feel fine keeping any of these pieces like the new drop shadow, 4px rounded corners, touch-friendly line height, cleaner hover states, user-ready chevron &amp; checkmark, subtle opt group styling, etc? Great! It’s already done for you, with support for all the variations like light &amp; dark modes, forced color mode, disabled states and more.</p>
<p>We brought this new design to the CSS Working Group, where it’s being further discussed and refined. Once other browsers update their implementations, we will together reach our shared commitment for all browsers to support an identically interoperable starting place.</p>
<p>New pseudo-elements like <code>::picker-icon</code> and <code>::checkmark</code> let you easily target parts of the control that were previously unstylable. Plus, you can now insert HTML elements inside each <code>&lt;option&gt;</code> to add more detail. The new <code>&lt;selectedcontent&gt;</code> element can be used to adjust what gets displayed as the currently-selected option’s content. Learn more watching <a href="https://developer.apple.com/videos/play/wwdc2026/315/">Rediscover the HTML Select Element</a> from WWDC26.</p>
<h2><a name="html"></a>HTML</h2>
<figure><picture><img decoding="async" src="https://webkit.org/wp-content/uploads/image-4-1-scaled.png" alt="An iPad, desktop, and an iPhone each displaying a browser showing an image of a 3D hiking boot model." width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<h3><a name="model"></a>Model</h3>
<p>Originally shipped a year ago in visionOS, the HTML <code>&lt;model&gt;</code> element is now also available in Safari on iOS, iPadOS, and macOS. This new element is a lot like <code>video</code>, <code>audio</code>, and <code>img</code> — this time embedding a 3D model in the page.</p>
<pre><code class="html"><span class="tag">&lt;<span class="keyword">model</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"mallet.usdz"</span>&gt;</span><span class="tag">&lt;/<span class="keyword">model</span>&gt;</span>
</code></pre>
<p>Just like the other HTML elements for media, you can link to multiple source files, including a fallback.</p>
<pre><code class="html"><span class="tag">&lt;<span class="keyword">model</span>&gt;</span>
    <span class="tag">&lt;<span class="keyword">source</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"boot.usdz"</span> <span class="keyword attribute">type</span>=<span class="attribute value string">"model/vnd.usdz+zip"</span>&gt;</span>
    <span class="tag">&lt;<span class="keyword">source</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"boot.glb"</span> <span class="keyword attribute">type</span>=<span class="attribute value string">"model/gltf-binary"</span>&gt;</span>
    <span class="tag">&lt;<span class="keyword">img</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"boot.png"</span> <span class="keyword attribute">alt</span>=<span class="attribute value string">"workboot in light tan leather"</span>&gt;</span>
<span class="tag">&lt;/<span class="keyword">model</span>&gt;</span>
</code></pre>
<p>You can optionally include attributes like <code>environmentmap</code> to provide custom lighting for your model. Or <code>stagemode</code>, which sets the default interaction behavior. Target your model with JavaScript and open up a wide range of possibilities.</p>
<p>Learn all about it, including where to get a 3D model, how to optimize it for the web, and what can be done with JavaScript by watching <a href="https://developer.apple.com/videos/play/wwdc2026/215/">Get started with the HTML Model Element</a> from WWDC26. And check out <a href="https://webkit.org/demos/model-demos/index.html">these demos</a> in Safari.</p>
<p>Safari 27.0 also adds support so the CSS <code>dynamic-range-limit</code> property can be applied to the <code>&lt;model&gt;</code> element, giving you control over HDR tone mapping and rendering range for 3D content on iOS and macOS.</p>
<h3><a name="responsive-images"></a>Responsive images</h3>
<p>Responsive image techniques get easier with the <code>auto</code> keyword for <code>sizes</code>.</p>
<pre><code class="html"><span class="tag">&lt;<span class="keyword">img</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"photo.jpg"</span>
     <span class="keyword attribute">srcset</span>=<span class="attribute value string">"photo-400.jpg 400w, photo-800.jpg 800w, photo-1200.jpg 1200w"</span>
     <span class="keyword attribute">sizes</span>=<span class="attribute value string">"auto"</span>
     <span class="keyword attribute">loading</span>=<span class="attribute value string">"lazy"</span>
     <span class="keyword attribute">width</span>=<span class="attribute value string">"1200"</span>
     <span class="keyword attribute">height</span>=<span class="attribute value string">"800"</span>
     <span class="keyword attribute">alt</span>=<span class="attribute value string">"A mountain landscape"</span>&gt;</span>
</code></pre>
<p>Using <code>sizes="auto"</code> on an image with <code>loading="lazy"</code> tells the browser to automatically calculate the size based on the actual layout width once it’s known. This means you don’t have to predict the rendered layout width ahead of time.</p>
<h3><a name="web-components"></a>Web Components</h3>
<p>Safari 27.0 adds support for the <code>shadowrootslotassignment</code> attribute on declarative shadow roots. This lets you configure the slot assignment mode (<code>named</code> or <code>manual</code>) directly in HTML when defining a shadow root declaratively, matching the JavaScript <code>attachShadow({ slotAssignment: "manual" })</code> option.</p>
<h2><a name="spatial-web"></a>Spatial Web</h2>
<h3><a name="immersive-environments"></a>Immersive environments</h3>
<p><a href="https://support.apple.com/guide/apple-vision-pro/use-environments-tanb58c3cfaf/visionos">Environments in visionOS</a> are an incredible part of the experience of Vision Pro. They let you transform your physical surroundings into a different place—like Yosemite, Mount Hood, or the Moon. It’s been possible for Apple developers creating immersive apps for visionOS to provide custom environments with their app. Now in Safari 27.0, environments can be provided as part of a website.</p>
<figure><picture><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/web-env.png" alt="Illustration of woman wearing VisionPro standing in field facing screen." width="1920" height="1080" class="preserve-color aligncenter size-full wp-image-17357" /></picture></figure>
<p>You can provide an immersive environment with a simple <code>&lt;model&gt;</code> element and one JavaScript API call. The Immersive API on the model element works similarly to how the Fullscreen API does on video elements. Learn all about it in <a href="https://developer.apple.com/videos/play/wwdc2026/320/">Explore immersive website environments in visionOS</a>.</p>
<p>By the way, this new Immersive API replaces the developer preview originally called Spatial Backdrop. If you built anything using Spatial Backdrop, migrate it to the Immersive API on the <code>&lt;model&gt;</code> element.</p>
<h3><a name="image-controls"></a>Image controls</h3>
<p>Now the <code>&lt;img&gt;</code> element has a <code>controls</code> attribute in HTML. It works just like the <code>controls</code> attribute on the <code>video</code> and <code>audio</code> elements. When present, the browser offers controls to allow the user to adjust or more fully experience the media.</p>
<pre><code class="html"><span class="tag">&lt;<span class="keyword">img</span> <span class="keyword attribute">controls</span> <span class="keyword attribute">src</span>=<span class="attribute value string">"panorama.jpg"</span> <span class="keyword attribute">alt</span>=<span class="attribute value string">"A panorama of the Dolomites"</span> &gt;</span>  
</code></pre>
<p>In Safari 27.0 in visionOS when the <code>controls</code> attribute is present, Safari provides a user interface for interacting with spatial and panorama photos. This gives users an easy and consistent mechanism to view photos spatially or immersively, and eliminates the need for web developers to build their own UI.</p>
<figure><picture><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/pasted-movie.png" alt="Photo of valley surrounded by mountains, an open cloudy sky, and a lake towards the right center." width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<h3><a name="webxr"></a>WebXR</h3>
<p>Safari 27.0 adds support for texture array projection layers in WebXR Layers. When creating a projection layer with <code>XRWebGLBinding.createProjectionLayer()</code>, you can now request <code>textureType: "texture-array"</code> so each eye’s view renders into its own layer of a single texture array.</p>
<h2><a name="scroll-anchoring"></a>Scroll Anchoring</h2>
<p>Many websites inject content into the page as the user is reading or viewing that content. The new content often appears above where the user is currently looking — like images, ads, or comments being injected into the page. In the past, this caused the content the user was reading to be suddenly pushed down, causing a disorienting jump to a random place on the page.</p>
<p>Now with support for Scroll Anchoring, Safari 27.0 instead adjusts the scroll position and keeps the content exactly where it was before the content insertion. As a web developer, you don’t have to do anything to enable this on your site. It just works.</p>
<p>Scroll anchoring is controlled by the <code>overflow-anchor</code> CSS property, which defaults to <code>auto</code>. If you have a specific need where you need to opt out of scroll anchoring, you can use <code>overflow-anchor: none</code>.</p>
<h2><a name="css"></a>CSS</h2>
<h3><a name="the-stretch-keyword-for-sizing"></a>The stretch keyword for sizing</h3>
<p>Safari 27.0 adds support for using <code>stretch</code> with the properties <code>width</code>, <code>height</code>, <code>min-width</code>, <code>max-width</code>, <code>min-height</code>, <code>max-height</code>, and <code>flex-basis</code>. The <code>stretch</code> keyword tells an element to fill the available space in the relevant axis.</p>
<pre><code class="css"><span class="keyword builtin">.card</span> {
    <span class="attribute">width</span>: <span class="identifier">stretch</span>;
}
</code></pre>
<p>It’s just like using <code>width: 100%</code> — but this time accounting for margins, which prevents overflow. If you’ve been using <code>-webkit-fill-available</code> to solve this need, now is a good time to switch.</p>
<h3><a name="anchor-positioning-improvements"></a>Anchor positioning improvements</h3>
<p>Safari 27.0 makes three updates to anchor positioning, as the web standard evolves and the tool becomes more powerful.</p>
<p>First, we added support for transform-aware anchor positioning. Now, when an anchor element has a CSS transform applied — scale, rotate, translate, or any combination — elements positioned relative to that anchor follow its transformed position instead of its pre-transform layout position. This works for transforms applied via the <code>transform</code> property as well as through the individual <code>translate</code>, <code>rotate</code>, and <code>scale</code> properties. If you use anchor positioning to attach a tooltip, popover, or annotation to a transformed element, it now tracks correctly, even with animated transforms.</p>
<figure><picture><source srcset="https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-dark.png" type="image/png" media="(prefers-color-scheme: dark)"><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light.png" alt="Diagrams showing how the in-page element can be transformed without affecting the placement of the popover anchored to it. " width="2138" height="1022" class="aligncenter size-full wp-image-18339" srcset="https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light.png 2138w, https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light-300x143.png 300w, https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light-1024x489.png 1024w, https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light-768x367.png 768w, https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light-1536x734.png 1536w, https://webkit.org/wp-content/uploads/Anchor-positioning-with-transforms-light-2048x979.png 2048w" sizes="auto, (max-width: 2138px) 100vw, 2138px" /></picture></figure>
<p>Second, the default value for <code>position-anchor</code> changes from <code>auto</code> to <code>normal</code>, fixing a potential side effect where the positioning behavior of elements that don’t even use Anchor Positioning could be impacted. The new value <code>none</code> opts out entirely. The new default, <code>normal</code>, behaves the same as <code>none</code> unless <code>position-area</code> is also set, in which case it behaves like <code>auto</code> did, as originally intended.</p>
<p>And third, Safari 27.0 also adds support for <code>anchor-valid</code> and <code>anchor-visible</code> . Originally, <code>position-visibility: anchors-valid</code> hid an element if any of its required anchor references couldn’t be resolved. However, it wasn’t clear what constituted “required anchor references”. So the CSS Working Group changed the behavior to only look at the default anchor box. To match, some keywords were renamed to drop the plurality. The <code>anchors-valid</code> value is now <code>anchor-valid</code> , while <code>anchors-visible</code> is now <code>anchor-visible</code>. Safari 27.0 aligns with the new behavior, and temporarily supports the old keywords for compatibility.</p>
<h3><a name="color-improvements"></a>Color improvements</h3>
<p>The new <code>alpha()</code> relative color function is a shorthand for adjusting just the alpha channel of an existing color, without repeating the rest of its channels: <code>alpha(from var(--mycolor) / 80%)</code>. It keeps the origin color in its own color space and only changes the alpha value — useful when you want a more transparent or more opaque version of a color you already have, without writing out the full relative color syntax.</p>
<p>The <code>color-mix()</code> function now accepts more than two colors, so you can blend several colors together at once, like <code>color-mix(in oklab, teal 20%, olive 30%, blue 50%)</code>. If you leave out the percentages, each color contributes equally.</p>
<p>The <code>image(&lt;color&gt;)</code> function lets you use a solid color anywhere an <code>&lt;image&gt;</code> value is expected. Unlike <code>background-color</code>, which sits underneath all background layers, <code>image(&lt;color&gt;)</code> behaves like a real image layer — it can stack above other background images, get sized with <code>background-size</code>, and be positioned and clipped like any image.</p>
<p>Safari 27.0 also adds support for forwarding missing color components when interpolating between analogous color spaces. Previously, a color with an intentionally missing component (<code>none</code>), like an achromatic gray with no meaningful hue, could get incorrectly assigned a hard <code>0</code> when converted into an analogous space for interpolation, producing a subtly wrong blended color. Now the missing component is carried forward as missing instead, so interpolation behaves the way you’d expect.</p>
<h3><a name="and-more-css"></a>And more CSS</h3>
<p>The <code>light-dark()</code> function now accepts <code>&lt;image&gt;</code> values, not just colors, so you can specify different images for light and dark color schemes in a single declaration: <code>background-image: light-dark(url(day.png), url(night.png))</code>. Gradients work here too.</p>
<p>Safari 27.0 adds support for the <code>:heading</code> pseudo-class, which matches any heading element — <code>&lt;h1&gt;</code> through <code>&lt;h6&gt;</code>. Instead of writing <code>h1, h2, h3, h4, h5, h6</code> in your selector list, you can just write <code>:heading</code>. Plus, <code>:heading</code> also has a functional form for targeting specific levels, for example, <code>:heading(1, 2)</code> matches only <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code>.</p>
<p>The <code>revert-rule</code> keyword is now supported in Safari 27.0. Like <code>revert</code> and <code>revert-layer</code>, <code>revert-rule</code> rolls back the cascade — but specifically to the state as if the current style rule had not been present. It gives you a more precise tool for working with overrides, especially in component libraries and design systems where you want to selectively undo declarations within a rule without losing the rest.</p>
<p>The CSS <code>progress()</code> function now supports a <code>no-clamp</code> option in Safari 27.0. By default, <code>progress()</code> returns how far a value sits between two bounds as a ratio from 0 to 1, clamped to that range. Adding <code>no-clamp</code> removes the clamp, so the result can fall below 0 or above 1, which is useful when you want an effect to keep scaling past its defined bounds instead of flattening out at the edges.</p>
<p>Safari 27.0 adds support for <code>contain: style</code> applying to CSS quotes. This allows you to scope effects of quotes to a certain subtree.</p>
<p>Safari 18.4 added support for text-autospace to control spacing between Chinese/Japanese/Korean (CJK) and non-CJK characters. Safari 27.0 now adds the <code>insert</code> keyword, making <code>text-autospace: ideograph-alpha ideograph-numeric</code> and <code>text-autospace: ideograph-alpha ideograph-numeric insert</code> equivalent.</p>
<p>The Dutch IJ digraph is now supported in Safari 27.0. When the content language is Dutch (<code>lang="nl"</code>), <code>text-transform: capitalize</code> and <code>::first-letter</code> now correctly titlecase &#8220;ij&#8221; to &#8220;IJ&#8221; at the start of words.</p>
<p>Safari 27.0 adds support for the case-sensitive <code>s</code> modifier in CSS attribute selectors. Adding <code>s</code> after the value forces a case-sensitive match — for example, <code>a[href$=".PDF" s]</code> matches only a literal uppercase <code>.PDF</code>. This is the counterpart to the <code>i</code> modifier you may already be using to force case-<em>insensitive</em> matching (<code>a[href$=".pdf" i]</code> matches <code>.pdf</code>, <code>.PDF</code>, <code>.Pdf</code>, and so on); <code>s</code> lets you go the other way when you need an exact-case match on an attribute HTML would otherwise treat as case-insensitive.</p>
<p>Safari 27.0 also adds support for the <code>:host:has()</code> compound selector, letting a shadow host style itself based on what’s inside its own shadow tree. Because <code>:has()</code> can compound onto any selector, <code>:host:has(:checked)</code> or <code>:host:has(::slotted(img))</code> let a custom element’s host change its own appearance depending on the state of its shadow content — useful for web component authors who want the host to react to what’s inside it without reaching for JavaScript.</p>
<h2><a name="animations"></a>Animations</h2>
<p>Safari 27.0 adds the <code>animation</code> property to the <code>AnimationEvent</code> and <code>TransitionEvent</code> interfaces, letting event handlers directly access the <code>Animation</code> object associated with the event.</p>
<p class="codepen" data-height="500" data-pen-title="event.animation on AnimationEvent / TransitionEvent" data-default-tab="result" data-slug-hash="MYbromb" data-user="ntim" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
<p><script async src="https://public.codepenassets.com/embed/index.js"></script></p>
<h2><a name="svg"></a>SVG</h2>
<p>Safari 27.0 adds quite a few improvements to SVG.</p>
<p>Now the <code>lang</code> and <code>xml:lang</code> attributes are supported inside SVG. Use it to specify the language of text content to ensure correctness of both text rendering and accessibility announcements.</p>
<p>Safari 27.0 adds support for <code>&lt;use&gt;</code> referencing an external SVG file without a <code>#</code> fragment identifier. Previously, in order to point <code>&lt;use href="…"&gt;</code> at another SVG document, you had to name a specific element inside it with a fragment but now <code>&lt;use&gt;</code> can reference the external file on its own. There’s also a fix so <code>&lt;a&gt;</code> elements in SVG are treated consistently with HTML <code>&lt;a&gt;</code> elements for origin/security checks.</p>
<p>Several non-standard and legacy SVG interfaces have been removed to better align with the SVG 2 specification:</p>
<ul>
<li><code>SVGLocatable</code> and <code>SVGTransformable</code> interfaces</li>
<li><code>nearestViewportElement</code> and <code>farthestViewportElement</code> properties on <code>SVGGraphicsElement</code></li>
<li><code>viewTarget</code> property on <code>SVGViewSpec</code></li>
<li><code>glyph-orientation-horizontal</code> property</li>
</ul>
<p>Plus, there are a huge number of SVG fixes shipping this year. See the <a href="#resolved-issues">list below</a> for what’s improved in Safari 27.0.</p>
<h2><a name="webassembly"></a>WebAssembly</h2>
<p>Safari 27.0 adds support for WebAssembly JavaScript Promise Integration (JSPI). JSPI lets synchronous-looking WebAssembly code suspend and wait for JavaScript Promises, making it much easier to port existing C, C++, Rust, and other language code to the web where that code expects synchronous I/O.</p>
<p>Before JSPI, porting code that called synchronous APIs to Wasm required rewriting everything on top of a callback or async state machine. With JSPI, the Wasm module can suspend at a call site and resume when the Promise resolves — the rest of the module sees straight-line synchronous code. This is a significant capability for the Wasm ecosystem.</p>
<h2><a name="javascript"></a>JavaScript</h2>
<p>Safari 27.0 includes a complete standards-compliant rewrite of the ECMAScript module (ESM) loader. The new loader is implemented in native C++ and conforms directly to the ECMAScript specification’s module loading algorithms, replacing an earlier implementation based on an abandoned 2016 WHATWG Loader proposal that predated top-level await entirely.</p>
<p>The rewrite fixes module execution ordering and initialization issues that could cause imports to access exports before they were fully evaluated. It was validated against test262, the Web Platform Tests, and additional test cases.</p>
<p>Top-level await is a foundational feature of modern JavaScript module authoring, and it’s been a real pain point in Safari for a while — a known source of cross-browser bugs that developers building module-based apps had to work around. This fix closes that gap. To learn more, read <a href="https://webkit.org/blog/18227/fixing-top-level-await-in-safari/">Fixing Top-Level Await in Safari</a>.</p>
<h2><a name="web-api"></a>Web API</h2>
<p>Safari 27.0 adds support for the <a href="https://www.w3.org/TR/service-workers/#register-router-method">Service Worker static routing API</a>. This lets a service worker declare routing rules that the browser can use to bypass the service worker entirely for certain requests, reducing overhead for high-performance PWAs.</p>
<p>Safari 27.0 adds three improvements to <code>ReadableStream</code>. First, the async iteration with <code>for await...of</code>:</p>
<pre><code class="js"><span class="keyword type">const</span> <span class="identifier">response</span> <span class="operator">=</span> <span class="identifier">await</span> <span class="identifier">fetch</span>(<span class="string">"/data"</span>);
<span class="keyword control">for</span> <span class="identifier">await</span> (<span class="keyword type">const</span> <span class="identifier">chunk</span> <span class="keyword operator">of</span> <span class="identifier">response</span>.<span class="identifier">body</span>) {
  <span class="identifier">process</span>(<span class="identifier">chunk</span>);
}
</code></pre>
<p>Second, the <code>ReadableStream.from()</code> static method for creating a stream from any async iterable or iterable:</p>
<pre><code class="js"><span class="keyword type">const</span> <span class="identifier">vegetables</span> <span class="operator">=</span> [<span class="string">"Carrot"</span>, <span class="string">"Broccoli"</span>, <span class="string">"Tomato"</span>, <span class="string">"Spinach"</span>];
<span class="keyword type">const</span> <span class="identifier">asyncIterator</span> <span class="operator">=</span> (<span class="identifier">async</span> <span class="keyword type">function</span><span class="operator">*</span> () {
  <span class="identifier">yield</span> <span class="number">1</span>;
  <span class="identifier">yield</span> <span class="number">2</span>;
  <span class="identifier">yield</span> <span class="number">3</span>;
})();
<span class="comment">// Create ReadableStream from the array
</span><span class="keyword type">const</span> <span class="identifier">myReadableStream</span> <span class="operator">=</span> <span class="identifier">ReadableStream</span>.<span class="identifier">from</span>(<span class="identifier">vegetables</span>);
<span class="comment">// Create ReadableStream from async iterator
</span><span class="keyword type">const</span> <span class="identifier">asyncReadableStream</span> <span class="operator">=</span> <span class="identifier">ReadableStream</span>.<span class="identifier">from</span>(<span class="identifier">asyncIterator</span>);
</code></pre>
<p>And third, the ability to transfer a <code>ReadableStream</code> , <code>WritableStream</code> and <code>TransformStream</code> across contexts via <code>postMessage()</code>.</p>
<h2><a name="web-inspector"></a>Web Inspector</h2>
<p>Several Web Inspector updates in Safari 27.0 make common debugging tasks easier.</p>
<p>The Color Picker now shows <strong>color contrast information</strong> inline as you edit. No more switching tools mid-decision to check whether a color combination is accessible. This works when you’re editing both foreground and background colors at the same time.</p>
<figure class="mattewhite"><picture><source srcset="https://webkit.org/wp-content/uploads/color-picker-DARK-2.png" type="image/png" media="(prefers-color-scheme: dark)"><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/color-picker-LIGHT-2.png" alt="Color picker in Web Inspector showing color contrast information" width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<p>The Color Picker’s <strong>format and gamut controls</strong> are also now visible upfront instead of hidden. If you’ve ever gone hunting for those options, this will help.</p>
<figure class="mattewhite"><picture><source srcset="https://webkit.org/wp-content/uploads/color-picker-format-DARK-2.png" type="image/png" media="(prefers-color-scheme: dark)"><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/color-picker-format-LIGHT-2.png" alt="Color picker in Web Inspector showing dropdown of formats." width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<p>In the Network tab, when a resource redirects, you can now see <strong>every request in the chain</strong> rather than just the final destination. It’s much easier to figure out what’s actually happening.</p>
<figure><picture><source srcset="https://webkit.org/wp-content/uploads/network-requests-DARK-scaled.png" type="image/png" media="(prefers-color-scheme: dark)"><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/network-requests-LIGHT-scaled.png" alt="The network tab in Web Inspector showing three redirects." width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<p>The Elements tab adds <strong>Subgrid and Grid-Lanes badges</strong> that make it easy to identify subgrid and grid-lanes layout contexts as you explore a page.</p>
<figure><picture><source srcset="https://webkit.org/wp-content/uploads/grid-subgrid-DARK-scaled.png" type="image/png" media="(prefers-color-scheme: dark)"><img loading="lazy" decoding="async" src="https://webkit.org/wp-content/uploads/grid-subgrid-LIGHT-scaled.png" alt="Shows the subgrid lines in Web Inspector on top of Stripe's Dev page." width="1920" height="1080" class="aligncenter size-full wp-image-17357 preserve-color" /></picture></figure>
<p>The Timeline tab now includes the <strong>layout root element</strong> in Layout event details, so you can see which element triggered a layout pass. The Timeline view also uses <strong>distinct colors for style events</strong> like “Style Invalidated” and “Style Recalculated”, making them easy to tell apart from layout events at a glance, and adds a <strong>separate column</strong> showing the node associated with each layout and rendering event.</p>
<h2><a name="media"></a>Media</h2>
<p>Safari 27.0 supports setting <code>TextTrackCue.endTime</code> to <code>Infinity</code> to represent an unbounded cue duration. It’s useful for captions or data cues of live streams.</p>
<p>Safari 27.0 adds support for synchronized video playback on macOS displays using genlock. Genlock synchronizes the timing signal across multiple displays or capture devices, which is important for broadcast, live-event, and multi-display installation setups. Even a few frames of misalignment between screens is visible. When genlock is available, video played in Safari stays in lockstep with the rest of the signal chain instead of drifting on its own clock.</p>
<p>Safari 27.0 improves how HDR images with gain maps are decoded and rendered, decoding them into accelerated backing stores in the GPU process. This is a rendering-pipeline improvement rather than a new API — HDR photos with gain maps (the format used by iPhone’s Adaptive HDR photos) should render more correctly and efficiently, building on gain-map rendering fixes from recent releases.</p>
<p>Safari 27.0 lets you override the color space a hardware <code>VideoDecoder</code> uses when decoding video with WebCodecs. This helps when a stream’s embedded color space metadata is missing or wrong. Now, you can tell the decoder which color space to interpret the frames in instead of being stuck with an incorrect result.</p>
<h2><a name="networking"></a>Networking</h2>
<p>Safari 27.0 adds support for <code>Secure</code> cookies on loopback hosts. For loopback hosts using plaintext HTTP, cookies marked <code>Secure</code> can now be set via JavaScript and <code>Set-Cookie</code> headers, matching the behavior of other browsers, simplifying local development and testing with <code>Secure</code> cookies.</p>
<h2><a name="webgpu"></a>WebGPU</h2>
<p>Safari 27.0 now supports the <code>clip_distances</code> built-in value in WGSL shaders. Clip distances are a WebGPU feature that allows vertex shaders to define custom clipping planes, enabling you to discard geometry on one side of an arbitrary plane before rasterization occurs.</p>
<p class="codepen" data-height="500" data-pen-title="WebGPU clip_distances (by Mike Wyrzykowski)" data-default-tab="result" data-slug-hash="raWpdLj" data-user="ntim" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
<h2><a name="canvas"></a>Canvas</h2>
<p>The <code>radii</code> argument of <code>CanvasPath.roundRect()</code> is now optional in Safari 27.0. Calling <code>roundRect(x, y, width, height)</code> without radii draws a plain rectangle with square corners which is the same as calling <code>rect()</code> , matching the behavior of other browsers.</p>
<h2><a name="rendering"></a>Rendering</h2>
<p>Safari 27.0 adds <code>srgb-linear</code> and <code>display-p3-linear</code> to predefined color spaces, making these linear-light color spaces available in Canvas, WebGL, and other APIs.</p>
<h2><a name="mathml"></a>MathML</h2>
<p>Safari 27.0 updates its MathML operator dictionary to match the MathML Core specification, adding support for multi-character operators (like <code>++</code>, <code>:=</code>, and <code>/=</code>). This improves spacing and layout for these operators in complex mathematical notation.</p>
<p>In addition, Safari 27.0 supports <code>tabindex</code>, <code>focus()</code>, <code>blur()</code>, and <code>autofocus</code> on MathML elements, improving MathML feature parity with HTML. This makes math content fully participate in keyboard navigation and focus management, which supports interactive educational content and accessibility.</p>
<p>Safari 27.0 also adds support for detecting embellished operators through <code>&lt;mrow&gt;</code> for underover layout. In MathML, an operator wrapped in a grouping element like <code>&lt;mrow&gt;</code> — for example, <code>&lt;mrow&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;/mrow&gt;</code> used as the base of a <code>&lt;munder&gt;</code> or <code>&lt;munderover&gt;</code> — still counts as that operator for layout purposes.</p>
<p>And the <code>href</code> attribute is now deprecated on all MathML elements except <code>&lt;a&gt;</code>, matching how HTML already restricts <code>href</code> to elements built for navigation rather than treating it as a global attribute.</p>
<h2><a name="webrtc"></a>WebRTC</h2>
<p>Safari 27.0 adds support for the <code>targetLatency</code> attribute in WebRTC, for specifying a target latency on a receiver. It adds support for the <code>RTCRtpCodec</code> dictionary and related constructs, improving the ability to inspect and configure codecs. It adds support for <code>RTCRtpReceiver.jitterBufferTarget</code>, for tuning the jitter buffer. And it adds video source <code>width</code> and <code>height</code> to RTC stats.</p>
<h2><a name="storage"></a>Storage</h2>
<p>Safari 27.0 now supports specifying <code>maxAge</code> when setting a cookie via the Cookie Store API.</p>
<pre><code class="js"><span class="identifier">await</span> <span class="identifier">cookieStore</span>.<span class="identifier">set</span>({
  <span class="identifier">name</span><span class="operator">:</span> <span class="string">"session"</span>,
  <span class="identifier">value</span><span class="operator">:</span> <span class="string">"abc123"</span>,
  <span class="identifier">maxAge</span><span class="operator">:</span> <span class="number">60</span> <span class="operator">*</span> <span class="number">60</span> <span class="operator">*</span> <span class="number">24</span> <span class="operator">*</span> <span class="number">7</span>, <span class="comment">// one week, in seconds
</span>});
</code></pre>
<h2><a name="editing"></a>Editing</h2>
<p>Safari 27.0 now supports menu items that convert editable text between Simplified and Traditional Chinese characters. It’s available in the “Transformations” submenu of the context menu for relevant text selections.</p>
<h2><a name="webdriver"></a>WebDriver</h2>
<p>Safari 27.0 adds WebDriver support for the Digital Credentials API, with commands that let automated tests simulate wallet payloads, wait indefinitely for a credential response, and simulate a user rejecting the request. This lets you write end-to-end tests for Digital Credentials flows without needing a real wallet or person to drive the interaction.</p>
<h2><a name="web-extensions"></a>Web Extensions</h2>
<p>The <code>runtime.getDocumentId()</code> Web Extension API now has support in Safari 27.0. It adds reporting of uncaught JavaScript exceptions and unhandled promise rejections in Web Extension scripts, making extensions easier to debug. It adds support for propagating user gestures through <code>sendMessage()</code>, <code>connect()</code>, <code>postMessage()</code>, and <code>executeScript()</code> — so extensions can reliably perform actions like media playback that require user activation. And it adds support for the <code>tabId</code> key in <code>chrome.windows.create()</code>, letting an extension move an existing tab into a newly created window instead of only creating new tabs from scratch.</p>
<h2><a name="wkwebview"></a>WKWebView</h2>
<p>Safari 27.0 helps native app developers do even more using the WKWebView public API for native app developers. Build advanced browser and web-hosting experiences on top of WebKit more easily with the following new features:</p>
<ul>
<li><code>WKJSHandle</code> — use JavaScript object references from native code.</li>
<li><code>WKContentWorldConfiguration</code> — configure content world properties such as autofill scripting, shadow root access, and inspectability when creating a <code>WKContentWorld</code>.</li>
<li><code>alternateRequest</code> and <code>overrideReferrerForAllRequests</code> on <code>WKWebpagePreferences</code> — modify the main resource request during navigation and apply custom referrer headers across all resource loads.</li>
<li><code>willSubmitForm</code> callback on <code>WKNavigationDelegate</code> — receive notification of HTML form submissions via a new <code>WKFormInfo</code> object.</li>
<li><code>mainFrameNavigation</code> on <code>WKNavigationAction</code> and <code>mainFrameNavigation</code> on <code>WKNavigationResponse</code> — correlate navigation actions and responses with each other and their originating loads. </li>
<li><code>WKWebView.load(_ url:)</code> — load a URL directly without wrapping it in an <code>NSURLRequest</code>. </li>
<li><code>WKDOMNodeSnapshot</code> — clone DOM nodes, including shadow roots, between different <code>WKWebView</code> instances.</li>
<li><code>WKHTTPCookieStore.cookies(for:)</code> — retrieve cookies matching a specific URL without fetching the entire cookie store.</li>
<li><code>WKWebpagePreferences.globalPrivacyControlEnabled</code> — let a native app enable or disable sending the Global Privacy Control (GPC) <code>Sec-GPC</code> HTTP header on outgoing requests for a given page load. </li>
</ul>
<h2><a name="resolved-issues"></a>Resolved issues</h2>
<h3><a name="accessibility"></a>Accessibility</h3>
<ul>
<li>Fixed an issue where calling <code>speechSynthesis.cancel()</code> removed utterances queued by subsequent <code>speechSynthesis.speak()</code> calls. (46151521)</li>
<li>Fixed an issue where SVG <code>&lt;use&gt;</code> elements referencing <code>&lt;symbol&gt;</code> elements inside an <code>&lt;img&gt;</code> were incorrectly included as unnamed images in VoiceOver&#8217;s Images rotor. (98999595)</li>
<li>Fixed an issue where changing the <code>id</code> attribute of an element targeted by <code>aria-owns</code> did not update the accessibility tree. (107644248)</li>
<li>Fixed slot elements referenced by <code>aria-labelledby</code> to correctly use their assigned slotted content for accessible names and ignore hidden slotted nodes. (114500560)</li>
<li>Fixed <code>&lt;meter&gt;</code> element to have consistent labels between <code>aria-label</code> and <code>title</code> attributes. (127460695)</li>
<li>Fixed elements with <code>display: contents</code> and content in a shadow root to have their content properly read when referenced by <code>aria-labelledby</code>. (129361833)</li>
<li>Fixed <code>aria-labelledby</code> to use the checkbox name instead of its value when the checkbox name comes from an associated <code>&lt;label&gt;</code> element. (141564913)</li>
<li>Fixed VoiceOver cursor positioning for elements focused via the <code>drawFocusIfNeeded()</code> canvas API. (146323788)</li>
<li>Fixed grid elements with child rows in a shadow root to properly work with VoiceOver. (153134654)</li>
<li>Fixed an issue where VoiceOver read text within images that have <code>role="presentation"</code>. (159304061)</li>
<li>Fixed an issue where content within dynamically expanded <code>&lt;details&gt;</code> elements was not exposed in the accessibility tree. (159865815)</li>
<li>Fixed an issue where the <code>contextmenu</code> event was not fired for elements inside iframes when triggered by keyboard or assistive technology actions such as VoiceOver&#8217;s VO+Shift+M. (164128676)</li>
<li>Fixed an issue where changes to <code>&lt;input type="button"&gt;</code> elements inside live regions were not announced by assistive technologies. (168200460)</li>
<li>Fixed <code>::first-letter</code> text not being exposed in the accessibility tree when no other text accompanies it. (168458291)</li>
<li>Fixed an issue where VoiceOver was unable to access <code>aria-owned</code> rows and their cells in grids and tables. (168770938)</li>
<li>Fixed an issue where VoiceOver could not find focusable splitter elements when navigating to the next or previous form control. (170187464)</li>
<li>Fixed an issue where color picker inputs could not be activated using VoiceOver&#8217;s press action. (172218114)</li>
<li>Fixed an issue where interactive elements containing an <code>&lt;svg&gt;</code> named by a child <code>&lt;title&gt;</code> element did not expose an accessible name. (172559238)</li>
<li>Fixed an issue where incorrect bounding boxes were computed for MathML table rows and cells. (172851295)</li>
<li>Fixed an issue where comboboxes did not forward focus to their <code>aria-activedescendant</code>, preventing assistive technologies from interacting with list items. (172931277)</li>
<li>Fixed VoiceOver on Safari unable to navigate to content revealed by disclosure widgets using <code>hidden="until-found"</code>. (173228707)</li>
<li>Fixed an issue where <code>aria-owns</code> was not respected when computing the accessible name from element content. (173249317)</li>
<li>Fixed VoiceOver line-by-line reading skipping content in read-only documents. (174349841)</li>
<li>Fixed invalidation of aria-hidden=&#8221;true&#8221; when focus lands inside the aria-hidden subtree. (174449524)</li>
<li>Fixed VoiceOver&#8217;s &#8220;Skip redundant labels&#8221; setting not being respected on certain web pages. (176297111)</li>
<li>Fixed an issue preventing VoiceOver from following <code>focus()</code> calls for newly added elements. (177167634)</li>
<li>Fixed role computation for elements with prefixes. (178399441)</li>
<li>Fixed VoiceOver jumping to the top of the page when navigating to an element that immediately becomes accessibility-ignored via JavaScript. (179065364)</li>
<li>Fixed VoiceOver reporting the Recent Events table on <a href="http://parks.wa.gov/">parks.wa.gov</a> as empty. (179156593)</li>
<li>Fixed an <code>&lt;a&gt;</code> element with a click handler but no <code>href</code> not being exposed as a link. (179398579)</li>
<li>Fixed VoiceOver not announcing the selected state of the day-of-month button when configuring a monthly notification. (180294912)</li>
<li>Fixed stale <code>aria-labelledby</code> when the referenced element dynamically changes its <code>aria-label</code>. (180319221)</li>
</ul>
<h3><a name="animations"></a>Animations</h3>
<ul>
<li>Fixed an issue where <code>animation-fill-mode</code> did not correctly apply viewport-based units after the viewport was resized. (80075191)</li>
<li>Fixed an issue where <code>!important</code> declarations did not override CSS animation values when CSS transitions were also running on the same property. (174367827)</li>
<li>Fixed an issue where identity matrix decomposition generated invalid quaternions, resulting in incorrect transform animations. (174813328)</li>
</ul>
<h3><a name="css"></a>CSS</h3>
<ul>
<li>Fixed an issue where <code>-webkit-text-fill-color</code> incorrectly overrode <code>text-decoration-color</code>. (47010945)</li>
<li>Fixed <code>shape-outside</code> computing incorrect text wrapping in RTL writing modes. (56890238)</li>
<li>Fixed <code>aspect-ratio</code> intrinsic-size handling in flex layout to align with the specification. (83240099)</li>
<li>Fixed flex layout to use the used <code>flex-basis</code> instead of the specified value for definiteness evaluation. (85707621)</li>
<li>Fixed an issue where the outline offset was too large for <code>outline: auto</code> on macOS. (94116168)</li>
<li>Fixed an issue where element positioning was incorrect when the containing block was an anonymous block. (96548847)</li>
<li>Fixed an issue where <code>box-shadow</code> did not work on <code>display: table-row</code> elements. (96914376)</li>
<li>Fixed <code>text-indent</code> with <code>calc()</code> containing percentages to correctly treat percentage components as zero for intrinsic size contributions. (97025949)</li>
<li>Fixed an issue where out-of-flow content had an incorrect height when set to <code>fit-content</code>. (97492632)</li>
<li>Fixed an issue with percentage size resolution in flex items in quirks mode. (100183902)</li>
<li>Fixed an issue where <code>clip-path: inset()</code> border-radius values did not render correctly at certain element and clip-path sizes. (110847266)</li>
<li>Fixed <code>text-decoration-thickness</code> propagation to inner spans with non-inline style. (111015539)</li>
<li>Fixed <code>-webkit-box</code> flexbox emulation not sizing children correctly inside <code>&lt;fieldset&gt;</code> elements. (114094538)</li>
<li>Fixed: Improved performance on pages using <code>:where</code> and <code>:is</code> selectors. (114904007)</li>
<li>Fixed an issue where elements with <code>display: table</code> could have incorrect layout when borders were present. (116110440)</li>
<li>Fixed <code>aspect-ratio</code> not being respected on flex children when the flex container has <code>position: absolute</code>. (117807518)</li>
<li>Fixed <code>aspect-ratio</code> not working correctly on flex children that also have <code>overflow</code> set. (118926827)</li>
<li>Fixed <code>font-family</code> serialization to preserve quotes around family names that match CSS-wide keywords or generic families. (125334960)</li>
<li>Fixed an issue where elements with <code>border</code>, <code>position: absolute</code>, and <code>aspect-ratio: 1</code> were not rendered as squares. (126292577)</li>
<li>Fixed an issue where <code>perspective-origin</code> failed to resolve <code>var()</code> references when used as the second value, preventing animations from being applied. (131288246)</li>
<li>Fixed <code>:focus-visible</code> incorrectly matching after a programmatic <code>focus()</code> call triggered by clicking a button with child elements. (134337357)</li>
<li>Fixed an issue where the bottom margin of a last child element collapsed out of a parent with <code>min-height</code>. (134356544)</li>
<li>Fixed a performance issue where pages with many DOM manipulations and complex <code>:has()</code> selectors could freeze. (138431700)</li>
<li>Fixed an issue where a font was downloaded despite no characters in the document falling within its <code>unicode-range</code>. (140674753)</li>
<li>Fixed an issue where <code>@media (prefers-color-scheme: dark)</code> inside an iframe did not match when the iframe’s <code>color-scheme</code> was set to <code>dark</code>. (142072593)</li>
<li>Fixed an issue where <code>background-clip: text</code> did not work on table header elements. (142812484)</li>
<li>Fixed an issue where <code>width: 0</code> did not collapse a table cell to its minimum size. (142814603)</li>
<li>Fixed an issue where <code>:has(:empty)</code> continued to match after the targeted element&#8217;s content was dynamically changed to no longer be empty. (143864358)</li>
<li>Fixed an issue where floats and out-of-flow objects could be incorrectly adjacent to anonymous blocks. (144481961)</li>
<li>Fixed an issue where text gradually disappeared when toggling <code>text-transform</code> on elements with <code>::first-letter</code> styling. (145550507)</li>
<li>Fixed an issue where <code>height: max-content</code> resolved to zero on absolutely positioned elements when a child had <code>max-height: 100%</code>. (147333178)</li>
<li>Fixed unnecessary text truncation that could occur with always-on scrollbars. (148428628)</li>
<li>Fixed an issue where tables with collapsed borders incorrectly calculated the first row width, causing excess border width to spill into the table&#8217;s margin area. (149675907)</li>
<li>Fixed an issue where an <code>inline-flex</code> container with <code>flex-direction: column</code> did not update its width to match the intrinsic size of a child image when the image was not cached. (150260401)</li>
<li>Fixed CSS <code>zoom</code> interacting incorrectly with <code>font-weight</code>, <code>font-style</code>, and <code>font-variant</code> on iPad. (152173269)</li>
<li>Fixed an issue where non-replaced elements with <code>aspect-ratio</code> enforced the automatic minimum size even when <code>min-width</code> was explicitly set to <code>0</code>. (156837730)</li>
<li>Fixed image <code>aspect-ratio</code> not being preserved when <code>width: 100%</code> and <code>height: 100%</code> are set but no ancestor has a defined width. (162373271)</li>
<li>Fixed an issue where an element can&#8217;t anchor to its previous sibling. (162903640)</li>
<li>Fixed <code>:has()</code> style invalidation performance for selectors where <code>:has()</code> is in non-subject position. (163512170)</li>
<li>Fixed CSS Container Style Queries to work when the container has <code>display: contents</code>. (164414720)</li>
<li>Fixed CSS Style Container Query to recognize the default value of a custom property in multiline cases. (165627262)</li>
<li>Fixed an issue where RTL grid scrollable areas did not correctly account for grid layout and scrollbars. (167792896)</li>
<li>Fixed pixel snapping to be applied consistently for all <code>border-width</code> value types. (168240347)</li>
<li>Fixed rendering of linear gradients when all color stops are at the same position. (169063497)</li>
<li>Fixed an issue where <code>inset</code> <code>box-shadow</code> was incorrectly positioned on table cells with collapsed borders. (169254286)</li>
<li>Fixed <code>position-try-order</code> to interpret logical axis values using the containing block&#8217;s writing mode instead of the element&#8217;s own writing mode. (169501069)</li>
<li>Fixed CSS Anchor Positioning so that absolutely positioned elements no longer anchor to viewport-fixed-position elements unexpectedly. (170323196)</li>
<li>Fixed an issue where children with percentage heights inside absolutely positioned elements using intrinsic height values (<code>fit-content</code>, <code>min-content</code>, <code>max-content</code>) incorrectly resolved against the containing block&#8217;s height instead of being treated as <code>auto</code>. (171179193)</li>
<li>Fixed an issue where percent-height replaced elements computed stale preferred widths in shrink-to-fit containers. (171184282)</li>
<li>Fixed a regression where <code>@scope</code> styles did not apply to slotted elements in web components. (171383788)</li>
<li>Fixed an issue where the table cell <code>nowrap</code> minimum width calculation quirk was applied outside of quirks mode. (171410252)</li>
<li>Fixed an issue where <code>display</code> property transitions caused popovers and <code>&lt;dialog&gt;</code> elements to animate incorrectly when closing. (171454696)</li>
<li>Fixed a performance issue where <code>contain: layout</code> caused significantly slower forced layouts when all siblings created their own formatting context. (171545381)</li>
<li>Fixed an issue where dynamically inserting text before existing content did not update <code>::first-letter</code> styling. (171649994)</li>
<li>Fixed an issue where underlines were split when a ruby base was expanded due to long ruby text. (171653095)</li>
<li>Fixed an issue where changing <code>color-scheme</code> did not repaint iframe background. (171658244)</li>
<li>Fixed an issue where nested children of a popover element failed to render when using <code>position: absolute</code>. (171735933)</li>
<li>Fixed an issue where <code>color: initial</code> resolved to the wrong color when the system is in dark mode. (172320282)</li>
<li>Fixed an issue where an element with <code>display: contents</code> did not establish an anchor scope when using <code>anchor-scope</code>. (172355302)</li>
<li>Fixed an issue where ordered list numbers with large starting values were clipped off-screen. (172515216)</li>
<li>Fixed <code>&lt;general-enclosed&gt;</code> in media queries to reject content with unmatched close brackets per the <code>&lt;any-value&gt;</code> grammar. (172575115)</li>
<li>Fixed an issue where the <code>rlh</code> unit was double-zoomed with evaluation-time CSS zoom. (172798163)</li>
<li>Fixed an issue where anchor-positioned elements anchored to children of sticky-positioned boxes did not stick correctly. (172884148)</li>
<li>Fixed an issue where pseudo-elements were not sorted correctly when sorting anchor elements by tree order. (173032203)</li>
<li>Fixed <code>outline: auto</code> to correctly respect zoom. (173068660)</li>
<li>Fixed transferred min/max block-size constraints not being applied for intrinsic keyword widths on replaced elements. (173128588)</li>
<li>Fixed <code>outline-offset</code> to work correctly with <code>outline: auto</code> on iOS. (173130230)</li>
<li>Fixed <code>:active</code>, <code>:focus-within</code>, and <code>:hover</code> pseudo-classes to correctly account for elements in the top layer. (173145294)</li>
<li>Fixed a regression where the <code>ic</code> length unit was incorrectly affected by page scaling. (173198587)</li>
<li>Fixed the <code>shape()</code> function to omit default control point anchors in computed value serialization per the CSS Shapes specification. (173233716)</li>
<li>Fixed: Updated SVG and MathML user agent style sheets to use <code>:focus-visible</code> instead of <code>:focus</code>. (173321368)</li>
<li>Fixed an issue where <code>lh</code> and <code>rlh</code> units resolved with double-zoom when <code>line-height</code> was a number value. (173448638)</li>
<li>Fixed <code>outline-width</code> to be ignored when <code>outline-style</code> is <code>auto</code>, matching the specification. (173567890)</li>
<li>Fixed <code>:in-range</code> and <code>:out-of-range</code> pseudo-classes for time inputs with reversed ranges. (173589851)</li>
<li>Fixed <code>:placeholder-shown</code> to correctly match input elements that have an empty <code>placeholder</code> attribute. (173604635)</li>
<li>Fixed an issue where ligatures caused a non-zero layout width for text with <code>font-size: 0</code>. (173840866)</li>
<li>Fixed computed value of auto insets or margins as returned by <code>getComputedStyle()</code> to be zero, if the element uses <code>position-area</code> or <code>anchor-center</code>. (173885561)</li>
<li>Fixed <code>position-area</code> not being able to anchor to an element positioned using anchor functions. (173964030)</li>
<li>Fixed <code>:in-range</code> and <code>:out-of-range</code> pseudo-classes to correctly update when the <code>readonly</code> attribute changes. (173978657)</li>
<li>Fixed scroll overcompensation of fixed, nested anchor-positioned elements, so they no longer lose their position when scrolling. (174010503)</li>
<li>Fixed an issue where <code>view-timeline-inset</code> serialization failed to coalesce identical values. (174096313)</li>
<li>Fixed CSS variable cycle detection to match the CSS Values Level 5 specification. (174105259)</li>
<li>Fixed <code>url()</code> token serialization in CSS custom properties. (174144616)</li>
<li>Fixed <code>text-autospace</code> to correctly handle supplementary Unicode characters. (174148315)</li>
<li>Fixed an issue where flex items with different <code>order</code> values caused incorrect baseline alignment. (174241817)</li>
<li>Fixed an issue where hovering over <code>::first-letter</code> text showed a pointer cursor instead of the expected I-beam cursor. (174258447)</li>
<li>Fixed an issue where <code>display: grid</code> on a <code>&lt;fieldset&gt;</code> element added extra unnecessary space below its content. (174301311)</li>
<li>Fixed outline radii rendering for elements with a non-auto <code>outline-style</code>. (174328839)</li>
<li>Fixed an issue where <code>aspect-ratio</code> was not honored when the page was zoomed in. (174361289)</li>
<li>Fixed replaced elements to use the transferred size through intrinsic aspect ratio for min-content and max-content sizing. (174386310)</li>
<li>Fixed an issue where <code>height: 100%</code> on a child element altered the layout when the parent&#8217;s height was defined via <code>aspect-ratio</code>. (174448267)</li>
<li>Fixed margin collapse to be allowed when the preferred block size behaves as auto, per the CSS Sizing specification. (174547610)</li>
<li>Fixed an issue where <code>document.styleSheets</code> and <code>shadowRoot.styleSheets</code> incorrectly included adopted style sheets, which per the CSSOM specification should only appear in the final CSS style sheets list used for style resolution. (174583340)</li>
<li>Fixed the CSSOM preferred style sheet set name to be established at sheet creation time based on insertion order rather than tree order. (174586058)</li>
<li>Fixed <code>-webkit-box-pack</code> to account for <code>-webkit-box-direction</code> and to handle overflow repositioning correctly. (174588996)</li>
<li>Fixed highlight pseudo-elements such as <code>::selection</code> and <code>::highlight</code> to disallow vendor-prefixed properties, aligning with the CSS Pseudo-Elements specification. (174590593)</li>
<li>Fixed cycle detection and nested function call handling in CSS custom functions. (174609179)</li>
<li>Fixed <code>FontFace.loaded</code> to reject when a <code>local()</code> font source fails to load. (174631384)</li>
<li>Fixed an issue where <code>word-break: break-all</code> incorrectly allowed CJK close punctuation to appear at the start of a line. (174656971)</li>
<li>Fixed an issue where <code>word-break: keep-all</code> incorrectly suppressed line break opportunities at CJK punctuation characters. (174658701)</li>
<li>Fixed the <code>FontFace</code> constructor to reject with a <code>SyntaxError</code> instead of a <code>NetworkError</code> when a <code>BufferSource</code> fails to parse, per the CSS Font Loading specification. (174669738)</li>
<li>Fixed the <code>FontFace</code> <code>family</code> attribute to return the serialization of the parsed value. (174698351)</li>
<li>Fixed grid layout to correctly handle percentage and <code>calc()</code> values for the specified size suggestion. (174863227)</li>
<li>Fixed <code>:has()</code> sibling invalidation issues related to relation forwarding. (175006235)</li>
<li>Fixed an issue where <code>min-width: auto</code> was not correctly computed for flex items. (175157619)</li>
<li>Fixed an issue where percentage heights inside flex items did not resolve correctly in quirks mode. (175158571)</li>
<li>Fixed an issue where <code>margin-trim: block-start</code> did not apply to blocks nested inside inline boxes. (175162899)</li>
<li>Fixed an issue where dynamically changing <code>display: contents</code> on a <code>&lt;fieldset&gt;</code> legend caused incorrect rendering. (175163337)</li>
<li>Fixed: Improved <code>:has()</code> invalidation performance by including the full selector context in invalidation selectors. (175177078)</li>
<li>Fixed <code>:hover</code> state to repaint correctly on the customizable <code>&lt;select&gt;</code> element. (175273152)</li>
<li>Fixed the CSS preload scanner to resolve relative <code>@import</code> URLs against the <code>&lt;base&gt;</code> element URL. (175305190)</li>
<li>Fixed <code>-webkit-box</code> flex distribution for children with orthogonal writing modes. (175323734)</li>
<li>Fixed <code>calc(infinity)</code> as a <code>flex-grow</code> factor not stretching a flex item to 100% width. (175431146)</li>
<li>Fixed <code>:has()</code> sibling invalidation failing due to an internal bitfield overflow, causing stale styles when siblings are added or removed. (175433733)</li>
<li>Fixed <code>:has()</code> invalidation for sibling combinators when elements are inserted or removed from the DOM. (175441568)</li>
<li>Fixed <code>transition-property</code> not preserving the specified case of <code>&lt;custom-ident&gt;</code> values during serialization. (175467206)</li>
<li>Fixed the <code>will-change</code> property not serializing correctly when used with non-property identifiers or identifiers in a non-standard case. (175482352)</li>
<li>Fixed percentage <code>top</code> and <code>bottom</code> values on relatively positioned elements not resolving when the containing block has <code>aspect-ratio</code>. (175502356)</li>
<li>Fixed: Updated the enhanced <code>&lt;select&gt;</code> element to use <code>self-</code> <em>keywords for anchor positioning. (175505107)</em></li>
<li>Fixed serialization of multi-word font family names that were always incorrectly quoted due to treating the full string as a single identifier. (175522811)</li>
<li>Fixed <code>text-indent</code> computation when tab stop positions are involved. (175529961)</li>
<li>Fixed <code>calc()</code> margin computations in flex layout. (175532405)</li>
<li>Fixed <code>calc()</code> margin computations for block, fieldset, and table caption layouts. (175548980)</li>
<li>Fixed handling of <code>&lt;li&gt;</code> <code>value</code> attributes in reversed ordered lists. (175558324)</li>
<li>Fixed CSS trigonometric functions to correctly convert degrees to radians. (175575617)</li>
<li>Fixed <code>sibling-index()</code> and <code>sibling-count()</code> inside calc() functions to be correctly simplified. (175590806)</li>
<li>Fixed <code>sibling-index()</code> and <code>sibling-count()</code>to correctly return 0 when used in cross-tree <code>::part()</code> styling. (175592607)</li>
<li>Fixed the CSS <code>resize</code> handle not working on an element when the handle overlaps a child iframe. (175621855)</li>
<li>Fixed flex container baseline alignment being incorrectly computed for scroll containers by clamping to the border edge. (175631095)</li>
<li>Fixed an issue where inline-level boxes with <code>calc()</code> margins or padding lost the fixed component during intrinsic width computation. (175669222)</li>
<li>Fixed floats with <code>margin-start</code> incorrectly overlapping adjacent floats. (175669464)</li>
<li>Fixed <code>aspect-ratio</code> calculations for block-level elements with size constraints. (175669713)</li>
<li>Fixed <code>aspect-ratio</code> calculations for flex items with percentage cross-size constraints. (175669774)</li>
<li>Fixed <code>aspect-ratio</code> calculations for flex items with definite cross-size values. (175690028)</li>
<li>Fixed <code>revert-layer</code> computing incorrectly when there is a leading empty or space substitution value. (175729680)</li>
<li>Fixed <code>:has()</code> invalidation incorrectly resetting sibling relation bits, causing style invalidation failures for first-in-sibling-chain elements. (175738008)</li>
<li>Fixed text in nested CSS Subgrid with <code>overflow: hidden</code> clipping content on subsequent items. (175877530)</li>
<li>Fixed <code>CSSStyleDeclaration.setProperty()</code> failing to apply <code>!important</code> priority to an existing inline style property when the value was an integer of 255 or lower. (176099619)</li>
<li>Fixed an issue where flex items with explicit <code>min-height: min-content</code> were incorrectly treated as scrollable, zeroing out their minimum size. (176173688)</li>
<li>Fixed <code>:has()</code> invalidation performance when used inside nested <code>:is()</code> selectors. (176354723)</li>
<li>Fixed <code>sibling-count()</code> &amp; <code>sibling-index()</code> used in <code>@keyframes</code> to re-resolve when siblings change. (176531901)</li>
<li>Fixed <code>:has()</code> style invalidation failing in complex nested cases involving <code>:is()</code>. (176719780)</li>
<li>Fixed <code>-webkit-perspective</code> not establishing a containing block for fixed-positioned descendants. (176729670)</li>
<li>Fixed nested multi-column layouts with three or more levels failing to paginate content across pages. (176741498)</li>
<li>Fixed <code>:has()</code> selector performance by using scope selectors to limit style invalidation traversal for class, attribute, and pseudo-class changes. (176771971)</li>
<li>Fixed non-replaced blocks with <code>aspect-ratio</code> and a percentage <code>max-width</code> collapsing to zero width during intrinsic sizing. (176873776)</li>
<li>Fixed percentage <code>max-width</code> on elements with <code>aspect-ratio</code> resolving against the wrong axis in perpendicular writing modes. (176879597)</li>
<li>Fixed <code>z-index</code> not applying to statically-positioned <code>display: -webkit-box</code> items to align with Firefox and Chrome behavior. (176886461)</li>
<li>Fixed an interaction between an <code>img</code> with <code>max-width</code> and surrounding elements that caused the parent&#8217;s layout to compute incorrectly. (176889859)</li>
<li>Fixed flex containers using <code>box-sizing: border-box</code> providing the wrong cross size to stretched flex items. (176989934)</li>
<li>Fixed flex containers with <code>aspect-ratio</code>&#45;derived height not providing a definite cross size to their flex items. (177085129)</li>
<li>Fixed SVG images with no intrinsic dimensions collapsing to zero height inside column flex containers. (177086497)</li>
<li>Fixed incorrect margin offsets for inline <code>&lt;div&gt;</code> positioning to fix the broken layout of paragraph spacing on some sites. (177139092)</li>
<li>Fixed shrink-to-fit boxes to update their width when they gain or lose a scrollbar. (177172896)</li>
<li>Fixed CSS <code>zoom</code> to be animatable by the computed value. (177411607)</li>
<li>Fixed preferred width to trim trailing whitespace before a preserved newline. (177426037)</li>
<li>Fixed inline layout to apply margins of preceding block content at the line start eagerly when block-in-inline content is involved. (177438841)</li>
<li>Fixed CSS <code>attr()</code> to align with disallowing the <code>&lt;url&gt;</code> type. (177540489)</li>
<li>Fixed CSS attribute selector case-insensitivity handling for HTML attributes. (177547701)</li>
<li>Fixed <code>::first-letter</code> to use the correct definition of punctuation. (177599506)</li>
<li>Fixed <code>offset-path</code> to respect <code>&lt;coord-box&gt;</code> when blending <code>shape()</code> and <code>basic-shape</code> paths. (177685457)</li>
<li>Fixed stretch-fit width with <code>aspect-ratio</code> providing a definite cross size to flex items when it should not. (177705930)</li>
<li>Fixed an aspect-ratio flex container resolving descendant percentage heights against a stale logical height. (177711905)</li>
<li>Fixed <code>inline-block</code> baseline to fall back to the bottom margin edge when the content has no in-flow line boxes. (177753094)</li>
<li>Fixed programmatic focus after keyboard interaction to match <code>:focus-visible</code>. (177850766)</li>
<li>Fixed <code>@font-face</code> <code>font-style</code> to serialize &#8216;oblique 0deg&#8217; as &#8216;normal&#8217;. (178185291)</li>
<li>Fixed serialization of explicit <code>font-variant</code> longhands set after a system font. (178251443)</li>
<li>Fixed <code>CSSFontFeatureValuesRule.fontFamily</code> to be settable rather than <code>readonly</code>. (178323504)</li>
<li>Fixed <code>font-style: oblique</code> to be clamped against the font&#8217;s slant range rather than the <code>@font-face</code> weight range. (178324521)</li>
<li>Fixed <code>font-style: oblique</code> angle being applied to the variable font &#8216;slnt&#8217; axis with the wrong sign. (178326843)</li>
<li>Fixed <code>background</code> and <code>mask</code> coordinated property list resolved values to match the specification. (178378309)</li>
<li>Fixed longer hue interpolation when one input is <code>none</code>. (178476769)</li>
<li>Fixed serialization of <code>@font-face</code> <code>font-weight</code>, <code>font-width</code>, and <code>font-style oblique</code> descriptor ranges with equal bounds to collapse to a single value, per CSSOM. (178517226)</li>
<li>Fixed line-through to render with the correct thickness over a descendant inline box. (178547557)</li>
<li>Fixed <code>font-synthesis</code> to avoid synthesizing styles outside of a font&#8217;s variable axis range. (178550149)</li>
<li>Fixed <code>font-style: italic</code> to slant a variable font whose <code>@font-face</code> uses an oblique angle. (178566326)</li>
<li>Fixed an issue where <code>font-synthesis</code> incorrectly applied synthetic oblique to variable fonts declared with <code>@font-face</code>. (178698772)</li>
<li>Fixed SVG intrinsic sizing so that <code>height: max-content</code> uses the used width rather than the default width. (178712792)</li>
<li>Fixed serialization of various CSS at-rules not escaping identifiers. (178750383)</li>
<li>Fixed <code>color-mix()</code> to allow percentages that sum to zero. (178758710)</li>
<li>Fixed <code>color-mix()</code> resolution for the new 0% rules. (178921722)</li>
<li>Fixed a flex item with <code>min-width: min-content</code> being clamped to a smaller <code>max-width</code>. (178777567)</li>
<li>Fixed <code>:last-child</code> and related selectors incorrectly gating on parser state outside of style resolution. (178879939)</li>
<li>Fixed synthetic bold not being applied for a variable font whose <code>@font-face</code> <code>font-weight</code> descriptor explicitly restricts it to <code>normal</code>. (179001275)</li>
<li>Fixed changing the <code>color-scheme</code> of an <code>&lt;iframe&gt;</code> not invalidating the appearance of the embedded document. (179177141)</li>
<li>Fixed an issue where CSS math functions produced an incorrect signed zero for subtraction, <code>min()</code>, <code>max()</code>, <code>clamp()</code>, and <code>mod()</code>. (179534440)</li>
<li>Fixed serialization of <code>hsl()</code> and <code>hwb()</code> colors that contain at least one <code>none</code> component value so they preserve their <code>hsl()</code>/<code>hwb()</code> function rather than converting to <code>rgb()</code>. (179854247)</li>
<li>Fixed CSS scroll snap re-snap to prefer the fragment-targeted (<code>:target</code>) snap area over other aligned snap targets. (180108825)</li>
<li>Fixed an issue where <code>input[type=hidden]</code> was not set to <code>display: none !important</code> in the user-agent stylesheet. (180137214)</li>
<li>Fixed the CSS preload scanner failing to preload <code>@import</code> rules that follow an <code>@layer</code> statement rule. (180170656)</li>
<li>Fixed serialization of <code>CSSViewTransitionRule</code>. (180170814)</li>
<li>Fixed <code>MediaList.deleteMedium()</code> to parse its argument as a media query and remove all matching queries. (180270019)</li>
<li>Fixed <code>MediaList.appendMedium()</code> to parse its argument as a single media query and suppress duplicates. (180291283)</li>
<li>Fixed grid items with <code>stretch</code> or <code>fit-content</code> preferred sizes computing incorrect minimum-content contributions when sizing tracks. (180748205)</li>
<li>Fixed inserting a CSS rule while a view transition is active causing the group animation to snap to its final state. (181100818)</li>
<li>Fixed CSS <code>var()</code> to only resolve its fallback when the first argument resolves to the guaranteed-invalid value. (181114298)</li>
<li>Fixed navigating away from a render-blocked document before its first rendering opportunity incorrectly firing <code>pagereveal</code> and starting an outbound cross-document view transition. (181191512)</li>
<li>Fixed <code>anchor-center</code> in vertical writing modes not being scroll-adjusted along the block axis. (181413103)</li>
</ul>
<h3><a name="canvas"></a>Canvas</h3>
<ul>
<li>Fixed an issue where a 2D canvas element unnecessarily forced a compositing layer. (172864747)</li>
<li>Fixed canvas 2D context to set the <code>origin-clean</code> flag when reset. (177858398)</li>
<li>Fixed canvas <code>fillText</code> with <code>textAlign=center</code> misplacing complex-shaped text. (178682402)</li>
</ul>
<h3><a name="editing"></a>Editing</h3>
<ul>
<li>Fixed an issue where characters styled with <code>::first-letter</code> were not selectable. (5688237)</li>
<li>Fixed an issue where explicitly setting a font size that matched a legacy <code>&lt;font&gt;</code> size would be incorrectly substituted with the legacy size, causing inconsistent rendering across different default font size configurations. (15292320)</li>
<li>Fixed drag images of DOM elements with CSS transforms not rendering correctly. (99614217)</li>
<li>Fixed an issue where the Font Picker style selection became unusable after changing fonts when editing multiple lines of text. (110651645)</li>
<li>Fixed an issue where adjusting text selection with touch handles was prevented by JavaScript touch event handling on some websites. (151851274)</li>
<li>Fixed an issue where <code>execCommand('FormatBlock')</code> did not preserve inline styles of replaced block elements, causing text formatting to be lost when pasting content. (157657531)</li>
<li>Fixed opaque DOM mutations coming from dictation on iOS. (163454428)</li>
<li>Fixed an issue where <code>text-indent</code> flickered or was ignored on <code>contenteditable</code> elements while typing. (170280101)</li>
<li>Fixed an issue where text selection would jump unexpectedly when selecting absolutely-positioned content inside an element with <code>user-select: none</code>. (170475401)</li>
<li>Fixed an issue where text selection was lost when focus transitioned from a <code>contentEditable</code> element to a non-editable target. (171221909)</li>
<li>Fixed an issue where composition events were dispatched in the wrong order during IME input, causing incorrect character rendering with Devanagari and other input methods. (174330850)</li>
<li>Fixed the Edit menu&#8217;s Copy item being incorrectly enabled when there was no selection in the web page. (176061974)</li>
<li>Fixed a regression where Vietnamese and Korean keyboard input methods incorrectly exited modeless composition mode, requiring a double spacebar press to complete each word. (176847897)</li>
<li>Fixed a recent regression that &#8220;Zhuyin &#8211; Traditional&#8221; input method stalling for multiple seconds when composing Chinese text. (177042301)</li>
<li>Fixed typing Hindi (InScript) input on Google Docs. (177643899)</li>
<li>Fixed iOS selection behavior so that selection is now possible while focus is inside editable content. (178846185)</li>
<li>Fixed deletion in an editable table leaving an empty trailing table row behind. (180877315)</li>
<li>Fixed vertical caret movement in editable content ignoring the requested editable-type parameter. (181000174)</li>
<li>Fixed the page scrolling on its own while adjusting a text selection inside a fixed-position element, such as a search field pinned to the top of the page. (182770935)</li>
</ul>
<h3><a name="encoding"></a>Encoding</h3>
<ul>
<li>Fixed an issue where CJK encoding state was not reset appropriately during text decoding. (174649963)</li>
</ul>
<h3><a name="fonts"></a>Fonts</h3>
<ul>
<li>Fixed an issue where synthetic bold incorrectly added advance width to zero-advance glyphs. (179418570)</li>
</ul>
<h3><a name="forms"></a>Forms</h3>
<ul>
<li>Fixed an issue where keyboard commands such as paste did not work in form fields that restrict input to numbers. (4360235)</li>
<li>Fixed an issue where keyboard tabbing position was lost when a focused button became disabled, causing focus to jump to the beginning of the page. (120676409)</li>
<li>Fixed an issue where a positive <code>margin-top</code> on a <code>&lt;legend&gt;</code> element inside a <code>&lt;fieldset&gt;</code> did not shift the fieldset down. (141267953)</li>
<li>Fixed an issue where small range input slider thumbs were difficult to interact with on iPadOS and visionOS by expanding their touch hit area. (147428926)</li>
<li>Fixed <code>&lt;datalist&gt;</code> suggestions appearing with white text on a white background in dark mode after typing. (168676757)</li>
<li>Fixed an issue on iOS where typing into an <code>&lt;input&gt;</code> element associated with a <code>&lt;datalist&gt;</code> was intercepted by type-to-select behavior. (173346270)</li>
<li>Fixed: Made the <code>&lt;input type="checkbox" switch&gt;</code> control behave more like other controls with regards to native appearance CSS properties. (173487610)</li>
<li>Fixed identically sized buttons to render with consistent corner radius. (173786057)</li>
<li>Fixed an issue where <code>&lt;select multiple&gt;</code> did not always fire <code>onchange</code> when the mouse button was released far outside the element. (173882861)</li>
<li>Fixed an issue where <code>&lt;select&gt;</code> control rendering was broken in vertical writing mode. (174068353)</li>
<li>Fixed a performance issue where parsing <code>&lt;select&gt;</code> elements with thousands of <code>&lt;option&gt;</code> children via <code>innerHTML</code> caused O(n²) overhead due to repeated list recalculation. (174244946)</li>
<li>Fixed an issue where date and time input types without <code>min</code> or <code>max</code> attributes incorrectly matched the <code>:in-range</code> pseudo-class. (174829899)</li>
<li>Fixed an issue where cloned <code>&lt;input&gt;</code> and <code>&lt;textarea&gt;</code> elements did not preserve their user-modified state. (174892989)</li>
<li>Fixed <code>&lt;option&gt;</code> elements to correctly implement the HTML specification&#8217;s dirtiness concept for tracking user-modified <code>selected</code> state. (175306111)</li>
<li>Fixed the select picker appearing at an incorrect position when the <code>&lt;select&gt;</code> element is anchor positioned. (175454476)</li>
<li>Fixed the default <code>display</code> value for <code>&lt;optgroup&gt;</code> and <code>&lt;option&gt;</code> elements to <code>block</code>, matching the behavior of other browsers. (175473184)</li>
<li>Fixed <code>field-sizing: content</code> clipping the placeholder on number inputs that have no value. (175883299)</li>
<li>Fixed <code>&lt;option&gt;</code> and <code>&lt;optgroup&gt;</code> elements to match the <code>:disabled</code> pseudo-class when inside a disabled <code>&lt;select&gt;</code>. (176559708)</li>
<li>Fixed a box with percentage offset (e.g. <code>top: 100%</code>) being mispositioned when its containing block is out-of-flow with percentage height. (177181803)</li>
<li>Fixed the concentric inner-button corner radius on horizontal text form controls incorrectly ignoring the bottom inset. (180869927)</li>
<li>Fixed a number of issues with the default styles for customizable <code>&lt;select&gt;</code> with <code>appearance: base-select</code>, including spacing, borders, <code>border-radius</code>, overflow, cursors, <code>optgroup</code> styling, picker dialog shadow, and increased contrast colors. (183345556)</li>
</ul>
<h3><a name="html"></a>HTML</h3>
<ul>
<li>Fixed an issue where an HTML <code>map</code> element without a <code>name</code> attribute did not match its associated image using the <code>id</code> attribute. (12359382)</li>
<li>Fixed sequential focus navigation to skip elements that do not meet the specification&#8217;s focusability requirements. (103370883)</li>
<li>Fixed viewport <code>&lt;meta&gt;</code> parsing to correctly treat form feed as ASCII whitespace per the HTML specification. (108440799)</li>
<li>Fixed parsing of <code>javascript:</code> URLs to align with the specification. (147612682)</li>
<li>Fixed a severe performance regression causing dynamic insertion of <code>&lt;img&gt;</code> elements with a <code>src</code> attribute to be dramatically slower than other browsers. (166201075)</li>
<li>Fixed an issue where a third nested <code>&lt;iframe&gt;</code> using the <code>srcdoc</code> attribute did not render. (167917471)</li>
<li>Fixed incorrect parsing of pixel-length margin attributes on <code>&lt;body&gt;</code>, <code>&lt;iframe&gt;</code>, and <code>&lt;frame&gt;</code> elements. (171240848)</li>
<li>Fixed popover light dismiss to account for input buttons. (171352032)</li>
<li>Fixed popover light dismiss to account for disabled command buttons. (171358576)</li>
<li>Fixed an issue where <code>replaceWith()</code> stopped processing remaining nodes if a script in the replacement removed a sibling. (172753019)</li>
<li>Fixed an issue where HEIC images were incorrectly converted to JPEG when uploaded via drag-and-drop or file input. (173206598)</li>
<li>Fixed the HTML preload scanner to skip preloading stylesheets that have the <code>disabled</code> attribute. (173378582)</li>
<li>Fixed an issue where setting the <code>rel</code> attribute on an <code>&lt;a&gt;</code> element multiple times did not clear prior link relations. (173567839)</li>
<li>Fixed the HTML parser fast path to correctly process escaped attribute values longer than one character. (173673581)</li>
<li>Fixed the HTML parser fast path to correctly detect nested <code>&lt;li&gt;</code> elements. (173983892)</li>
<li>Fixed the HTML parser fast path to use the adjusted current node for MathML and SVG integration point checks. (174096305)</li>
<li>Fixed document named item collection to include all <code>&lt;object&gt;</code> elements, aligning with other browser engines. (174537345)</li>
<li>Fixed <code>window.open()</code> to correctly consume user activation when creating a new browsing context, aligning with the HTML specification. (174587258)</li>
<li>Fixed remaining issues with <code>&lt;img sizes="auto"&gt;</code> to fully align with the specification. (174684058)</li>
<li>Fixed nested calls to <code>requestClose()</code> incorrectly firing multiple <code>cancel</code> events and causing a stack overflow. (174850509)</li>
<li>Fixed <code>requestClose()</code> incorrectly removing the <code>open</code> attribute when called on a disconnected <code>dialog</code> element. (174855725)</li>
<li>Fixed an issue where <code>dir=auto</code> on <code>&lt;slot&gt;</code> elements did not update when slotted content changed. (174871706)</li>
<li>Fixed an issue where <code>&lt;option&gt;</code> elements rendered incorrectly when the <code>label</code> attribute was empty. (174979446)</li>
<li>Fixed an issue where the preload scanner incorrectly skipped <code>&lt;source&gt;</code> elements with an empty <code>type</code> attribute inside <code>&lt;picture&gt;</code>. (175094037)</li>
<li>Fixed <code>innerText</code> to emit a newline for empty <code>&lt;option&gt;</code> or <code>&lt;optgroup&gt;</code> inside <code>&lt;select&gt;</code>. (175245381)</li>
<li>Fixed HTML floating-point number parsing to correctly handle values with a leading <code>+</code> sign. (175300431)</li>
<li>Fixed <code>innerText</code> to no longer emit newlines for <code>visibility: hidden</code> block elements. (175569426)</li>
<li>Fixed <code>innerText</code> to correctly emit blank lines around <code>&lt;p&gt;</code> elements regardless of their CSS <code>display</code> value. (175729427)</li>
<li>Fixed the speculative preload scanner to no longer incorrectly preload scripts inside SVG elements. (175800116)</li>
<li>Fixed <code>&lt;a rel="ar"&gt;</code> elements wrapping <code>&lt;model&gt;</code> elements to correctly enter ARQL without extra steps and to display the AR badge. (176410897)</li>
<li>Fixed <code>innerText</code> on tables to no longer emit spurious trailing newlines and to preserve row-exit newlines after empty rows. (176635985)</li>
<li>Fixed the HTML preload scanner not preloading resources referenced by legacy <code>&lt;image&gt;</code> tags. (176712749)</li>
<li>Fixed a regression that broke <code>pushState</code> with custom application URL schemes. (177547157)</li>
<li>Fixed <code>outerHTML</code> setter to align with the HTML standard. (177788638)</li>
<li>Fixed fragment parsing of <code>xmlns=""</code> inheritance and <code>annotation-xml</code> encoding. (177808494)</li>
<li>Fixed <code>createHTMLDocument()</code> to no longer leave the body in a parsing state. (178440940)</li>
<li>Fixed text fragment matching so that a prefix is no longer matched outside of a word boundary near the start of the document. (178467104)</li>
<li>Fixed an issue where <code>&lt;link rel=preload as=json&gt;</code> incorrectly triggered a preload. (179843455)</li>
<li>Fixed an issue where the deprecated <code>align="center"</code> attribute was not treated as identical to <code>align="middle"</code> per spec. (180128710)</li>
</ul>
<h3><a name="images"></a>Images</h3>
<ul>
<li>Fixed an issue where inserting an image with a <code>srcset</code> attribute into a dynamically created iframe resulted in an invisible image. (66849050)</li>
<li>Fixed <code>naturalWidth</code> and <code>naturalHeight</code> returning incorrect values for SVG images without intrinsic dimensions. (141196049)</li>
<li>Fixed an issue where HDR images would flicker and lose their HDR appearance when overlapping layers animate. (163382580)</li>
<li>Fixed an issue where adopting a standalone <code>img</code> element did not update its image data. (172856773)</li>
<li>Fixed images appearing then quickly disappearing on OpenTable search results. (176275269)</li>
<li>Fixed rendering performance of HDR images that have gain-maps by using GPU-backed surfaces. (176605566)</li>
<li>Fixed <code>&lt;picture&gt;</code> <code>&lt;source&gt;</code> candidates being speculatively preloaded even when the inner <code>&lt;img&gt;</code> has <code>loading=lazy</code>. (177833110)</li>
<li>Fixed <code>HTMLImageElement.decode()</code> to no longer resolve spuriously after adoption, <code>src</code> change, or cached-image reuse. (178118012)</li>
<li>Fixed a regression where RGB gain map images were decoded to 8 bits per channel, causing a color shift and incorrect brightness. (179152566)</li>
<li>Fixed handling of the gain-map target pixel format when decoding HDR images to fall back safely when the format cannot be parsed. (181180757)</li>
</ul>
<h3><a name="javascript"></a>JavaScript</h3>
<ul>
<li>Fixed multiple top-level await correctness bugs with a rewrite of the ES module loader for standards compliance. (97370038)</li>
<li>Fixed regular expressions in Unicode mode to not count non-capturing groups and modifiers toward the number of available backreferences. (167746769)</li>
<li>Fixed <code>%TypedArray%.prototype.subarray</code> to calculate <code>beginByteOffset</code> correctly to align with ECMA-262. (168143600)</li>
<li>Fixed the trace behavior of <code>RegExp.prototype[Symbol.split]</code> to align with ECMA-262. (168288878)</li>
<li>Fixed <code>Array.prototype.concat</code> to correctly handle arrays with indexed accessors, preventing getter reentry from bypassing <code>Symbol.isConcatSpreadable</code> checks. (172237596)</li>
<li>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. (172978772)</li>
<li>Fixed an issue where class instance field initializers did not have the correct evaluation context when used inside arrow functions and nested scopes. (173296563)</li>
<li>Fixed TypedArray <code>[[Set]]</code> to check the receiver before writing to the typed array. (173386404)</li>
<li>Fixed <code>%ArrayIteratorPrototype%.next()</code> to return <code>{ done: true }</code> instead of throwing a <code>TypeError</code> when the source TypedArray is detached and the iterator has already completed. (173759106)</li>
<li>Fixed an issue where a fixed-count mixed-width character class in a regular expression did not correctly restore the index on backtrack. (173972458)</li>
<li>Fixed an issue where regular expressions with non-BMP characters could skip valid match positions when alternating between patterns. (174200307)</li>
<li>Fixed an issue where regular expression captures were not properly cleared when backtracking out of fixed-count parenthesized groups and negative lookaheads. (174201284)</li>
<li>Fixed an issue where <code>import { “``" as x }</code> was incorrectly treated as a namespace import instead of a named import using the string <code>“"</code> as a ModuleExportName. (174314099)</li>
<li>Fixed an issue where <code>RegExp.prototype.exec</code> and <code>RegExp.prototype.test</code> could match against a stale pattern if <code>lastIndex</code> has a <code>valueOf</code> that calls <code>RegExp.prototype.compile</code>. (174461752)</li>
<li>Fixed an issue where async functions using module-scoped variables could fail when the DFG JIT optimized scope resolution. (174626957)</li>
<li>Fixed an issue where <code>Intl.Segmenter</code> with <code>granularity: "word"</code> incorrectly reported <code>isWordLike: false</code> for numeric segments. (175057894)</li>
<li>Fixed <code>Object.defineProperties</code> to call Proxy traps in the correct order. (175068687)</li>
<li>Fixed an issue where <code>Intl.Locale</code> did not canonicalize before overriding the language. (175092327)</li>
<li>Fixed time zone identifiers to return primary IANA time zone IDs instead of legacy ICU identifiers. (175098682)</li>
<li>Fixed the <code>Array</code> <code>ToPrimitive</code> fast path incorrectly ignoring overrides of <code>Object.prototype.valueOf</code>. (175122250)</li>
<li>Fixed input position corruption in regular expression backward matching when rewinding over a surrogate pair. (175122467)</li>
<li>Fixed <code>Intl.DateTimeFormat</code> to preserve the original legacy timezone identifier instead of replacing it with the primary IANA ID. (175206605)</li>
<li>Fixed <code>Promise.prototype.finally</code> to throw a <code>TypeError</code> when <code>@@species</code> is not a constructor, matching the behavior of other browsers. (175290627)</li>
<li>Fixed the regular expression engine to reject dangling hyphens in character class syntax when using the <code>/v</code> flag. (175559808)</li>
<li>Fixed a performance issue with module resolution by limiting cache population to star-resolution and indirect-resolution cases. (175826413)</li>
<li>Fixed a performance issue with <code>TypedArray.prototype.lastIndexOf</code> by adding SIMD-accelerated reverse search for numeric types. (175904377)</li>
<li>Fixed a performance issue where building a module namespace with many <code>export</code> statements was significantly slower than necessary. (175949532)</li>
<li>Fixed <code>DataView</code> constructor to match specification-defined argument validation order and error throwing behavior. (176110210)</li>
<li>Fixed an issue where <code>Array.prototype.concat</code> could produce incorrect results when combining arrays with incompatible indexing types. (176219964)</li>
<li>Fixed multiple <code>TypedArray</code> constructor edge cases involving buffer sequences to align with the specification. (176724918)</li>
<li>Fixed <code>WebAssembly.Memory</code> and <code>WebAssembly.Module</code> to align their cloning and transferring behavior with <code>SharedArrayBuffer</code>. (176792374)</li>
<li>Fixed <code>Array.prototype.join</code> to include prototype elements added during element <code>toString</code> invocation. (178055452)</li>
<li>Fixed an issue where <code>Temporal.Instant</code> operations were not aligned with the spec&#8217;s abstract operations. (179844859)</li>
</ul>
<h3><a name="mathml"></a>MathML</h3>
<ul>
<li>Fixed the MathML operator dictionary to correct the stretchy property for several operators, resolving Web Platform Test failures. (170901728)</li>
<li>Fixed an issue where symmetric non-stretchy large operators were not centered around the math axis. (170905663)</li>
<li>Fixed an issue where dynamic changes to <code>&lt;mo&gt;</code> element attributes did not trigger a relayout. (170907029)</li>
<li>Fixed an issue where <code>minsize</code> and <code>maxsize</code> defaults and percentages did not use the unstretched size as specified. (170908253)</li>
<li>Fixed positioning of the <code>&lt;mprescripts&gt;</code> element within <code>&lt;mmultiscripts&gt;</code> layout. (170909975)</li>
<li>Fixed an issue where the MathML fraction bar was not painted when its thickness was equal to its width. (170934351)</li>
<li>Fixed an issue where <code>&lt;none&gt;</code> and <code>&lt;mprescripts&gt;</code> elements were not laid out as <code>&lt;mrow&gt;</code> elements in MathML. (170940035)</li>
<li>Fixed an issue where MathML token elements ignored <code>-webkit-text-fill-color</code> when painting math variant glyphs. (172020318)</li>
<li>Fixed <code>padding</code> and <code>border</code> rendering on <code>&lt;msqrt&gt;</code> and <code>&lt;mroot&gt;</code> elements and corrected token sizing for <code>mathvariant</code>. (173081436)</li>
<li>Fixed absolute positioning of elements inside MathML by ensuring logical height is updated. (173088146)</li>
<li>Fixed <code>tabIndex</code> values not being set correctly for MathML elements. (174734133)</li>
<li>Fixed spacing values for prefix operators <code>+</code>, <code>−</code>, <code>±</code>, <code>∓</code>, <code>∇</code>, and infix operator <code>⋉</code> in the MathML Core operator dictionary. (176652211)</li>
<li>Fixed the operator dictionary entry for the <code>∂</code> prefix operator to use the correct spacing values <code>(3, 0)</code> instead of <code>(2, 1)</code>. (176693587)</li>
<li>Fixed nonce-hiding support for MathML elements to align with the HTML specification. (176875058)</li>
<li>Fixed MathML operators routed through <code>MathOperator</code> being invisible when their glyph only exists in a fallback font. (178096170)</li>
<li>Fixed MathML to use MathML Core fallback values for script layout constants. (179177178)</li>
</ul>
<h3><a name="media"></a>Media</h3>
<ul>
<li>Fixed <code>&lt;audio&gt;</code> and <code>&lt;video&gt;</code> controls rendering incorrectly when rotated via CSS transform. (37516619)</li>
<li>Fixed an issue where decoding WebM audio files with more than two channels would fail. (82160691)</li>
<li>Fixed an issue where <code>preservesPitch</code> and <code>playbackRate</code> were not correctly handled on an <code>HTMLMediaElement</code> connected to an <code>AudioContext</code> via <code>createMediaElementSource</code>. (93275149)</li>
<li>Fixed <code>MediaCapabilities.decodingInfo()</code> incorrectly reporting VP8 in WebM as not supported. (127339546)</li>
<li>Fixed WebVTT to not display cues that are larger than the viewport. (136809012)</li>
<li>Fixed an issue on iPad where exiting fullscreen on a media document incorrectly navigated back to the previous page instead of returning to the inline view. (137220651)</li>
<li>Fixed an issue where the WebCodecs <code>VideoDecoder</code> API output frames in an incorrect order for videos containing B-frames. (145093697)</li>
<li>Fixed an issue where the darkening overlay on inline video controls made accurate scrubbing difficult and displayed video content incorrectly on macOS. (161271114)</li>
<li>Fixed an issue where WebM with VP9/Vorbis fallback would not play. (164053503)</li>
<li>Fixed video playback failing when the declared MIME type in a <code>&lt;source&gt;</code> element does not match the actual content type served by the server. (166181001)</li>
<li>Fixed an issue where text selection was broken after pausing a video when the media player ran in the content process. (167727538)</li>
<li>Fixed <code>HTMLMediaElement.currentTime</code> to report smoothly progressing values instead of updating only at fixed intervals. (170115677)</li>
<li>Fixed an issue where MP4 files containing Opus audio tracks could not be decoded with <code>decodeAudioData</code>. (170196423)</li>
<li>Fixed an issue where the <code>VideoFrame</code> constructor did not handle the video color range correctly for NV12 (I420 BT601) video frames. (170299037)</li>
<li>Fixed an issue where Live Text selection was unavailable on paused fullscreen videos. (170817667)</li>
<li>Fixed an issue where FairPlay-protected VP9 content failed to play via <code>MediaSource</code>. (171210968)</li>
<li>Fixed media controls not appearing when tapping videos in the LinkedIn feed on iPad. (171231918)</li>
<li>Fixed an issue where autoplay would proceed before default text tracks finished loading. (171699293)</li>
<li>Fixed the <code>currentTime</code> getter to return <code>defaultPlaybackStartPosition</code> when no media player exists. (171722368)</li>
<li>Fixed <code>HTMLMediaElement</code> to fire a <code>timeupdate</code> event when resetting the playback position during media load as required by the specification. (171785463)</li>
<li>Fixed an issue where the media player <code>preload</code> attribute was not properly updated when the <code>autoplay</code> attribute was set. (171883159)</li>
<li>Fixed an issue where seeking in a WebM video did not work correctly while content was still loading. (172473039)</li>
<li>Fixed an issue where media playback could not move to the next item in a playlist when the tab was in the background. (172676372)</li>
<li>Fixed an issue where scrubbing a video in full-screen mode could cause it to exit full-screen. (172682230)</li>
<li>Fixed an issue where HDR video content appeared washed out due to colorspace information being lost during processing. (172721079)</li>
<li>Fixed Encrypted Media Extensions to check support for the full content type including codecs, rather than only the MIME type. (173852931)</li>
<li>Fixed an issue where setting <code>HTMLMediaElement.volume</code> had no effect when the element was connected to an <code>AudioContext</code>. (174278899)</li>
<li>Fixed <code>ImageCapture</code> to correctly queue <code>takePhoto()</code> and <code>applyConstraints()</code> requests to avoid concurrent capture session reconfiguration. (174950018)</li>
<li>Fixed a regression where videos would stop playing and lose audio after a few seconds on some websites. (174966899)</li>
<li>Fixed an issue where U+0000 (NULL) characters were not allowed in <code>VTTCue</code> text content. (175084171)</li>
<li>Fixed video content disappearing after switching to another tab and back. (175257980)</li>
<li>Fixed WebVTT cue settings line parsing failures. (175296476)</li>
<li>Fixed subtitles and closed captions not appearing in fullscreen video on iOS. (175298523)</li>
<li>Fixed <code>&lt;audio controls&gt;</code> to not show the &#8220;Subtitles&#8221; option when no subtitle track is present. (175357130)</li>
<li>Fixed <code>::cue()</code> selectors to correctly match the WebVTT root object in addition to child nodes. (175550173)</li>
<li>Fixed <code>currentTime</code> on iOS to update more frequently during media playback. (175774587)</li>
<li>Fixed Media Source Extensions <code>readyState</code> not being updated immediately when playback stalls due to a gap in buffered data. (176330683)</li>
<li>Fixed <code>timeupdate</code> events being fired during seeking before the seek operation completes. (176861767)</li>
<li>Fixed the <code>ended</code> event not always firing when the <code>MediaSource</code> duration is changed to match the current playback position. (176863546)</li>
<li>Fixed a MediaSource issue where the decode-key cleanup in coded frame processing was incorrectly removing non-orphaned samples. (176971800)</li>
<li>Fixed <code>currentTime()</code> returning a stale value after the playback rate was changed from zero to a non-zero value. (177046564)</li>
<li>Fixed MSE <code>SourceBuffer.remove()</code> to no longer remove an extra sample, and fixed buffered ranges to cover the correct ranges. (177065364)</li>
<li>Fixed an HTMLMediaElement that doesn&#8217;t display in an infinite scrolling webpage to use a viewport listener that notifies the media player about the visibility of the element. (177081214)</li>
<li>Fixed EME to use a 10 second key wait timeout. (177936893)</li>
<li>Fixed EME OCDM to prevent a spurious <code>keystatuses</code> event when all keys have expired. (177939767)</li>
<li>Fixed <code>getSupportedCapabilitiesForAudioVideoType</code> (EME) to no longer include unsupported capabilities. (178142768)</li>
<li>Fixed <code>MediaSession.setActionHandler</code> to not throw an exception when called. (178167294)</li>
<li>Fixed <code>AudioData.copyTo</code> to throw <code>RangeError</code> when <code>frameOffset</code> equals <code>numberOfFrames</code>. (178609688)</li>
<li>Fixed MIDI and AVI MIME signature matching due to a typo in MIME sniffing. (178661530)</li>
<li>Fixed <code>PannerNode</code> to no longer produce non-finite samples for edge-case distance parameters. (178784571)</li>
<li>Fixed the VP codec parameters string to no longer zero-pad <code>bitDepth</code> based on <code>transferCharacteristics</code>. (179210193)</li>
<li>Fixed an issue where the <code>MediaSource</code> text-track removal loop always processed only the last track. (179508398)</li>
<li>Fixed an issue where <code>isValidVideoFrameBufferInit()</code> tested <code>displayWidth</code> and <code>displayHeight</code> presence against themselves instead of the correct properties. (179514279)</li>
<li>Fixed an issue where <code>MediaMetadata</code> artwork <code>sizes</code> parsing read the wrong substring for the height value. (179523057)</li>
<li>Fixed an issue where the <code>pictureInPictureElement</code> getter inverted the shadow-host connectivity check. (179675087)</li>
<li>Fixed ArrayBuffer-backed YUV <code>VideoFrame</code> with a <code>visibleRect</code> rendering with offset chroma channels. (180202939)</li>
<li>Fixed video playback of streams from certain sources such as security cameras not working. (180411019)</li>
<li>Fixed transient device rotation resulting in captured video frames having the wrong orientation. (180429147)</li>
<li>Fixed Media Source Extensions playback and seek by loosening the gap tolerance between buffered ranges. (180439090)</li>
<li>Fixed being unable to enter Picture-in-Picture again after navigating to another video. (182971786)</li>
<li>Fixed video showing a black screen while audio continued to play after the video decoder was invalidated. (184041554)</li>
</ul>
<h3><a name="model-element"></a>Model Element</h3>
<ul>
<li>Fixed setting the <code>entityTransform</code> on a <code>&lt;model&gt;</code> element while the model is unloaded or hidden. (179114750)</li>
<li>Fixed <code>&lt;model&gt;</code> elements losing gesture interactivity after the model player is reloaded (for example, when the model scrolls out of and back into the viewport). (179249565)</li>
</ul>
<h3><a name="navigation"></a>Navigation</h3>
<ul>
<li>Fixed a <code>&lt;meta http-equiv="refresh"&gt;</code> to a URL differing only in fragment identifier being incorrectly treated as a page reload. (176933795)</li>
</ul>
<h3><a name="networking"></a>Networking</h3>
<ul>
<li>Fixed redirects to <code>data:</code> URLs to be blocked for subresources such as images and scripts, aligning with the Fetch specification. (74165956)</li>
<li>Fixed <code>XMLHttpRequest</code> incorrectly dropping the request body during redirects. (98459882)</li>
<li>Fixed <code>X-Frame-Options</code> to only strip tab or space characters, not vertical tabs. (126915315)</li>
<li>Fixed an issue where Safari&#8217;s address bar could display an internationalized domain name (IDN) homograph as a visually identical legitimate Latin domain, enabling potential phishing attacks. (166796168)</li>
<li>Fixed an issue where the preload scanner did not include integrity metadata in requests, causing incorrect Integrity-Policy violation reports. (168280745)</li>
<li>Fixed range request validation to properly handle HTTP 416 (Requested Range Not Satisfiable) responses. (168487440)</li>
<li>Fixed a regression where the referrer could be missing after a process-swap navigation. (169006635)</li>
<li>Fixed incorrect URL query percent-encoding when using non-UTF-8 character encodings such as <code>iso-8859-2</code>, <code>windows-1250</code>, and <code>gbk</code>. (169566553)</li>
<li>Fixed an issue where the multipart form data parser incorrectly required CRLF after the closing delimiter, causing some web applications to fail to render correctly. (174348783)</li>
<li>Fixed an issue where partitioned cookies could not be deleted via <code>WKHTTPCookieStore</code>. (174557252)</li>
<li>Fixed URL parsing for <code>sendBeacon()</code> and the Media Session API. (177330315)</li>
<li>Fixed an issue where WebKit refused to load valid ASCII domains starting with <code>xn--</code> that did not pass strict IDNA 2008 validation, aligning behavior with the WHATWG URL Standard. <code>xn--</code> is the prefix of a punycode-encoded non-ASCII domain. (177686282)</li>
<li>Fixed an issue where arbitrary <code>Content-*</code> headers from <code>304</code> responses were not used to update cached entries. (179864251)</li>
<li>Fixed an issue where the <code>Cache-Control</code> request directives <code>max-age</code>, <code>min-fresh</code>, and <code>no-store</code> were not honored. (179865576)</li>
<li>Fixed an issue where <code>Cache-Control: public</code> was not honored on responses with unknown status codes. (179870099)</li>
<li>Fixed an issue where the HTTP cache did not store responses with explicit freshness for all status codes. (179871690)</li>
<li>Fixed URL path separators being encoded as <code>%2F</code> following a percent-encoded Armenian path segment. (180067095)</li>
</ul>
<h3><a name="pdf"></a>PDF</h3>
<ul>
<li>Fixed an issue where panning a zoomed-in PDF on iOS would frequently rubber band back to the starting position. (156854435)</li>
<li>Fixed broken text underlines in PDFs created by <code>WKWebView</code>&#8216;s PDF export API. (180631575)</li>
<li>Fixed only one PDF HUD responding to mouse clicks on pages with multiple embedded PDFs. (183273642)</li>
</ul>
<h3><a name="performance"></a>Performance</h3>
<ul>
<li>Fixed an extremely slow page load on iPhone caused by blur filters with large radii (172480480)</li>
</ul>
<h3><a name="printing"></a>Printing</h3>
<ul>
<li>Fixed an issue where animations were ignored during print, causing missing content on animated pages. (36901701)</li>
<li>Fixed an issue where printing light text on a dark background with backgrounds disabled could result in invisible text. (170070133)</li>
<li>Fixed a regression where printing a WebView embedded in an enclosing <code>NSPrintOperation</code> dropped all text. (174756900)</li>
</ul>
<h3><a name="rendering"></a>Rendering</h3>
<ul>
<li>Fixed an issue where table cells with <code>rowspan</code> values exceeding the actual number of rows were incorrectly computing heights. (3209126)</li>
<li>Fixed changes to a <code>filter: drop-shadow()</code> not repainting the area outside the element&#8217;s boundaries. (49387957)</li>
<li>Fixed an issue where <code>::first-letter</code> styles caused <code>Range.getClientRects()</code> and <code>Range.getBoundingClientRect()</code> to return incorrect dimensions. (71546397)</li>
<li>Fixed incorrect distributed height in table rows when a <code>&lt;td&gt;</code> element has an explicit height set. (78549188)</li>
<li>Fixed an issue where U+2028 LINE SEPARATOR was not rendered as a forced line break. (88470339)</li>
<li>Fixed an issue where a block formatting context with <code>margin-start</code> could overlap an adjacent float. (93187697)</li>
<li>Fixed <code>position: relative</code> on table rows (<code>&lt;tr&gt;</code>) to correctly establish a containing block for absolutely positioned descendants. (94294819)</li>
<li>Fixed <code>&lt;marquee&gt;</code> elements causing incorrect table width calculations. (99826593)</li>
<li>Fixed Google search-suggestion font sizes increasing on rotation from portrait to landscape. (113801810)</li>
<li>Fixed boxes in the top layer to use the initial containing block as their static-position rectangle. (155495104)</li>
<li>Fixed an issue where a flex item containing a percentage-height image did not shrink correctly around the image. (156902823)</li>
<li>Fixed an issue where form controls with <code>height: 100%</code> in auto-height containers incorrectly resolved to zero height. (161699543)</li>
<li>Fixed incorrect box sizing on inline elements when they have no siblings and their <code>padding-left</code> plus <code>margin-left</code> equals zero. (162376969)</li>
<li>Fixed a regression where an element inside an iframe gaining its own compositing layer could cause an iframe&#8217;s semi-transparent background to appear darker.(163509267)</li>
<li>Fixed an issue where space-taking scrollbars did not trigger a proper re-layout when the box size depends on content size. (166836126)</li>
<li>Fixed misrendering of Pahawh Hmong text on Wikipedia. (167446860)</li>
<li>Fixed an issue where View Transition snapshots were incorrectly stored in sRGB, causing rendering issues with non-sRGB colors. (167634138)</li>
<li>Fixed an issue where font subpixel quantization was unnecessarily disabled in some cases, improving text rendering quality. (168088611)</li>
<li>Fixed table layout to properly handle <code>visibility: collapse</code> on columns. (168556786)</li>
<li>Fixed intrinsic sizing for absolutely positioned replaced elements. (168815514)</li>
<li>Fixed text being incorrectly truncated in RTL containers when combined with <code>text-overflow: ellipsis</code> and an <code>inline-block</code> pseudo-element. (168875614)</li>
<li>Fixed percentage padding in table cells to resolve against column widths. (168940907)</li>
<li>Fixed a regression where hovering over elements could leave repaint artifacts on the page. (169112402)</li>
<li>Fixed table height distribution to apply to tbody sections instead of only the first section. (169154677)</li>
<li>Fixed an issue where table sections with explicit heights did not properly constrain and distribute space among contained rows. (169235210)</li>
<li>Fixed an issue where images with <code>min-width: fit-content</code> rendered at an incorrect width. (169359566)</li>
<li>Fixed an issue where <code>height: 100%</code> was incorrectly calculated for replaced elements like images serving as grid items nested inside a flexbox. (169431440)</li>
<li>Fixed an issue where images were incorrectly stretched in certain page layouts. (170270187)</li>
<li>Fixed an issue where Find in Page scrolled to the wrong location when matching text inside elements with <code>user-select: none</code>. (170477571)</li>
<li>Fixed the baseline calculation for <code>inline-block</code> elements so that when <code>overflow</code> is not <code>visible</code>, the baseline is correctly set to the bottom margin edge. (170575015)</li>
<li>Fixed an issue where replaced elements did not correctly apply <code>min-height</code> and <code>min-width</code> constraints in certain configurations. (170765025)</li>
<li>Fixed an issue where overlay backgrounds would briefly dim incorrectly when de-compositing in a scrollable container. (171024685)</li>
<li>Fixed a regression where sticky-positioned elements inside overflow containers could appear in front of content that should overlap them. (171179878)</li>
<li>Fixed an issue where auto table layout did not honor <code>max-width</code> on table cells when distributing width between them. (171459245)</li>
<li>Fixed an issue where <code>border-spacing</code> incorrectly included collapsed columns in auto table layout calculations. (171468102)</li>
<li>Fixed an issue where percentage-height children of table cells with unresolvable percentage heights were not sized intrinsically. (171469500)</li>
<li>Fixed an issue where cell backgrounds in collapsed-border tables extended into adjacent cells&#8217; border space at table edges. (172068907)</li>
<li>Fixed an issue where if a document in an iframe uses <code>@prefers-color-scheme</code>, it does not follow the <code>color-scheme</code> set by grandparents of the iframe. (172229372)</li>
<li>Fixed an issue where list item margins were computed incorrectly when the page was zoomed in or out. (172312498)</li>
<li>Fixed an issue where <code>about:blank</code> iframes did not always have a transparent background. (172400258)</li>
<li>Fixed an issue where a right-floated table could overlap another table. (172655655)</li>
<li>Fixed an issue where grid containers failed to avoid float boxes. (172655720)</li>
<li>Fixed an issue where an anonymous block created for list markers was not properly collapsed when block content prevented line-box parenting. (172686060)</li>
<li>Fixed <code>text-wrap: balance</code> not being applied to content with <code>-webkit-line-clamp</code>. (172715503)</li>
<li>Fixed an issue where checkboxes could overlap with adjacent text. (172741572)</li>
<li>Fixed an issue where checkbox outlines appeared misaligned. (172742551)</li>
<li>Fixed an issue where list markers rendered on the wrong line when list items started with empty inline elements. (172762578)</li>
<li>Fixed an issue where U+2029 PARAGRAPH SEPARATOR was not treated as a forced line break. (173106856)</li>
<li>Fixed a black region appearing on the right side of <a href="http://swift.org/">swift.org</a> when the sidebar is open. (173191807)</li>
<li>Fixed an issue where tiles were missing after navigating back in history. (173288233)</li>
<li>Fixed an issue where view transition snapshots could capture stale transform values for accelerated CSS transform animations. (173323193)</li>
<li>Fixed an issue with outside list markers when blockification prevents line-box parenting. (173417560)</li>
<li>Fixed a regression where nested empty inline boxes accumulated an incorrect vertical offset, causing inline elements to stack as block-level elements. (173723162)</li>
<li>Fixed an issue where pseudo-elements were incorrectly included in outline rect collection. (174033087)</li>
<li>Fixed an inverted Y-axis comparison that could cause incorrect caret positioning. (174144220)</li>
<li>Fixed <code>&lt;legend&gt;</code> to mask the <code>&lt;fieldset&gt;</code>&#8216;s border correctly when it has a negative left margin. (174185071)</li>
<li>Fixed an issue where <code>&lt;br&gt;</code> elements with <code>line-height: 0</code> still created extra vertical space, failing to respect the declared line height. (174400946)</li>
<li>Fixed auto outlines to more closely follow the border radii of elements. (174466854)</li>
<li>Fixed how gradients are rendered to improve performance. (174880197)</li>
<li>Fixed <code>image-orientation</code> being ignored for <code>background-image</code>, <code>border-image</code>, and <code>list-style-image</code>. (174894122)</li>
<li>Fixed a <code>white-space: pre-wrap</code> layout issue with justified text. (174937310)</li>
<li>Fixed an image with <code>min-height: min-content</code> inside a column flex container not shrinking to preserve its aspect ratio. (174999995)</li>
<li>Fixed an issue with <code>flex-wrap</code> and flex factor computation for wrapping flex items. (175012395)</li>
<li>Fixed vertical <code>writing-mode</code> content incorrectly wrapping when the parent has <code>auto</code> height. (175123356)</li>
<li>Fixed a <code>column-wrap</code> flex container with <code>flex-basis: 0</code> wrapping items into extra columns instead of stacking them when nested inside another column flex container. (175195518)</li>
<li>Fixed incorrect bounding box position for newline characters. (175243361)</li>
<li>Fixed an issue where a child element with <code>filter: blur()</code> ignored <code>border-radius</code> overflow clipping from its parent. (175519148)</li>
<li>Fixed an issue where absolutely positioned tables with content exceeding their declared width were incorrectly positioned. (175755871)</li>
<li>Fixed height calculations for absolutely positioned tables with percentage-sized children. (175762381)</li>
<li>Fixed an issue where containers with block-in-inline content did not expand when <code>max-height</code> was removed. (175799547)</li>
<li>Fixed an issue where absolutely positioned tables with explicit percentage or fixed heights did not resolve correctly against their containing block. (175852400)</li>
<li>Fixed always-on scrollbar thumbs not rendering on the root element of nested documents with <code>display: flex</code>. (175866046)</li>
<li>Fixed absolutely positioned tables ignoring <code>min-height</code> and shrinking below their content height. (175883577)</li>
<li>Fixed <code>drop-shadow</code> filters and <code>transform: translate()</code> incorrectly clipping nested elements after a regression. (175905543)</li>
<li>Fixed absolutely positioned tables ignoring <code>max-height</code> constraints. (175932457)</li>
<li>Fixed <code>scrollbar-gutter</code> placement on the root element in RTL layouts. (175939512)</li>
<li>Fixed an issue where a flex item with <code>aspect-ratio</code> and <code>content-box</code> padding computed the wrong height in a column flex container. (176033726)</li>
<li>Fixed a repaint issue where table rows did not repaint their previous position after a preceding row changed size, causing content to appear at both the old and new locations. (176172404)</li>
<li>Fixed an issue where block-level boxes nested within inline elements were not properly aligned when using <code>align-content: center</code>. (176173122)</li>
<li>Fixed a regression that caused incorrect layout in some content using <code>stretch</code>. (176398251)</li>
<li>Fixed intrinsic sizing for non-replaced elements with percentage dimensions. (176493856)</li>
<li>Fixed justification expansion to apply around CJK Unified Ideographs Extensions E, F, G, and H. (176759766)</li>
<li>Fixed RTL position-fixed elements losing their contents when the document is scrolled on iOS. (177454608)</li>
<li>Fixed the background of a composited <code>&lt;html&gt;</code> element not being repainted when the <code>&lt;body&gt;</code> background changed. (177975964)</li>
<li>Fixed an issue where text changes that did not modify the text element&#8217;s size in a flex layout on a new compositing layer did not trigger re-rendering. (179292409)</li>
<li>Fixed an issue where an underline was drawn twice on <code>&lt;sup&gt;</code> elements. (179537119)</li>
<li>Fixed an issue where an underline under a <code>&lt;sup&gt;</code> element was offset by one device pixel from the rest of the line on subpixel displays. (179586525)</li>
<li>Fixed an issue where the <code>ex</code> unit in <code>text-box-edge</code> misplaced the propagated underline, causing it to be painted twice. (179769451)</li>
<li>Fixed an issue where <code>min-width</code> was not honored over <code>max-width</code> when sizing a shrink-to-fit container around a replaced element. (179935558)</li>
<li>Fixed an issue where an <code>&lt;img&gt;</code> embedding an SVG with a near-integral intrinsic width rendered one device pixel narrower than expected. (180490343)</li>
<li>Fixed elements with <code>filter: drop-shadow()</code> not being fully repainted when a child is resized. (181284741)</li>
</ul>
<h3><a name="svg"></a>SVG</h3>
<ul>
<li>Fixed SVG applying <code>text-decoration</code> to elements with <code>display: contents</code>. (85691104)</li>
<li>Fixed SVG <code>&lt;text&gt;</code> with <code>textLength</code> scaling each glyph separately when <code>x</code> or <code>y</code> is a list. (94161279)</li>
<li>Fixed an issue where backslash-escaped dot characters in SVG animation timing attribute ID references were not parsed correctly. (94260935)</li>
<li>Fixed an issue where SMIL animations of <code>href</code> or <code>xlink:href</code> on SVG <code>&lt;image&gt;</code> elements had no visual effect. (96316808)</li>
<li>Fixed the resolved value for the <code>width</code> and <code>height</code> properties on SVG <code>&lt;rect&gt;</code>, <code>&lt;image&gt;</code>, <code>&lt;svg&gt;</code>, and other elements. (96320059)</li>
<li>Fixed an animated GIF freezing when referenced by SVG <code>&lt;use&gt;</code> and the opacity was adjusted. (96837306)</li>
<li>Fixed an issue where SVG animation did not clear the animated CSS property when <code>attributeName</code> was dynamically changed. (97097883)</li>
<li>Fixed an issue where <code>box-shadow</code> was not drawn on fixed-positioned SVG elements. (97098951)</li>
<li>Fixed <code>:visited</code> link color to properly propagate to SVG through <code>currentColor</code>. (98776770)</li>
<li>Fixed an issue where a CSS filter referencing an SVG filter via <code>url(#id)</code> was not invalidated when the filter content changed. (101870430)</li>
<li>Fixed <code>vector-effect</code> to apply a transform to path geometry rather than to stroke geometry. (103573160)</li>
<li>Fixed negative <code>stroke-dashoffset</code> values rendering with incorrect offsets when <code>stroke-dasharray</code> has an odd number of values. (103596361)</li>
<li>Fixed <code>&lt;animateMotion&gt;</code> non-path animations to apply the <code>rotate</code> attribute. (110915794)</li>
<li>Fixed SVG2 systemLanguage attribute to improve parsing and compliance with the specification. (116427520)</li>
<li>Fixed removing an item from <code>SVGTransformList</code> to properly allow attribute removal. (117840533)</li>
<li>Fixed SVG SMIL length animations to reject invalid <code>to</code>, <code>from</code>, and <code>by</code> values such as those with leading whitespace. (118537155)</li>
<li>Fixed Unicode text with complex scripts not rendering correctly along a curved <code>&lt;textPath&gt;</code>. (120284006)</li>
<li>Fixed an issue where the XML document parser did not defer inline script execution until pending stylesheets had loaded. (122574381)</li>
<li>Fixed an issue where animated SVG images referenced via an <code>&lt;img&gt;</code> tag did not animate correctly due to repaint artifacts with <code>object-fit</code>. (141815698)</li>
<li>Fixed SVG elements with <code>display: contents</code> being visually hidden. (141825746)</li>
<li>Fixed an SVG <code>&lt;tspan&gt;</code> positioning bug with <code>xml:space="preserve"</code> that caused multi-line text to render incorrectly. (143722975)</li>
<li>Fixed an issue where SVG elements referencing non-existent filter IDs were not rendered. (164046592)</li>
<li>Fixed <code>SVGPathElement.getTotalLength()</code> and <code>. SVGPathElement.getTotalLength.getPointAtLength()</code> to respect the CSS <code>d</code> property. (167195297)</li>
<li>Fixed <code>offsetX</code> and <code>offsetY</code> for SVG elements to use the outermost SVG as the base for coordinate calculation. (168548585)</li>
<li>Fixed an issue where URL fragments were not percent-decoded before being used for SVG references. (169582378)</li>
<li>Fixed: Updated the default values of <code>fx</code> and <code>fy</code> attributes on <code>SVGRadialGradientElement</code> to <code>50%</code> to align with the SVG2 specification. (169645572)</li>
<li>Fixed <code>SVGAnimatedRect.baseVal</code> to ignore invalid values set on the <code>viewBox</code> attribute, such as negative width or height, aligning with Firefox and Chrome. (170214971)</li>
<li>Fixed SVG length attributes to reset to their default values when removed, rather than retaining previously set values. (170360351)</li>
<li>Fixed an issue where <code>getScreenCTM()</code> did not include CSS transforms and zoom contributions in the legacy SVG rendering path. (171525696)</li>
<li>Fixed a rounding issue for SVG rect height with <code>em</code> and percentage values. (171587382)</li>
<li>Fixed <code>SVGLength.convertToSpecifiedUnits()</code> failing when converting from <code>px</code> to <code>%</code>, <code>em</code>, or <code>ex</code>. (172056830)</li>
<li>Fixed an issue where an SVG <code>&lt;image&gt;</code> element was not repainted when the <code>href</code> attribute was removed. (172530834)</li>
<li>Fixed an issue where an invalid attribute type in one SVG animation group prevented all subsequent animation groups from running. (172593109)</li>
<li>Fixed a regression where wheel events were not dispatched to an empty <code>&lt;svg&gt;</code> root element. (172909441)</li>
<li>Fixed an issue where SMIL <code>parseClockValue</code> did not reject out-of-range minutes and seconds values per the SMIL timing specification. (173577212)</li>
<li>Fixed the SMIL <code>values</code> attribute to preserve empty values and handle trailing semicolons. (173594455)</li>
<li>Fixed SMIL <code>repeat(n)</code> event conditions not triggering animations. (173599629)</li>
<li>Fixed SVG2 <code>getStartPositionOfChar</code> and <code>getEndPositionOfChar</code> to be more compliant with the specification. (174145885)</li>
<li>Fixed SVG intrinsic sizing so that <code>max-content</code> and <code>min-content</code> use the <code>viewBox</code> aspect ratio when intrinsic sizes are missing. (174568894)</li>
<li>Fixed <code>glyph-orientation-vertical: auto</code> to use UTR#50 Vertical Orientation properties for correct character orientation in vertical text. (175064567)</li>
<li>Fixed SVG intrinsic aspect ratio being incorrectly suppressed when <code>preserveAspectRatio</code> is set to <code>none</code>. (175173375)</li>
<li>Fixed SVG images without complete intrinsic dimensions incorrectly using ratio-based scaling for <code>background-size</code>. (175345107)</li>
<li>Fixed <code>glyph-orientation-vertical: auto</code> to decode surrogate pairs for UTR#50 lookup. (175570881)</li>
<li>Fixed the SMIL clock value parser to accept hours greater than 99 and reject malformed seconds values. (175593583)</li>
<li>Fixed <code>stroke-dasharray</code> interpolation to use least common multiple for list length matching and corrected composition behavior. (175598175)</li>
<li>Fixed SVG geometry presentation attributes like <code>cx</code>, <code>cy</code>, <code>r</code>, <code>rx</code>, <code>ry</code>, <code>x</code>, <code>y</code>, <code>width</code>, and <code>height</code> being incorrectly applied to elements such as <code>&lt;g&gt;</code> on which they are not permitted. (175672111)</li>
<li>Fixed handling of <code>pathLength="0"</code> and negative <code>pathLength</code> for stroke dashing. (175928827)</li>
<li>Fixed an issue where <code>@prefers-color-scheme</code> in an SVG image will sometimes not follow the system color appearance. (176413340)</li>
<li>Fixed <code>getScreenCTM()</code> returning an incorrect matrix when the document is scrolled under a CSS-transformed ancestor. (176814876)</li>
<li>Fixed an issue where an SVG filter applied via CSS to an element positioned below the viewport rendered a spurious black square at the viewport origin. (177482001)</li>
<li>Fixed hit-testing of <code>clip-path</code> with nested <code>objectBoundingBox</code> <code>&lt;clipPath&gt;</code> to use the correct reference box. (177605894)</li>
<li>Fixed SVG overflowing edges when offset by a fractional value. (177630386)</li>
<li>Fixed <code>IntersectionObserver</code> not computing intersections for SVG element roots. (177807041)</li>
<li>Fixed <code>feGaussianBlur</code> not applying when <code>stdDeviation</code> contains a 0 in the second component. (177906905)</li>
<li>Fixed SVG vertical <code>&lt;text&gt;</code> to honor the CSS <code>text-orientation</code> property instead of only the deprecated <code>glyph-orientation-vertical</code> presentation attribute. (178044217)</li>
<li>Fixed an issue where the per-character <code>rotate</code> attribute was discarded on a <code>&lt;textPath&gt;</code>, so it now composes with the path tangent angle. (178044478)</li>
<li>Fixed an issue where <code>getRotationOfChar()</code> returned approximately 360° instead of 0° for full-turn rotations after normalisation into the &#91;0°, 360°) range. (178044934)</li>
<li>Fixed an issue where a non-BMP character before a <code>&lt;tspan&gt;</code> boundary shifted the <code>x</code> and <code>y</code> value lists by one position. (178360036)</li>
<li>Fixed interpolation of arc flags in the <code>d</code> property to treat them as non-zero booleans. (178950624)</li>
<li>Fixed <code>pathFromEllipseElement</code> to honor <code>auto</code> values for <code>rx</code> and <code>ry</code>, so APIs such as <code>getTotalLength()</code> return the correct length for ellipses. (178959205)</li>
<li>Fixed animated GIFs freezing when presentation attributes are changed on an SVG image referenced by a <code>&lt;use&gt;</code> element. (179414226)</li>
<li>Fixed an issue where <code>getBoundingClientRect()</code> on an SVG <code>&lt;tspan&gt;</code> element returned the bounds of the entire <code>&lt;text&gt;</code> element instead of the <code>&lt;tspan&gt;</code>&#8216;s own area. (179626476)</li>
<li>Fixed an issue where a nested <code>clip-path</code> on a <code>&lt;clipPath&gt;</code> element ignored css zoom. (180162723)</li>
<li>Fixed several SVG styling spec-compliance failures. (181052042)</li>
<li>Fixed dynamic changes to <code>orient</code> and <code>markerUnits</code> on <code>&lt;marker&gt;</code> not repainting elements that reference it. (181106538)</li>
<li>Fixed SVG SMIL <code>number</code>, <code>integer-optional-integer</code>, <code>number-optional-number</code>, and <code>path</code> animations to not apply when their <code>from</code>, <code>to</code>, or <code>by</code> values fail to parse. (181308150)</li>
</ul>
<h3><a name="scrolling"></a>Scrolling</h3>
<ul>
<li>Fixed an issue on iOS where calling <code>scrollTo</code> during a momentum scroll incorrectly interrupted the scroll, ensuring that momentum scrolling continues as expected and smooth scrolling behaves properly. (41949531)</li>
<li>Fixed scrolling of the &#8220;Add Contacts&#8221; drop-down on <a href="http://outlook.live.com/">outlook.live.com</a> by narrowing the scope of a quirk. (48008837)</li>
<li>Fixed an issue on iOS where programmatic smooth scrolling with <code>scroll-snap-type: mandatory</code> failed after the browser chrome was hidden. (100727098)</li>
<li>Fixed an issue where <code>scrollIntoView</code> with <code>nearest</code> alignment incorrectly aligned to the far edge for an oversized target positioned before the scrollport. (106356373)</li>
<li>Fixed an issue where interrupting scroll momentum caused the scrolling container to stop rendering and hit-testing to be misplaced. (116205365)</li>
<li>Fixed an issue on iOS where restored scroll position was incorrect after relaunching Safari. (127308062)</li>
<li>Fixed a <code>passive: false</code> wheel event listener combined with <code>overscroll-behavior: contain</code> preventing scrolling. (137757208)</li>
<li>Fixed an issue where tabbing in a scroll container with <code>scroll-padding</code> did not scroll the focused element into view. (147513379)</li>
<li>Fixed pan gestures incorrectly passing through scroll containers laid over vertical-rl body text. (160788907)</li>
<li>Fixed a regression on macOS 26 where horizontal rubber-banding interfered with vertical scrolling. (165449829)</li>
<li>Fixed an issue on macOS where custom CSS scrollbars could be cut off and the scrollbar corner rect was sized incorrectly. (168566468)</li>
<li>Fixed rubberbanding behaving incorrectly when a site triggers a smooth scroll to the top during a rubberband. (170705188)</li>
<li>Fixed an issue where pages could become blank and jump to the top after dynamically loading new content when scroll anchoring was enabled. (170889205)</li>
<li>Fixed an issue where scroll anchoring could cause pages to scroll to negative offsets. (171221075)</li>
<li>Fixed an issue where pages using the Navigation API could have offset hit test locations, making elements unclickable. (171752650)</li>
<li>Fixed CSS scroll snap points inside zero-sized elements not working correctly. (172863699)</li>
<li>Fixed an issue on iOS where composited layers would briefly flash blank when <code>window.scrollTo()</code> was called synchronously with a DOM layout change. (173197381)</li>
<li>Fixed occasional flashes of an incorrect scroll position when scroll anchoring adjusts content while scrolling. (173456210)</li>
<li>Fixed an issue where sticky-positioned elements could flicker rapidly after scrolling. (173680821)</li>
<li>Fixed an issue where scroll anchoring could cause a page to scroll to the top or bottom automatically. (173885027)</li>
<li>Fixed an issue where calling <code>scrollIntoView()</code> on a scrollable element incorrectly scrolled the element&#8217;s own contents. (174173683)</li>
<li>Fixed scroll anchoring interfering with rubberbanding on some websites. (175195943)</li>
<li>Fixed an issue on iOS where scroll position was not preserved correctly when rotating the device on right-to-left pages. (175910769)</li>
<li>Fixed top and bottom fixed-position elements flickering during rubber-band scrolling. (176226179)</li>
<li>Fixed the scroll anchoring behavior so that the comments panel on Quip is no longer blank when expanded. (178255628)</li>
<li>Fixed an issue where scroll snapping selected a snap point that overshot the destination instead of the closest one in the scroll direction. (179549119)</li>
<li>Fixed an issue where interrupting a smooth scroll with a new <code>scrollTo()</code> call to a different target fired the <code>scrollend</code> event at the wrong position. (179551854)</li>
<li>Fixed an issue where re-snapping after a layout change moved away from a valid scroll position when the snap area was larger than the snapport. (179553122)</li>
<li>Fixed CSS scroll snap re-snap to prefer a snap area that contains the focused or fragment-targeted element. (180707984)</li>
<li>Fixed the scroll position jumping when a page changes <code>scroll-padding</code> while scroll anchoring is active. (183145868)</li>
</ul>
<h3><a name="security"></a>Security</h3>
<ul>
<li>Fixed an issue where Content Security Policy <code>'self'</code> did not match script sources in opaque-origin HTTP(S) documents. (178638597)</li>
<li>Fixed <code>&lt;object&gt;</code> elements that load images being incorrectly blocked by the <code>img-src</code> Content Security Policy directive. (178772677)</li>
<li>Fixed a regression where some websites failed to display and logged Content Security Policy errors in the console. (179684592)</li>
<li>Fixed an issue where Content Security Policy incorrectly applied <code>script-src</code> to JSON module imports instead of <code>connect-src</code>. (180006320)</li>
<li>Fixed same-page navigations being incorrectly checked against Content Security Policy. (180342503)</li>
<li>Fixed Content Security Policy <code>frame-ancestors</code> violations in report-only policies being ignored instead of reported. (180447621)</li>
<li>Fixed Content Security Policy parsing to reject trailing characters after the closing quote on <code>nonce-source</code> and <code>hash-source</code> values. (180903857)</li>
<li>Fixed Content Security Policy <code>trusted-types</code> expressions to reject trailing characters after keywords and the wildcard. (180973793)</li>
</ul>
<h3><a name="spatial-web"></a>Spatial Web</h3>
<ul>
<li>Fixed spatial and panoramic image controls to support RTL language layout and localization of type labels. (161690817)</li>
<li>Fixed <code>&lt;model&gt;</code> elements displaying at 100x the expected size for assets authored in tools that use centimeter units. (167805672)</li>
<li>Fixed an issue where WebXR viewports did not get an initial value until <code>getViewport()</code> was called. (168125694)</li>
<li>Fixed an issue where the <code>&lt;model&gt;</code> element stagemode orbit physics behaved differently between iOS and visionOS. (172189776)</li>
<li>Fixed an issue on visionOS where fullscreen video would sometimes jump when exiting fullscreen if the browser window was narrower than the video. (174454557)</li>
<li>Fixed an issue where removing all text from the URL bar on Safari in visionOS showed an empty completion list. (176499710)</li>
<li>Fixed <code>XRProjectionLayer</code> to return correct values for <code>width</code>, <code>height</code>, and layer count. (178444052)</li>
<li>Fixed an issue where transforming the camera instead of the model in a <code>&lt;model&gt;</code> element led to undesirable lighting effects. (179522538)</li>
</ul>
<h3><a name="storage"></a>Storage</h3>
<ul>
<li>Fixed an issue where IndexedDB could incorrectly return a version 0 database after an abort during the initial <code>onupgradeneeded</code> event. (176195526)</li>
<li>Fixed IndexedDB connections in workers to recover after a network process crash. (177219395)</li>
<li>Fixed an issue where IndexedDB transactions could be blocked for an extended period before starting when another page&#8217;s transaction was suspended in the background. (178769599)</li>
</ul>
<h3><a name="tables"></a>Tables</h3>
<ul>
<li>Fixed an issue with a collapsed border color mismatch when the table cell has a different writing-mode. (173655092)</li>
</ul>
<h3><a name="text"></a>Text</h3>
<ul>
<li>Fixed a line break appearing after a U+201D Right Double Quotation Mark. (177952069)</li>
</ul>
<h3><a name="ui-events"></a>UI Events</h3>
<ul>
<li>Fixed boundary events not being dispatched when a hovered element is removed from the DOM, so the Full Screen button on <a href="http://bsky.app/">bsky.app</a> no longer remains stuck in a hover state. (176507648)</li>
</ul>
<h3><a name="web-api"></a>Web API</h3>
<ul>
<li>Fixed the parent window&#8217;s <code>history.state</code> being set to <code>null</code> when <code>history.pushState</code> is called from a child iframe. (50019069)</li>
<li>Fixed the Async Clipboard API to request paste access asynchronously. (75969974)</li>
<li>Fixed clicking on a scrollbar of an overflow container blurring the current <code>activeElement</code>. (92367314)</li>
<li>Fixed an issue where the <code>change</code> event was not fired on <code>&lt;input&gt;</code> and <code>&lt;textarea&gt;</code> elements when they lost focus while another application was in the foreground. (98526540)</li>
<li>Fixed Web IDL bindings to correctly reject <code>SharedArrayBuffer</code> where <code>[AllowShared]</code> is not specified. (107786134)</li>
<li>Fixed Content Security Policy to only recognize ASCII whitespace excluding vertical tabs to align with the specification. (108559413)</li>
<li>Fixed emoji input on Google Docs and similar web applications by suppressing keypress events for supplementary characters. (122678873)</li>
<li>Fixed an issue where <code>MouseEvent.offsetX</code> and <code>MouseEvent.offsetY</code> were not relative to the padding edge as specified. (125763807)</li>
<li>Fixed an issue on visionOS where the <code>gamepadconnected</code> event did not fire unless gamepad permission had already been granted. (141623162)</li>
<li>Fixed an issue where <code>CSPViolationReportBody</code> did not include the source line number in Content Security Policy violation reports. (152607402)</li>
<li>Fixed <code>IntersectionObserver</code> to no longer notify targets in detached documents. (162699098)</li>
<li>Fixed an issue where selecting credentials in the Digital Credentials API sometimes required a second click to trigger verification. (163295172)</li>
<li>Fixed window bar visibility properties (<code>toolbar.visible</code>, <code>statusbar.visible</code>, <code>menubar.visible</code>) to return static values per the HTML specification for privacy and interoperability. (166554327)</li>
<li>Fixed handling of unknown <code>DigitalCredential</code> protocols by gracefully filtering them out and showing a console warning instead of throwing an error. (166673454)</li>
<li>Fixed: Updated the Digital Credentials API to rename <code>DigitalCredentialRequest</code> to <code>DigitalCredentialGetRequest</code> per the latest specification. (167115220)</li>
<li>Fixed an issue where Service Worker routes were not matched when no fetch event handler was set. (167753466)</li>
<li>Fixed spec conformance issues in the Streams API piping and abort behavior. (167841090)</li>
<li>Fixed Service Worker static routing rules to enforce limitation checks as required by the specification. (167977145)</li>
<li>Fixed <code>layerX</code> and <code>layerY</code> to return correct values with CSS transforms. (168968832)</li>
<li>Fixed <code>location.ancestorOrigins</code> returning stale origins after an iframe is removed from the document. (169097730)</li>
<li>Fixed <code>NavigateEvent.canIntercept</code> to correctly return <code>false</code> when navigating to a URL with a different port, aligning with the Navigation API specification. (169845691)</li>
<li>Fixed <code>NavigateEvent.navigationType</code> to return <code>"replace"</code> when navigating to a URL that matches the active document&#8217;s URL. (169999046)</li>
<li>Fixed an issue where the <code>dragend</code> event had incorrect coordinates when dragging within a nested <code>&lt;iframe&gt;</code>. (170750013)</li>
<li>Fixed an issue where <code>navigation.currentEntry.key</code> did not change in private browsing windows after calling history.pushState(). (171147417)</li>
<li>Fixed an issue where touch event properties values were sometimes swapped with neighboring values. (171567543)</li>
<li>Fixed a performance issue where <code>ResizeObserver</code> callbacks became increasingly sluggish over time. (172718139)</li>
<li>Fixed a performance issue where <code>IntersectionObserver</code> became sluggish over time when observing many elements due to O(n²) iteration. (172727210)</li>
<li>Fixed an issue where <code>navigation.currentEntry.id</code> did not change in private browsing windows after calling <code>history.replaceState()</code>. (172897962)</li>
<li>Fixed an issue where <code>document.open()</code> incorrectly aliased the caller&#8217;s security origin. (173369038)</li>
<li>Fixed an issue where <code>history.replaceState()</code> on a traversed history entry incorrectly changed <code>navigation.currentEntry.key</code> to a new UUID instead of preserving the original key. (173388766)</li>
<li>Fixed an issue where <code>Object.prototype</code> could not be serialized by <code>structuredClone()</code>. (173728983)</li>
<li>Fixed an issue where backslashes were not handled correctly in non-special URLs. (173757759)</li>
<li>Fixed a URL parsing bug in the special relative or authority state. (173772241)</li>
<li>Fixed an issue where event listener <code>once</code> and <code>passive</code> flags were not preserved when copying listeners between elements. (173834642)</li>
<li>Fixed: Preserved existing listener options (such as passive defaulting) when overwriting event handler attributes. (173842822)</li>
<li>Fixed the Credential Management API to properly define which credential types are allowed in the same <code>get()</code> request. (173918198)</li>
<li>Fixed an issue where <code>event.target</code> was not set after dispatching an event in a shadow tree with no listeners. (174136382)</li>
<li>Fixed an issue where <code>navigator.credentials.create()</code> and <code>navigator.credentials.get()</code> discarded the <code>AbortSignal</code> reason and always rejected with a generic <code>AbortError</code>. (174220589)</li>
<li>Fixed <code>Range.extractContents()</code> to not extract out-of-bounds nodes when the end container is removed during extraction. (174307275)</li>
<li>Fixed Digital Credentials to surface <code>OperationError</code> for platform-cancellation and unknown errors instead of <code>AbortError</code> or <code>UnknownError</code>. (174308268)</li>
<li>Fixed <code>document.createEvent()</code> to throw an exception for <code>"MutationEvents"</code>, <code>"MutationEvent"</code>, <code>"PopStateEvent"</code>, and <code>"WheelEvent"</code>, aligning with other browser engines. (174339775)</li>
<li>Fixed <code>ParentNode.append()</code> to correctly de-duplicate nodes when the same node is passed multiple times. (174365465)</li>
<li>Fixed an issue where <code>MutationObserver</code> delivered <code>childList</code> records in the wrong order when script ran during node insertion. (174368989)</li>
<li>Fixed an issue where setting a <code>URL</code> object&#8217;s <code>port</code> property to whitespace behaved incorrectly. (174484035)</li>
<li>Fixed a missing <code>return</code> in the Navigation API&#8217;s <code>performTraversal</code> that caused incorrect behavior when traversing to an unknown key. (174513305)</li>
<li>Fixed <code>Blob.slice()</code> to correctly clamp fractional <code>start</code> and <code>end</code> parameters using round-half-to-even rounding per the File API specification, which may change how edge-case fractional values like <code>0.5</code> are rounded. (174555334)</li>
<li>Fixed <code>postMessage()</code> to validate transferable object states after serialization, aligning with the HTML specification. (174558047)</li>
<li>Fixed <code>structuredClone()</code> and <code>window.postMessage()</code> to correctly throw a <code>DataCloneError</code> when serializing a <code>SharedArrayBuffer</code> outside of cross-origin isolated contexts. (174562553)</li>
<li>Fixed an issue where calling <code>Element.blur()</code> on an <code>&lt;iframe&gt;</code> did not reset <code>document.activeElement</code> to <code>&lt;body&gt;</code>. (174591529)</li>
<li>Fixed <code>document.styleSheets</code> to be accessible on documents created by <code>DOMParser</code>. (174625774)</li>
<li>Fixed <code>innerText</code> getter to correctly handle trailing newlines and blank lines for <code>&lt;p&gt;</code> elements and headings. (174642704)</li>
<li>Fixed <code>innerText</code> whitespace handling at inline-block boundaries. (174713114)</li>
<li>Fixed <code>XMLSerializer</code> namespace handling to correctly serialize elements with namespace prefixes. (174726401)</li>
<li>Fixed the <code>innerText</code> getter to preserve newlines for elements with <code>white-space: pre-line</code>. (174727341)</li>
<li>Fixed service worker registrations to be unregistered when the main script is missing. (174755909)</li>
<li>Fixed <code>innerText</code> handling of replaced elements at block boundaries. (174816319)</li>
<li>Fixed <code>EventSource</code> to be closed when <code>window.stop()</code> is called. (174830925)</li>
<li>Fixed service worker registrations to be unregistered when failing to retrieve stored imported scripts. (174833692)</li>
<li>Fixed calling <code>preventDefault()</code> during a <code>pointerdown</code> event to correctly suppress <code>mousedown</code> and <code>mouseup</code> events on iOS. (174864309)</li>
<li>Fixed <code>innerText</code> to not fall back to <code>textContent</code> for elements with <code>display: contents</code>. (174883499)</li>
<li>Fixed Digital Credentials rejecting with the wrong error code and synchronously; rejections are now queued as a task with the correct error. (174895437)</li>
<li>Fixed <code>innerText</code> to preserve the contents of <code>&lt;option&gt;</code> elements inside <code>&lt;select&gt;</code>. (175006854)</li>
<li>Fixed <code>Element.innerText</code> to collect option text when called directly on a <code>&lt;select&gt;</code> element. (175156630)</li>
<li>Fixed worker scripts to always be decoded as UTF-8, as per the specification. (175327455)</li>
<li>Fixed an issue where an <code>Event</code> object&#8217;s <code>target</code> property could lose its JavaScript wrapper due to premature garbage collection. (175439759)</li>
<li>Fixed an issue where ancestors of <code>TreeWalker.currentNode</code> could be prematurely garbage collected. (175442228)</li>
<li>Fixed <code>FileSystemDirectoryHandle.resolve()</code> to return the correct path array for child entries. (175645387)</li>
<li>Fixed <code>PerformanceNavigationTiming.domInteractive</code> and <code>domContentLoadedEventEnd</code> incorrectly returning 0 instead of the correct timestamps. (175739835)</li>
<li>Fixed <code>FileSystemDirectoryHandle.removeEntry()</code> to correctly remove entries. (175745157)</li>
<li>Fixed <code>CryptoKey</code> to correctly remain associated with its secure context. (176157712)</li>
<li>Fixed: Improved cross-origin isolation enforcement for workers. (176175488)</li>
<li>Fixed <code>SharedArrayBuffer</code> cloning and agent cluster ID assignment. (176465817)</li>
<li>Fixed missing custom element callbacks for the <code>role</code> attribute. (176713992)</li>
<li>Fixed incorrect URL parser invocation on the <code>Notification</code> object. (176762955)</li>
<li>Fixed <code>requestAnimationFrame()</code> not providing sub-millisecond timestamp precision in cross-origin isolated contexts. (176967366)</li>
<li>Fixed <code>IntersectionObserverEntry.boundingClientRect</code> to honor CSS zoom aware <code>getBoundingClientRect</code>. (177250323)</li>
<li>Fixed <code>IntersectionObserver</code> to report correct bounds for SVG element targets. (177260411)</li>
<li>Fixed Web Locks API to remove the <code>AbortSignal</code> abort algorithm after a lock request settles. (178589067)</li>
<li>Fixed an issue where the URL Pattern tokenizer emitted a spurious zero-length <code>Regexp</code> token for empty regexp groups. (179452346)</li>
<li>Fixed <code>KeyboardEvent.getModifierState("AltGraph")</code> and <code>MouseEvent.getModifierState("AltGraph")</code> always returning <code>false</code>. (180597374)</li>
<li>Fixed <code>Credential.type</code> returning <code>"digital-credential"</code> instead of <code>"digital"</code> for digital credentials. (180618646)</li>
<li>Fixed aborting <code>navigator.credentials.get()</code> leaving the digital-credentials document picker stuck on screen. (180812397)</li>
<li>Fixed <code>FileReader.readAsText()</code> ignoring the <code>charset</code> parameter of the <code>Blob</code>&#8216;s MIME type. (180890703)</li>
<li>Fixed <code>DOMMatrix</code> and <code>IntersectionObserver</code> correctly enforcing absolute-length unit requirements when parsing values. (181453666)</li>
</ul>
<h3><a name="web-audio"></a>Web Audio</h3>
<ul>
<li>Fixed Web Audio <code>PannerNode</code> orientation-only changes not updating the directional cone gain. (181413407)</li>
</ul>
<h3><a name="web-extensions"></a>Web Extensions</h3>
<ul>
<li>Fixed cross-origin <code>XMLHttpRequest</code> from a Safari Web Extension to no longer trigger an additional permissions request. (154866064)</li>
<li>Fixed <code>browser.i18n.getMessage()</code> to correctly substitute named placeholders when they appear adjacent to non-space characters. (169146196)</li>
<li>Fixed <code>browser.i18n.getMessage()</code> to correctly substitute two adjacent named placeholders. (175315700)</li>
<li>Fixed an issue where web extension service worker registration database files accumulated on each Safari launch, causing performance degradation. (175484888)</li>
<li>Fixed loading Web Extensions breaking Cloudflare bot challenge pages. (176618014)</li>
</ul>
<h3><a name="web-inspector"></a>Web Inspector</h3>
<ul>
<li>Fixed hovering over a node in a preview for a collection to highlight the node in the inspected page. (20341722)</li>
<li>Fixed showing ES2022 class private fields, methods, and accessors when inspecting object instances in the Console. (88527162)</li>
<li>Fixed an issue where CSS properties added to new rules were not applied and were marked as invalid. (103548968)</li>
<li>Fixed an issue in the Network panel where the Request / Response menu did not remember the user&#8217;s previously selected value. (108231795)</li>
<li>Fixed a JavaScript breakpoint on a line containing only a semicolon not being triggered. (126707973)</li>
<li>Fixed the Console REPL to allow redefinition of variables declared with <code>let</code> and <code>const</code>. (143140659)</li>
<li>Fixed the Timeline exporting and importing the wrong timestamp for <code>performance.mark()</code> records. (145226764)</li>
<li>Fixed editing inline <code>style</code> attribute values in the Elements panel resulting in truncated or malformed content. (149523483)</li>
<li>Fixed local response overrides mapped to a file being interpreted as Latin-1 (ISO-8859-1) instead of their actual encoding. (149847746)</li>
<li>Fixed the Media Logging setting not persisting across page loads. (154766890)</li>
<li>Fixed symbolic breakpoints to work with native constructors such as <code>Array</code>, <code>Date</code>, <code>EventTarget</code>, and <code>Worker</code>. (157178256)</li>
<li>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. (157787230)</li>
<li>Fixed the Network tab filtering by resource type not working after clearing a filter that had no matches. (161570940)</li>
<li>Fixed an issue where CSS rules added via the &#8220;Add New Rule&#8221; button in the Styles panel were intermittently not applied or would vanish after entering a property. (164971557)</li>
<li>Fixed the Status column in the Network tab to be visible by default. (167348733)</li>
<li>Fixed missing stack traces for MIME type errors when importing modules. (169396940)</li>
<li>Fixed an issue where tree outlines in Web Inspector would intermittently show blank content while scrolling when a filter was active. (169502061)</li>
<li>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. (169732727)</li>
<li>Fixed an issue in the Timelines tab where rows containing object previews were sometimes not visible in the heap snapshot data grid. (170164522)</li>
<li>Fixed context menu items in the Elements tab to only display relevant options when multiple DOM nodes are selected. (170307979)</li>
<li>Fixed an issue where previewing resources in the Network tab displayed an error upon navigating away and Preserve Log was enabled. (171216835)</li>
<li>Fixed an issue where selected DOM node keys in a Map in the Scope Chain sidebar had unreadable white text on a light background. (171840122)</li>
<li>Fixed the Safari Develop menu and WebDriver to launch Device Hub instead of Simulator when available in Xcode. (174276041)</li>
<li>Fixed the Layers 3D view to correctly map textures to composited bounds and use proper selection highlighting instead of tinting textures. (174355052)</li>
<li>Fixed the Layers 3D view to re-snapshot preserved layers after a repaint instead of displaying stale textures. (174358757)</li>
<li>Fixed an issue where the WebAssembly debugger had no source bytes for modules compiled via <code>WebAssembly.instantiateStreaming</code>, preventing source-level debugging in LLDB. (174362152)</li>
<li>Fixed the WebAssembly debugger to generate human-readable module names from the WebAssembly name section and fetch URL, replacing bare address-based fallback names in LLDB&#8217;s image list. (174465437)</li>
<li>Fixed an issue where all folder tree elements were expanded after filtering for a resource in the Sources panel. (175009135)</li>
<li>Fixed an erroneous &#8220;There are unread messages that have been filtered&#8221; banner appearing in the Console when <code>console.groupCollapsed()</code> is used. (175279759)</li>
<li>Fixed an issue in the Storage tab where filtering by storage type did not reveal the popup with options. (175444192)</li>
<li>Fixed Timeline recordings showing unrelated events incorrectly nested inside longer events. (176309164)</li>
<li>Fixed clearing the Console tab search field to dismiss the Clear Filters button. (176388155)</li>
<li>Fixed Web Inspector toolbar buttons rendering at incorrect sizes. (176508343)</li>
<li>Fixed the Event Listeners sidebar to populate for cross-origin iframe nodes. (177011541)</li>
<li>Fixed properties added to an element&#8217;s Style Attribute sometimes disappearing momentarily. (178053421)</li>
<li>Fixed the Accessibility sidebar being empty for nodes inside cross-origin iframes. (178562336)</li>
<li>Fixed inline style invalidation to batch <code>DOM.getAttributes</code> commands per tick in cross-origin iframes instead of issuing one command per node. (178830496)</li>
<li>Fixed DOM Storage read and write commands to resolve against the frame&#8217;s own origin in cross-origin iframes. (179249711)</li>
<li>Fixed a moved breakpoint reverting to its original location after closing and reopening Web Inspector. (180083858)</li>
<li>Fixed showing the formatted parameters string for prototype objects such as <code>Map.prototype</code>. (180298712)</li>
<li>Fixed missing formatted parameter strings for object shorthand methods and arrow functions. (180466459)</li>
<li>Fixed an unnecessary colon appearing in front of non-class function properties. (180476445)</li>
<li>Fixed a self-canceling ternary that produced an incorrect cross-axis direction in the flex overlay. (181198803)</li>
<li>Fixed the color picker force-converting picked colors to Display P3. (181201503)</li>
<li>Fixed <code>Page.searchInResources</code> silently omitting cache-backed resources from search results. (181202027)</li>
<li>Fixed duplicate invalid CSS declarations both incorrectly displaying as Active in the Styles sidebar. (181203080)</li>
<li>Fixed adopted constructable stylesheets being misclassified as User Agent stylesheets in cross-origin iframes. (181204768)</li>
<li>Fixed an unsigned underflow that caused the DOM agent to spuriously report power-efficient playback. (181205602)</li>
<li>Fixed <code>Network.setExtraHTTPHeaders</code> to replace previously set headers instead of accumulating them. (181282814)</li>
<li>Fixed zero-width joiners and other hidden Unicode characters not being displayed in text nodes. (182968570)</li>
</ul>
<h3><a name="webassembly"></a>WebAssembly</h3>
<ul>
<li>Fixed <code>WebAssembly.Suspending</code> and <code>WebAssembly.SuspendError</code> to be data properties instead of getter functions, aligning with other WebAssembly attributes like <code>WebAssembly.Module</code>. (170155726)</li>
<li>Fixed incorrect <code>IntegerOverflow</code> exceptions thrown by <code>i32.rem_s</code>, <code>i64.rem_s</code>, <code>i32.div_u</code>, <code>i64.div_u</code>, <code>i32.rem_u</code>, and <code>i64.rem_u</code> when both operands are constants. (175122462)</li>
<li>Fixed a regression where <code>RegisterSet::normalizeWidths()</code> lost vector-width information, causing v128 argument corruption in WebAssembly SIMD thunks. (176035764)</li>
</ul>
<h3><a name="webdriver"></a>WebDriver</h3>
<ul>
<li>Fixed an issue where the WebDriver full page screenshot was clipped to the viewport dimensions instead of the full page. (179840186)</li>
</ul>
<h3><a name="webgl"></a>WebGL</h3>
<ul>
<li>Fixed a regression where a WebGL canvas was filled with opaque content that hid stacked canvases beneath it. (175352260)</li>
<li>Fixed <code>compressedTexImage</code> not validating whether the compressed texture format extension has been enabled. (175652171)</li>
<li>Fixed some <code>texImage</code> functions reporting errors with incorrect function names. (175652807)</li>
<li>Fixed some WebGL context state properties not being correctly reset on context loss. (176190808)</li>
</ul>
<h3><a name="webgpu"></a>WebGPU</h3>
<ul>
<li>Fixed <code>GPUDevice.onuncapturederror</code> event handler attribute not working. (149577124)</li>
<li>Fixed: Restored <code>maxStorageBuffersInFragmentStage</code> and related WebGPU limits. (160800947)</li>
<li>Fixed rendering failing when using direct <code>GPUTexture</code> objects instead of <code>GPUTextureView</code> with multisampled resolve targets in render passes. (175452924)</li>
<li>Fixed a WGSL shader validation failure in binary arithmetic expressions. (176473479)</li>
<li>Fixed WGSL parser handling of identifiers per the latest specification. (177008615)</li>
<li>Fixed WGSL validation of binary expressions involving short-circuit and/or operators. (177012957)</li>
</ul>
<h3><a name="webrtc"></a>WebRTC</h3>
<ul>
<li>Fixed an issue where I420 BT709 <code>VideoFrame</code> was encoded in an incorrect color space when encoding to VP9. (169425608)</li>
<li>Fixed an issue where <code>RTCPeerConnection.addIceCandidate()</code> did not reject when the connection was already closed. (170470988)</li>
<li>Fixed outgoing video feeds freezing when the Safari window is obscured by another window while a virtual background is active. (170720729)</li>
<li>Fixed an issue where <code>RTCDataChannel</code> did not check the SCTP buffered amount synchronously. (172386678)</li>
<li>Fixed an issue where <code>MediaStreamTrack</code> could have incorrect settings if the source settings changed while the track was being transferred. (172657570)</li>
<li>Fixed an issue where a remote WebRTC track was not unmuted when the first packet was received. (172904930)</li>
<li>Fixed validation of RTC send encodings to better align with the specification. (172997814)</li>
<li>Fixed an issue where <code>RTCRtpSender.setParameters</code> did not clear parameters that were unset by the web application. (173678165)</li>
<li>Fixed WebRTC VP9 encoders to correctly propagate frame colorspace information. (174008548)</li>
<li>Fixed WebRTC media capabilities to report power-efficient AV1 decoding when supported. (174686183)</li>
<li>Fixed a regression where <code>RTCPeerConnection</code> with <code>iceTransportPolicy: "relay"</code> failed to gather ICE candidates. (174794660)</li>
<li>Fixed <code>RTCInboundRtpStreamStats.trackIdentifier</code> to match <code>MediaStreamTrack.id</code>. (174938984)</li>
<li>Fixed audio issues when joining Cisco Meeting Server meetings using Safari. (175260977)</li>
<li>Fixed screen sharing via <code>getDisplayMedia()</code> starting at extremely low quality and taking up to 30 seconds to become legible for remote participants. (175425085)</li>
<li>Fixed the WebProcess <code>AudioSession</code> to remain active while microphone capture is live. (180505014)</li>
<li>Fixed <code>OverconstrainedError</code> to inherit from <code>DOMException</code> and expose a <code>code</code> attribute per the Media Capture spec. (180728516)</li>
<li>Fixed the <code>configurationchange</code> event being dropped when a source-side change occurred while a <code>MediaStreamTrack</code> was muted; the event is now deferred until unmute. (180728609)</li>
</ul>
<h2><a name="updating-to-safari-27"></a>Updating to Safari 27</h2>
<p>Safari 27.0 comes automatically with <a href="https://www.apple.com/os/macos/">macOS 27 Golden Gate</a>, <a href="https://www.apple.com/os/ios/">iOS 27</a>, <a href="https://www.apple.com/os/ipados/">iPadOS27</a> and <a href="https://www.apple.com/os/visionos/">visionOS 27</a>.  Plus, you can update to Safari 27.0 on macOS 26 Tahoe and macOS 15 Sequoia, separate from macOS.</p>
<h2><a name="feedback"></a>Feedback</h2>
<p>We love hearing from you. To share your thoughts, find our web evangelists online: Jen Simmons on <a href="https://bsky.app/profile/jensimmons.bsky.social">Bluesky</a> / <a href="https://front-end.social/@jensimmons">Mastodon</a>, Saron Yitbarek on <a href="https://bsky.app/profile/saron.bsky.social">Bluesky</a>, and Jon Davis on <a href="https://bsky.app/profile/jondavis.bsky.social">Bluesky</a> / <a href="https://mastodon.social/@jondavis">Mastodon</a>. You can follow WebKit <a href="https://www.linkedin.com/in/apple-webkit/">on LinkedIn</a>. If you run into any issues, we welcome your <a href="https://feedbackassistant.apple.com/">feedback</a> on Safari UI (learn more about <a href="https://developer.apple.com/bug-reporting/">filing Feedback</a>), or your <a href="https://bugs.webkit.org/">WebKit bug report</a> about web technologies or Web Inspector. If you run into a website that isn’t working as expected, please file a report at <a href="https://webcompat.com/">webcompat.com</a>. Filing issues really does make a difference.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Release Notes for Safari Technology Preview 252</title>
		<link>https://webkit.org/blog/18304/release-notes-for-safari-technology-preview-252/</link>
		
		<dc:creator/>
		<pubDate>Fri, 11 Sep 2026 17:02:22 +0000</pubDate>
				<category><![CDATA[Safari Technology Preview]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18304</guid>

					<description><![CDATA[Safari Technology Preview Release 252 is now available for download for macOS Golden Gate and macOS Tahoe.]]></description>
										<content:encoded><![CDATA[<p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 252 is now <a href="https://developer.apple.com/safari/resources/">available for download</a> 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.</p>
<p>This release includes WebKit changes between: <a href="https://github.com/WebKit/WebKit/compare/3b7282ac21bbb0cbe93af6bf69cca280968fa183...0839f9342ed5056785ce58ed9c5a0f92b323f625">319252@main&#8230;320112@main</a>.</p>
<h3>Accessibility</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the accessible name of a <code>display: contents</code> element incorrectly including text from its siblings. (<a href="https://commits.webkit.org/319287@main">319287@main</a>)  (185108892)</li>
<li>Fixed list marker text being included in accessible names and values that requested text without list markers. (<a href="https://commits.webkit.org/319615@main">319615@main</a>)  (185422271)</li>
</ul>
<h3>Animations</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an unresolved current time for a progress-based timeline being treated as a progress timeline boundary. (<a href="https://commits.webkit.org/319442@main">319442@main</a>)  (183902668)</li>
<li>Fixed a newly encountered animation frame rate being aligned with the lowest compatible frame rate instead of the highest. (<a href="https://commits.webkit.org/319362@main">319362@main</a>)  (185152473)</li>
<li>Fixed an animation of <code>width</code> or <code>height</code> being incorrectly accelerated when only some keyframes have a size-dependent <code>transform</code>. (<a href="https://commits.webkit.org/319363@main">319363@main</a>)  (185153675)</li>
<li>Fixed view timeline range boundaries discarding subpixel adjustments for sticky positioned elements. (<a href="https://commits.webkit.org/319369@main">319369@main</a>)  (185162728)</li>
<li>Fixed keyframes using <code>revert-layer</code> or <code>revert-rule</code> no longer being recomputed after a <code>KeyframeEffect</code> is copied. (<a href="https://commits.webkit.org/319368@main">319368@main</a>)  (185164643)</li>
<li>Fixed <code>scroll-timeline-name</code> and <code>view-timeline-name</code> to be loosely matched across shadow tree boundaries. (<a href="https://commits.webkit.org/320040@main">320040@main</a>)  (185206745)</li>
</ul>
<h3>CSS</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>named-feature()</code> function in <code>@supports</code> conditions. (<a href="https://commits.webkit.org/319412@main">319412@main</a>)  (183688843)</li>
<li>Added support for <code>CSSConditionRule.supports</code>. (<a href="https://commits.webkit.org/319302@main">319302@main</a>)  (184943650)</li>
<li>Added support for the unprefixed <code>user-select</code> CSS property. (<a href="https://commits.webkit.org/319562@main">319562@main</a>)  (184964807)</li>
<li>Added support for <code>CSSMediaRule.matches</code>. (<a href="https://commits.webkit.org/319988@main">319988@main</a>)  (185154835)</li>
<li>Added support for percentage values in <code>text-decoration-inset</code>. (<a href="https://commits.webkit.org/320052@main">320052@main</a>)  (185850399)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>line-clamp</code> not clamping content inside an inline block. (<a href="https://commits.webkit.org/319848@main">319848@main</a>)  (168534323)</li>
<li>Fixed an unexpected ellipsis appearing when <code>line-clamp</code> is applied to content with a block inside an inline box. (<a href="https://commits.webkit.org/319392@main">319392@main</a>)  (182123153)</li>
<li>Fixed the computed value of <code>display</code> for <code>-webkit-box</code> and <code>-webkit-inline-box</code> when combined with <code>-webkit-box-orient: vertical</code> and the <code>continue</code> property. (<a href="https://commits.webkit.org/319370@main">319370@main</a>)  (182288734)</li>
<li>Fixed <code>random()</code> and <code>random-item()</code> with an <code>auto</code> caching key in the same property value producing the same random value. (<a href="https://commits.webkit.org/319463@main">319463@main</a>)  (182846761)</li>
<li>Fixed margins trimmed by <code>margin-trim</code> being reflected in computed style. (<a href="https://commits.webkit.org/319612@main">319612@main</a>)  (184215336)</li>
<li>Fixed subgrid columns ignoring the parent grid&#8217;s content distribution from <code>justify-content</code>. (<a href="https://commits.webkit.org/319353@main">319353@main</a>)  (184542148)</li>
<li>Fixed the resolution of font-relative lengths when a minimum font size is in effect. (<a href="https://commits.webkit.org/319340@main">319340@main</a>)  (184727481)</li>
<li>Fixed an issue where grid item margins were not included in the intrinsic size contributions of a grid container. (<a href="https://commits.webkit.org/319836@main">319836@main</a>)  (184789473)</li>
<li>Fixed an issue where extra space was not distributed beyond growth limits when sizing grid tracks. (<a href="https://commits.webkit.org/319837@main">319837@main</a>)  (184933769)</li>
<li>Fixed <code>::selection</code> failing to repaint when its style changes. (<a href="https://commits.webkit.org/319662@main">319662@main</a>)  (184994906)</li>
<li>Fixed invalidation and serialization of properties that use <code>attr()</code> with a number or percentage value. (<a href="https://commits.webkit.org/319994@main">319994@main</a>)  (185088893)</li>
<li>Fixed <code>anchor(right)</code> not resolving to an inline anchor&#8217;s right edge in <code>vertical-rl</code> writing mode. (<a href="https://commits.webkit.org/319286@main">319286@main</a>)  (185108663)</li>
<li>Fixed <code>px</code> values inside <code>calc()</code> expressions being serialized incorrectly in computed style when <code>zoom</code> is applied. (<a href="https://commits.webkit.org/319320@main">319320@main</a>)  (185156231)</li>
<li>Fixed <code>text-overflow: ellipsis</code> not being shown on content that is not clamped when using <code>line-clamp</code>. (<a href="https://commits.webkit.org/319597@main">319597@main</a>)  (185348784)</li>
<li>Fixed <code>offset-path</code> not respecting <code>corner-shape</code> when using a <code>&lt;coord-box&gt;</code> reference box. (<a href="https://commits.webkit.org/319655@main">319655@main</a>)  (185447602)</li>
<li>Fixed <code>corner-shape</code> drawing <code>square</code> and <code>notch</code> corners as <code>round</code> and <code>scoop</code> on outlines and <code>box-shadow</code> spread. (<a href="https://commits.webkit.org/319606@main">319606@main</a>)  (185452130)</li>
<li>Fixed font load status changes being reported with an incorrect previous state when script runs in response to a <code>FontFace</code> <code>loaded</code> promise. (<a href="https://commits.webkit.org/319575@main">319575@main</a>)  (185462848)</li>
<li>Fixed incorrect style sharing between elements when a computed value depends on the <code>lh</code> unit. (<a href="https://commits.webkit.org/319596@main">319596@main</a>)  (185508307)</li>
<li>Fixed interpolation of <code>corner-shape</code> for outset curves to match the updated specification algorithm. (<a href="https://commits.webkit.org/319661@main">319661@main</a>)  (185519894)</li>
<li>Fixed: Removed the <code>inline</code>, <code>inline-start</code>, and <code>inline-end</code> values from <code>margin-trim</code>, which now accepts <code>none | block | [ block-start || block-end ]</code>. (<a href="https://commits.webkit.org/319622@main">319622@main</a>)  (185527437)</li>
<li>Fixed: Changed <code>calc()</code> simplification so that <code>clamp(none, a, b)</code> becomes <code>max(a, b)</code> and <code>clamp(a, b, none)</code> becomes <code>min(a, b)</code>. (<a href="https://commits.webkit.org/319614@main">319614@main</a>)  (185531467)</li>
<li>Fixed <code>align-content</code> moving a floated child twice in block containers. (<a href="https://commits.webkit.org/319665@main">319665@main</a>)  (185536955)</li>
<li>Fixed grid content not contributing to the scrollable overflow area. (<a href="https://commits.webkit.org/319929@main">319929@main</a>)  (185923265)</li>
<li>Fixed <code>background-size: contain</code>, <code>background-size: cover</code>, and automatic sizing ignoring SVG images that have one intrinsic dimension and no aspect ratio. (<a href="https://commits.webkit.org/319972@main">319972@main</a>)  (185970333)</li>
<li>Fixed arguments to registered custom functions so that they are evaluated in the calling context. (<a href="https://commits.webkit.org/320022@main">320022@main</a>)  (185975255)</li>
</ul>
<h3>CSS Grid Lanes</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed: Renamed the <code>flow-tolerance</code> property to <code>fit-tolerance</code>. (<a href="https://commits.webkit.org/319795@main">319795@main</a>)  (185125327)</li>
</ul>
<h3>Canvas</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed shadows rendering with a stale, incorrect transform in some cases. (<a href="https://commits.webkit.org/319534@main">319534@main</a>)  (185405205)</li>
</ul>
<h3>Editing</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed pasted text being cut off in some web-based code editors. (<a href="https://commits.webkit.org/319350@main">319350@main</a>)  (184653264)</li>
<li>Fixed typing a space in editable content inside a <code>&lt;summary&gt;</code> or <code>&lt;button&gt;</code> element also activating that element. (<a href="https://commits.webkit.org/319628@main">319628@main</a>)  (185479319)</li>
</ul>
<h3>Forms</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed: Updated the default styling for <code>appearance: base-select</code> to center-align items, use <code>lh</code> units for padding, and reset all font properties on ::picker-icon and ::checkmark. (<a href="https://commits.webkit.org/319816@main">319816@main</a>)  (184843832)</li>
<li>Fixed spin buttons for <code>&lt;input type="number"&gt;</code> not repainting when the window&#8217;s active state changes. (<a href="https://commits.webkit.org/319683@main">319683@main</a>)  (185625389)</li>
</ul>
<h3>HTML</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the dialog focusing steps not moving focus after calling <code>show()</code> because the <code>&lt;dialog&gt;</code> was still treated as unrendered. (<a href="https://commits.webkit.org/319387@main">319387@main</a>)  (185156091)</li>
<li>Fixed <code>dialog.close()</code> restoring focus even when focus was not inside the dialog and the dialog was not modal. (<a href="https://commits.webkit.org/319640@main">319640@main</a>)  (185549474)</li>
<li>Fixed <code>documentElement.focus()</code> to move focus to the viewport instead of doing nothing. (<a href="https://commits.webkit.org/319730@main">319730@main</a>)  (185567540)</li>
<li>Fixed script elements parsed from XML by <code>DOMParser</code> executing after being cloned. (<a href="https://commits.webkit.org/319922@main">319922@main</a>)  (185943138)</li>
</ul>
<h3>Images</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>ImageDecoder</code> not applying an image&#8217;s EXIF orientation to the decoded frames. (<a href="https://commits.webkit.org/319527@main">319527@main</a>)  (184850407)</li>
<li>Fixed <code>ImageDecoder</code> producing <code>VideoFrame</code> objects with a duration of zero. (<a href="https://commits.webkit.org/319526@main">319526@main</a>)  (185257570)</li>
</ul>
<h3>JavaScript</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>worker.terminate()</code> and page reloads not terminating a worker that is blocked in <code>Atomics.wait</code> or a WebAssembly <code>atomic.wait</code>. (<a href="https://commits.webkit.org/319508@main">319508@main</a>)  (147482360)</li>
<li>Fixed <code>Promise.try()</code> to resolve its result with <code>PromiseResolve</code>, so a promise returned by the callback is no longer wrapped in an extra promise. (<a href="https://commits.webkit.org/319276@main">319276@main</a>)  (185064567)</li>
<li>Fixed regular expression backreferences not restoring the input position when reading a surrogate pair fails. (<a href="https://commits.webkit.org/319560@main">319560@main</a>)  (185065533)</li>
<li>Fixed <code>Uint8Array.prototype.setFromBase64()</code> so that nothing is read and no error is thrown when the target array has zero length. (<a href="https://commits.webkit.org/319275@main">319275@main</a>)  (185073630)</li>
<li>Fixed a regular expression using the <code>s</code> flag matching from the start of the string instead of from <code>lastIndex</code>. (<a href="https://commits.webkit.org/320086@main">320086@main</a>)  (185814135)</li>
<li>Fixed the <code>Referer</code> header sent for descendant and dynamically imported module script fetches. (<a href="https://commits.webkit.org/319921@main">319921@main</a>)  (185943042)</li>
<li>Fixed <code>String.prototype.replace</code> with a unicode regular expression splitting a surrogate pair after an empty match. (<a href="https://commits.webkit.org/320099@main">320099@main</a>)  (186143674)</li>
</ul>
<h3>Media</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed videos immediately exiting fullscreen back to inline after an earlier video had been played in fullscreen. (<a href="https://commits.webkit.org/320084@main">320084@main</a>)  (174807377)</li>
<li>Fixed an issue where interacting with the inline media controls could dismiss a site&#8217;s custom video presentation. (<a href="https://commits.webkit.org/319741@main">319741@main</a>)  (181244652)</li>
<li>Fixed video failing with <code>MEDIA_ERR_ABORTED</code> and restarting from the beginning after restoring a page from the back/forward cache. (<a href="https://commits.webkit.org/319472@main">319472@main</a>)  (183119720)</li>
<li>Fixed <code>ManagedMediaSource</code> not firing the <code>startstreaming</code> event when seeking outside the buffered range. (<a href="https://commits.webkit.org/319330@main">319330@main</a>)  (183790572)</li>
<li>Fixed an issue where a video could begin playing ahead of another video that requested playback earlier while audio session activation was still pending. (<a href="https://commits.webkit.org/319455@main">319455@main</a>)  (185043324)</li>
<li>Fixed an unnecessary <code>ended</code> event being fired when seeking to the end of an <code>HTMLMediaElement</code> backed by a <code>MediaSource</code>. (<a href="https://commits.webkit.org/319847@main">319847@main</a>)  (185145277)</li>
<li>Fixed an issue where audio could continue playing for several seconds after closing a tab. (<a href="https://commits.webkit.org/319759@main">319759@main</a>, <a href="https://commits.webkit.org/319842@main">319842@main</a>)  (185505597)</li>
</ul>
<h3>Networking</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed cookies being stored as session cookies when their <code>Expires</code> date uses the month-before-day format produced by <code>Date.prototype.toString()</code>. (<a href="https://commits.webkit.org/320016@main">320016@main</a>)  (185840799)</li>
</ul>
<h3>Performance</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed hidden page throttling heuristics not being applied to newly created pages. (<a href="https://commits.webkit.org/319630@main">319630@main</a>)  (185461584)</li>
</ul>
<h3>Rendering</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed characters overlapping adjacent text when a space glyph&#8217;s base advance is substituted. (<a href="https://commits.webkit.org/319556@main">319556@main</a>)  (180227130)</li>
<li>Fixed incorrect element dimensions being reported for content inside an <code>iframe</code> whose owner element generates no box. (<a href="https://commits.webkit.org/319910@main">319910@main</a>)  (181639379)</li>
<li>Fixed content overlapping when an element gains a scrollbar during layout. (<a href="https://commits.webkit.org/320066@main">320066@main</a>)  (183465635)</li>
<li>Fixed a list marker overlapping the list item content when the marker text is right-to-left. (<a href="https://commits.webkit.org/319314@main">319314@main</a>)  (185048387)</li>
<li>Fixed an outside list marker keeping a line of its own when a block is appended to an empty list item. (<a href="https://commits.webkit.org/319289@main">319289@main</a>)  (185109123)</li>
<li>Fixed a block-level box on a line being handed its own float as an intruding float. (<a href="https://commits.webkit.org/319290@main">319290@main</a>)  (185109160)</li>
<li>Fixed list markers not updating when the list item&#8217;s font changes dynamically. (<a href="https://commits.webkit.org/319476@main">319476@main</a>)  (185330733)</li>
<li>Fixed an issue where adjoining margins did not collapse when a container&#8217;s first child was a float or an out-of-flow box. (<a href="https://commits.webkit.org/319696@main">319696@main</a>)  (185591842)</li>
<li>Fixed an issue where margins did not collapse after a self-collapsing block-level box on a line. (<a href="https://commits.webkit.org/319697@main">319697@main</a>)  (185598333)</li>
<li>Fixed an issue where a list marker was painted on top of the list item&#8217;s content instead of behind it. (<a href="https://commits.webkit.org/319818@main">319818@main</a>)  (185741211)</li>
<li>Fixed an issue where a block-level box on a line was left behind when a column break moved the line. (<a href="https://commits.webkit.org/319821@main">319821@main</a>)  (185787568)</li>
<li>Fixed <code>backdrop-filter</code> being clipped to a rounded rectangle instead of following <code>corner-shape</code>. (<a href="https://commits.webkit.org/320063@main">320063@main</a>)  (185813432)</li>
<li>Fixed an issue where a <code>max-width</code> length was not honored on an out-of-flow replaced element with an intrinsic aspect ratio. (<a href="https://commits.webkit.org/319917@main">319917@main</a>)  (185831651)</li>
<li>Fixed a relatively positioned block-level box on a line reporting scrollable overflow as wide as the entire line. (<a href="https://commits.webkit.org/319899@main">319899@main</a>)  (185835450)</li>
<li>Fixed an issue where an orthogonal block-level box inside an inline box made its container as wide as the box instead of as wide as its content. (<a href="https://commits.webkit.org/319897@main">319897@main</a>)  (185890940)</li>
<li>Fixed the position of an orthogonal block-level box inside an inline box. (<a href="https://commits.webkit.org/319895@main">319895@main</a>)  (185895981)</li>
<li>Fixed <code>background-size: cover</code> painting nothing for an SVG image with an extreme natural aspect ratio. (<a href="https://commits.webkit.org/320008@main">320008@main</a>)  (186006463)</li>
</ul>
<h3>SVG</h3>
<h4>New Features</h4>
<ul>
<li>Added support for <code>text-overflow</code> as an SVG presentation attribute. (<a href="https://commits.webkit.org/319563@main">319563@main</a>)  (176146717)</li>
<li>Added support for SVG external resources, allowing <code>url()</code> references to SVG resources such as filters, masks, and gradients in external documents. (<a href="https://commits.webkit.org/319411@main">319411@main</a>)  (183940963)</li>
</ul>
<h4>Deprecations</h4>
<ul>
<li>Removed the <code>use-script</code>, <code>no-change</code>, and <code>reset-size</code> values from <code>dominant-baseline</code> to match SVG 2. (<a href="https://commits.webkit.org/319256@main">319256@main</a>)  (174635806)</li>
</ul>
<h3>Security</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where navigations to external URLs in subframes were not consistently blocked. (<a href="https://commits.webkit.org/319798@main">319798@main</a>)  (185801936)</li>
</ul>
<h3>Web API</h3>
<h4>New Features</h4>
<ul>
<li>Added support for a <code>stack</code> property on <code>DOMException</code>, matching other error objects. (<a href="https://commits.webkit.org/319782@main">319782@main</a>)  (185770735)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the Digital Credentials API settling the <code>navigator.credentials.get()</code> promise synchronously instead of queuing a global task as required by the specification. (<a href="https://commits.webkit.org/319421@main">319421@main</a>)  (182678875)</li>
<li>Fixed a streaming <code>fetch()</code> response body being withheld from the reader until the next network chunk arrived. (<a href="https://commits.webkit.org/319981@main">319981@main</a>)  (185883588)</li>
</ul>
<h3>Web Audio</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>AudioBufferSourceNode</code> ignoring the offset passed to <code>start()</code> when using a negative <code>playbackRate</code>. (<a href="https://commits.webkit.org/319674@main">319674@main</a>)  (184484940)</li>
<li>Fixed <code>AudioBufferSourceNode</code> to clamp out-of-range <code>loopStart</code> and <code>loopEnd</code> values. (<a href="https://commits.webkit.org/319755@main">319755@main</a>)  (185752079)</li>
<li>Fixed an issue where <code>AudioBufferSourceNode</code> rendered only silence when <code>start()</code> was called with an out-of-bounds offset and a negative <code>playbackRate</code>. (<a href="https://commits.webkit.org/319779@main">319779@main</a>)  (185769043)</li>
</ul>
<h3>Web Inspector</h3>
<h4>New Features</h4>
<ul>
<li>Added logging of the site-specific quirks active on a page to the Web Inspector console. (<a href="https://commits.webkit.org/319533@main">319533@main</a>)  (185246801)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an exception being thrown when selecting a CDATA section in the DOM tree. (<a href="https://commits.webkit.org/319252@main">319252@main</a>)  (185027124)</li>
</ul>
<h3>WebAssembly</h3>
<h4>New Features</h4>
<ul>
<li>Added support for WebAssembly <code>memory64</code> together with multiple memories. (<a href="https://commits.webkit.org/319336@main">319336@main</a>)  (185152671)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed inconsistent <code>CompileError</code> messages when compiling a WebAssembly module with more than one invalid function by always reporting the error for the lowest function index. (<a href="https://commits.webkit.org/319430@main">319430@main</a>)  (140651602)</li>
<li>Fixed a re-exported imported <code>WebAssembly.Tag</code> not being the same object as the one that was imported. (<a href="https://commits.webkit.org/319294@main">319294@main</a>)  (185121644)</li>
<li>Fixed re-exporting an imported immutable <code>WebAssembly.Global</code> so that the exports object returns the same object instead of a new wrapper. (<a href="https://commits.webkit.org/319351@main">319351@main</a>)  (185184951)</li>
<li>Fixed <code>WebAssembly.Module.imports()</code> and <code>WebAssembly.Module.exports()</code> exposing the <code>type</code> field from the unfinished JS Type Reflection proposal. (<a href="https://commits.webkit.org/319427@main">319427@main</a>)  (185281658)</li>
</ul>
<h3>WebGL</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the orientation and improved the performance of WebGL canvas contents copied into an image, such as when drawing a WebGL canvas into a 2D canvas or an <code>ImageBitmap</code>. (<a href="https://commits.webkit.org/319576@main">319576@main</a>)  (184913852)</li>
<li>Fixed <code>getAttribLocation()</code> and <code>getUniformLocation()</code> not reporting an <code>INVALID_OPERATION</code> error when querying an unlinked program with a reserved name prefix. (<a href="https://commits.webkit.org/319903@main">319903@main</a>)  (185565011)</li>
</ul>
<h3>WebGPU</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>snorm10-10-10-2</code> value of <code>GPUVertexFormat</code>. (<a href="https://commits.webkit.org/319603@main">319603@main</a>)  (185379686)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a typo in WGSL diagnostics that named the <code>sampler_comparison</code> type incorrectly. (<a href="https://commits.webkit.org/320037@main">320037@main</a>)  (186031593)</li>
</ul>
<h3>WebRTC</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where certificate fingerprints were not validated against the previously generated offer or answer when applying a local description. (<a href="https://commits.webkit.org/319822@main">319822@main</a>)  (183719203)</li>
<li>Fixed TURN server URLs containing query-string parameters such as <code>?transport=tcp</code> being rejected, which prevented relay ICE candidates from being gathered. (<a href="https://commits.webkit.org/319365@main">319365@main</a>)  (184556197)</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Submit your ideas for Interop 2027</title>
		<link>https://webkit.org/blog/18283/submit-your-ideas-for-interop-2027/</link>
		
		<dc:creator/>
		<pubDate>Thu, 03 Sep 2026 21:53:33 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18283</guid>

					<description><![CDATA[It’s that exciting time of year again when we start considering Interop proposals for next year!]]></description>
										<content:encoded><![CDATA[<p>It’s that exciting time of year again when we start considering Interop proposals for next year! We’re thrilled to invite you to help shape the future of web interoperability.</p>
<p>Interop 2027 is just around the corner, and we want your ideas to make the web platform even more awesome. Whether you’re a seasoned pro or a newcomer with fresh perspectives, we want to hear from you.</p>
<h2>Key Dates to Remember</h2>
<ul>
<li>Proposal Submission Opens: September 3, 2026</li>
<li>Submission Deadline: September 23, 2026</li>
</ul>
<p>Don’t miss this opportunity to influence the direction of web standards and browser implementations.</p>
<h2>Essential criteria</h2>
<p>There are two essential criteria that all successful Focus Area proposals will have — testability and web standards. If an idea for a needed web technology doesn’t already have a mature web standard (from the W3C, TC39, etc), then it’s too early for it to be a Focus Area for Interop. Those standards are what make it possible to create automated Web Platform Tests, and the test results are what make the <a href="https://wpt.fyi/interop-2025">Interop Dashboard</a>.</p>
<p>If you have an idea for cool new web technology that should exist, but doesn’t, then look into proposing it (or helping it along) in the appropriate web standards venue. For example, if you want a new CSS feature to exist, check out filing or commenting on an issue at the <a href="https://github.com/w3c/csswg-drafts/issues">CSS Working Group</a>. That is where new CSS gets invented, and the details of exactly how every piece should work get determined and written down.</p>
<p>If you want to propose technology that has insufficient tests or testing infrastructure — consider proposing it as an Interop Investigation. Interop Focus Areas are for web technology that can be tested and scored, while Interop Investigations are assignments the group behind the Interop Project gives themselves to encourage improvements for the future.</p>
<h2>Writing a great proposal</h2>
<p>The best submissions are typically:</p>
<ul>
<li><strong>Specific</strong>: Identify a specific interoperability issue. One feature (or narrow group of related features) per proposal. Think <code>font-size-adjust</code>, not “typography”.</li>
<li><strong>Impactful</strong>: Provide a clear description of the interoperability problem that needs addressing. Use cases from your own experience are especially helpful.</li>
<li><strong>Valuable</strong>: Explain how web developers and/or users will benefit. Why is this more valuable than other existing options? Is there evidence this is a common need (perhaps survey results)?</li>
<li><strong>Stable</strong>: Link to the stable web standard that defines the technology you want improved. (Find it on the <a href="https://developer.mozilla.org/en-US/">MDN web doc</a> for that technology. Like <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/margin-trim#specifications">here</a>.)</li>
<li><strong>Tested</strong>: Look up and link to <a href="https://wpt.fyi/results/?label=experimental&amp;label=master&amp;aligned">WPT test</a> coverage. If more tests are needed, how can they be created this fall?</li>
</ul>
<p>Read the <a href="https://github.com/web-platform-tests/interop/blob/main/proposal_guide.md">Interop Proposers Guide</a> to learn more.</p>
<p>Take the time needed to fully make your case. Why is the focus area you are proposing important? If there are hundreds of things that could be considered, why does this one stand out? How does the current state of affairs inhibit web developers? How are users affected? Is this technology something a lot of sites use? How critical is fixing this sooner rather than later? And what evidence can you provide that a lot of people share your belief that this is important?</p>
<p>Don’t assume everyone reading the proposals has full knowledge of last year’s proposals, or has had the time to follow all the details of how developers are using (or not using) every web technology out there. Make the case in your proposal. Convince the Interop team!</p>
<h2>How to submit</h2>
<p>Submit your proposal by <a href="https://github.com/web-platform-tests/interop/issues/new?template=focus-area-proposal.yml">filing an issue on Github</a>. Feel free to collaborate with other people. If someone else has <a href="https://github.com/web-platform-tests/interop/issues?q=is%3Aissue%20state%3Aopen%20label%3Afocus-area-proposal">already proposed</a> your idea, use the comments in GitHub issues to help further make the case. It’s far better to support an existing issue than have two issues for the same or very similar ideas. You can read <a href="https://github.com/web-platform-tests/interop/issues?q=is%3Aissue%20state%3Aclosed%20label%3Afocus-area-proposal">proposals submitted in previous years</a> to better understand the process.</p>
<h2>Join the Interop Party!</h2>
<p>The Interop Project is all about collaboration. By participating, you’re joining a global community of web developers, browser makers, and standards bodies working together to make the web more consistent and reliable across platforms. Share your insights as we make the web even more amazing together. We can’t wait to see your proposals.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fixing Top-Level Await in Safari</title>
		<link>https://webkit.org/blog/18227/fixing-top-level-await-in-safari/</link>
		
		<dc:creator/>
		<pubDate>Wed, 02 Sep 2026 17:05:29 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18227</guid>

					<description><![CDATA[WebKit for Safari 27 adds full spec compliance for top-level `await`.]]></description>
										<content:encoded><![CDATA[<p>WebKit for Safari 27 adds full spec compliance for top-level <code>await</code>. Before now, some of you may have run into unexpected “accessed before initialization” errors. We fixed it at the root by rewriting Safari&#8217;s module loader from the ground up so you can now confidently use <code>await</code> at the top level of your JavaScript modules. If top-level <code>await</code> wasn&#8217;t part of your toolkit before, this is a great time to give it another look.</p>
<h2>What is top-level await?</h2>
<p>Top-level await lets you use <code>await</code> at the top level of a module, enabling the same convenient use of Promises that async functions provide. Async functions provide support for <code>await</code> expressions to simplify complex Promise chains into linear sequences of code, and top-level <code>await</code> allows module authors to benefit from the same ease of use. Effectively, whenever an <code>await</code> expression is encountered, execution is paused until the awaited value is available, and in the meantime, control is returned to the caller of the async function. For ES modules, the analogy differs: when a module encounters a top-level <code>await</code>, any module that imports it is also suspended until the <code>await</code> resolves. However, sibling modules in the dependency graph that don’t depend on the awaiting module can still execute concurrently.</p>
<h2>What this means for the web</h2>
<p>You can try all of this today. Download <a href="https://webkit.org/blog/18194/release-notes-for-safari-technology-preview-251/">Safari Technology Preview 251</a> or grab <a href="https://webkit.org/blog/17967/news-from-wwdc26-webkit-in-safari-27-beta/">Safari 27 beta</a>, and try integrating top-level <code>await</code> into your web apps. It just works! The improvements go beyond just top-level <code>await</code>: with the module loader rebuilt on the right foundation, ES modules as a whole are now something you can build on in Safari without a second thought. And once Safari 27 ships, you’ll be able to lean on top-level <code>await</code> and ES modules across your projects, in production, for everyone.</p>
<h2>The problem</h2>
<p>Top-level <code>await</code> is a complex feature implemented inside the module loader machinery. The ECMAScript specification’s section of modules leaves some parts up to the host—this includes the mechanism of fetching modules, which in practice will be done over the network by web browsers or from the local filesystem by JavaScript runtimes like Node.js and Bun. The WebKit team wrote Safari’s module loader long ago, back during the days of the WHATWG Loader proposal (last updated January 2016), and we relied on the proposal’s specification of the host-defined functionality. This worked during the early history of ES modules, when module execution was purely synchronous and top-level <code>await</code> didn’t exist. However, ECMAScript 2022 was later released, introducing top-level <code>await</code> as a feature. By this point, the WHATWG Loader proposal had effectively faded into obscurity after being superseded by the ECMAScript standard’s module section, but Safari’s module loader was still based on it. Top-level <code>await</code> was implemented in terms of a proposal that was abandoned before any support for async/await existed in ECMAScript, instead of in accordance with the ECMAScript standard’s algorithms for asynchronous module execution. This mismatch caused subtle bugs that we couldn’t fully resolve for years, despite multiple attempts. Instead of continuing to patch a foundation that couldn’t support the feature, we decided to rebuild it correctly.</p>
<h2>An example</h2>
<p>A major cause of Safari’s top-level <code>await</code> bugs was in how the module loader chose the order in which to load and evaluate modules. This code example demonstrates the issue:</p>
<pre><code class="js"><span class="comment">// main.js
</span>
<span class="identifier">async</span> <span class="keyword type">function</span> <span class="identifier">load</span>(<span class="identifier">index</span>) {
    <span class="keyword control">try</span> {
        <span class="identifier">print</span>(<span class="string">"Importing"</span>, <span class="identifier">index</span>);
        <span class="keyword type">const</span> <span class="identifier">module</span> <span class="operator">=</span> <span class="identifier">await</span> <span class="keyword control">import</span>(<span class="string">"./test-module.js"</span>);
        <span class="identifier">print</span>(<span class="string">"Imported"</span>, <span class="identifier">index</span>);

        <span class="keyword control">try</span> {
            <span class="identifier">print</span>(`<span class="identifier">Keys</span> <span class="keyword control">for</span> ${<span class="identifier">index</span>}<span class="operator">:</span>`, <span class="identifier">Object</span>.<span class="identifier">keys</span>(<span class="identifier">module</span>));
        } <span class="keyword control">catch</span> (<span class="identifier">e</span>) {
            <span class="identifier">print</span>(<span class="string">"Accessing"</span>, <span class="identifier">index</span>, <span class="string">"failed:"</span>, <span class="identifier">e</span>.<span class="identifier">message</span>);
        }
    } <span class="keyword control">catch</span> (<span class="identifier">e</span>) {
        <span class="identifier">print</span>(<span class="string">"Importing"</span>, <span class="identifier">index</span>, <span class="string">"failed:"</span>, <span class="identifier">e</span>.<span class="identifier">message</span>);
    }
}

<span class="keyword control">try</span> {
    <span class="keyword type">const</span> <span class="identifier">imports</span> <span class="operator">=</span> <span class="identifier">Array</span>.<span class="identifier">from</span>({ <span class="identifier">length</span><span class="operator">:</span> <span class="number">3</span> }, (<span class="identifier">_</span>, <span class="identifier">i</span>) <span class="operator">=</span><span class="operator">&gt;</span> {
        <span class="keyword control">return</span> <span class="identifier">load</span>(<span class="identifier">i</span> <span class="operator">+</span> <span class="number">1</span>);
    });

    <span class="identifier">await</span> <span class="identifier">Promise</span>.<span class="identifier">all</span>(<span class="identifier">imports</span>);
} <span class="keyword control">catch</span> (<span class="identifier">e</span>) {
    <span class="identifier">print</span>(<span class="string">"Test failed:"</span>, <span class="identifier">e</span>);
}
</code></pre>
<pre><code class="js"><span class="comment">// test-module.js
</span>
<span class="identifier">await</span> <span class="keyword operator">new</span> <span class="identifier">Promise</span>(<span class="identifier">resolve</span> <span class="operator">=</span><span class="operator">&gt;</span> <span class="identifier">setTimeout</span>(<span class="identifier">resolve</span>, <span class="number">10</span>));

<span class="keyword modifier">export</span> <span class="keyword type">function</span> <span class="identifier">someFunction</span>() {
    <span class="keyword control">return</span> <span class="string">"Hello!"</span>;
}

<span class="keyword modifier">export</span> <span class="keyword type">const</span> <span class="identifier">someArray</span> <span class="operator">=</span> [];
</code></pre>
<p>Its purpose is to dynamically load the same module three times in a row, printing the names of the module’s exports each time. It’s supposed to be ordered 1, 2, 3, but if the code is run with the old module loader, something unexpected occurs:</p>
<pre><code>Importing 1
Importing 2
Importing 3
Imported 2
Accessing 2 failed: Cannot access 'someArray' before initialization.
Imported 3
Accessing 3 failed: Cannot access 'someArray' before initialization.
Imported 1
Keys for 1: someArray,someFunction
</code></pre>
<p>There are two things going wrong here. First, the order in which the imports complete is wrong. Instead of the expected 1, 2, 3, the order is 2, 3, 1. Second, there are strange errors about accessing a value before it’s initialized. Both problems are caused by the same bug.</p>
<p>When the module loader starts loading the module with top-level <code>await</code> the first time, it begins to execute it, and then pauses execution when it reaches the <code>await</code>. It then returns control to the main module, which begins the second import. The promise for the second import shouldn’t resolve until after the first import is done evaluating, but due to a bug in the old module loader, it resolves immediately. This leads to the second import finishing first, and because the evaluation of the imported module hasn’t completed yet, the code to print the module’s keys accesses uninitialized exports, causing an exception. The same happens with the third import. After those two fail, the first import finishes. This time, the evaluation has completed, so it’s able to successfully print the keys of the module’s exports.</p>
<p>With the new module loader, the output is what you’d expect:</p>
<pre><code>Importing 1
Importing 2
Importing 3
Imported 1
Keys for 1: someArray,someFunction
Imported 2
Keys for 2: someArray,someFunction
Imported 3
Keys for 3: someArray,someFunction
</code></pre>
<h2>Self-hosted JavaScript builtins vs. native C++</h2>
<p>The old module loader was written in JavaScript as a self-hosted builtin. This had some advantages: unlike native code, JavaScript builtins can be inlined into the user code that invokes them, and it’s possible to avoid the performance penalty paid when crossing the boundary between JavaScript and C++. In addition, creation of objects is faster from JavaScript, as it’s sometimes possible to eliminate the heap allocation.</p>
<p>However, we later found multiple drawbacks with self-hosted JavaScript: it’s slower to start up because it has to be compiled at run time, unlike native code, which is fully compiled well in advance. In addition, builtins have inherently wide usage characteristics, which makes it harder for JavaScriptCore’s optimizing JIT compilers to exploit patterns in usage, and the module loader code isn’t a hot path, which further reduces the benefit of compiling at runtime. As a result, overall performance is less stable and predictable than it is for C++. When we rewrote the module loader, we chose to drop the self-hosted builtin approach in favor of fully native code.</p>
<h2>The rewrite</h2>
<p>In January 2026, we began rewriting the module loader. Because the consensus at that point had been that self-hosted JavaScript was not the ideal approach for the module loader, we started the process by deleting the entire JavaScript file that contained the old module loader.</p>
<p>After that, we began implementing the module loader operations one by one, translating the pseudocode defined in the ECMAScript specification into C++. As a guide through ordering which functions to implement first, given that the module loading machinery is a complex state machine, we read through the specification and took note of how the functions called each other and assembled a flow graph. This gave a starting point.</p>
<figure class="mattewhite widescreen">
<img loading="lazy" decoding="async" width="2560" height="2076" src="https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-scaled.png" alt="" class="wp-image-18271" srcset="https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-scaled.png 2560w, https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-300x243.png 300w, https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-1024x830.png 1024w, https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-768x623.png 768w, https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-1536x1245.png 1536w, https://webkit.org/wp-content/uploads/top-level-await-diagram-dark-2048x1661.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><br />
</figure>
<p>Leaf functions like <code>ExecuteModule</code> and <code>ModuleRequestsEqual</code> were ideal to implement early because they didn’t depend on any other functions. After a few weeks, the new module loader was able to handle the most common cases and a draft <a href="https://github.com/WebKit/WebKit/pull/57827">pull request</a> was put up.</p>
<h2>Testing the rewrite</h2>
<p>Because the point of the rewrite was to improve the module loader’s reliability, thorough testing was essential. Engineers at Bun, whose runtime is built on JavaScriptCore and inherited the old module loader’s problems, graciously provided test cases they’d collected that demonstrated incorrect behavior. It was simple to adapt these to run with JavaScriptCore’s command line shell (<code>jsc</code>) and integrate them as tests.</p>
<p>To stress test the module loader’s performance and functionality, we wrote a <a href="https://gist.github.com/heimskr/2718b749af45f16753fd64aa74de22a0">fuzzer</a> that produced complex graphs of modules (some with top-level <code>await</code>, others without) and <code>import</code> statements. The goal was to ensure that the observable effects of the module loading process were correct. We did this by generating large graphs and comparing the output of JavaScriptCore with the new module loader to the output of other JavaScript engines. If the text output matched byte-for-byte with other engines’ outputs, we could be sure that the new module loader was handling the test case correctly. And indeed we found in every tested example that the new module loader correctly handled the fuzzer output. Once all the module-related tests from <a href="https://github.com/tc39/test262">test262</a> started passing and we fixed many previously failing module tests from <a href="https://github.com/web-platform-tests/wpt">WPT</a> as well with no regressions, the new module loader was ready for merging. By this point, we had for a few weeks been daily driving a build of Safari with the new module loader integrated with no issues.</p>
<h2>Give it a try</h2>
<p>When we release Safari 27, you can start shipping web apps that take advantage of top-level <code>await</code>’s benefits. Until then, download the beta and try integrating top-level <code>await</code> into your projects. If you run into any issues, we’d love to hear your feedback. As always, bug reports can be submitted at <a href="https://bugs.webkit.org/">bugs.webkit.org</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Release Notes for Safari Technology Preview 251</title>
		<link>https://webkit.org/blog/18194/release-notes-for-safari-technology-preview-251/</link>
		
		<dc:creator/>
		<pubDate>Wed, 26 Aug 2026 21:36:31 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18194</guid>

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

					<description><![CDATA[Safari Technology Preview Release 250 is now available for download for macOS Golden Gate and macOS Tahoe.]]></description>
										<content:encoded><![CDATA[<p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 250 is now <a href="https://developer.apple.com/safari/resources/">available for download</a> 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.</p>
<p>This release includes WebKit changes between: <a href="https://github.com/WebKit/WebKit/compare/b1a790aab65acaee0e7395b20fe98bff3d539ada...41655c489e18c93c2bf0614173c3ac942fbf35fe">317507@main&#8230;317934@main</a>.</p>
<h3>Accessibility</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed VoiceOver reading a stray newline and skipping lines when navigating a <code>&lt;textarea&gt;</code> whose value ends in a line break. (<a href="https://commits.webkit.org/317784@main">317784@main</a>)  (182912872)</li>
</ul>
<h3>CSS</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>spaces</code> value of the <code>ruby-overhang</code> property, which limits annotation overhang to adjacent spaces and punctuation, with <code>none</code> now an alias for <code>spaces</code>. (<a href="https://commits.webkit.org/317569@main">317569@main</a>)  (181808420)</li>
<li>Added support for the <code>content</code> property on the <code>::marker</code> pseudo-element. (<a href="https://commits.webkit.org/317570@main">317570@main</a>)  (182750380)</li>
<li>Added support for the <code>text-decoration-inset</code> property. (<a href="https://commits.webkit.org/317571@main">317571@main</a>)  (182750933)</li>
<li>Added support for the <code>white-space-trim</code> property. (<a href="https://commits.webkit.org/317573@main">317573@main</a>)  (182751076)</li>
<li>Added support for the <code>wrap-inside</code> property. (<a href="https://commits.webkit.org/317574@main">317574@main</a>)  (182751559)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a <code>list-style-position: inside</code> marker glyph being painted one device pixel away from the equivalent inline text. (<a href="https://commits.webkit.org/317789@main">317789@main</a>)  (182447949)</li>
<li>Fixed <code>text-decoration</code> specified on <code>::selection</code> never being painted. (<a href="https://commits.webkit.org/317673@main">317673@main</a>)  (182757292)</li>
<li>Fixed a text decoration on <code>::selection</code> not being painted when the selected text had no decoration of its own. (<a href="https://commits.webkit.org/317695@main">317695@main</a>)  (182864748)</li>
<li>Fixed a <code>max-content</code> sized block collapsing to zero width when its child used an orthogonal writing mode. (<a href="https://commits.webkit.org/317781@main">317781@main</a>)  (183026896)</li>
</ul>
<h4>Deprecations</h4>
<ul>
<li>Removed support for the non-standard <code>text</code> color value; use <code>canvastext</code> instead. (<a href="https://commits.webkit.org/317687@main">317687@main</a>)  (100364547)</li>
</ul>
<h3>Editing</h3>
<h4>New Features</h4>
<ul>
<li>Added support for copying and pasting <code>image/svg+xml</code> data with the Clipboard API, sanitizing the markup on both read and write. (<a href="https://commits.webkit.org/317528@main">317528@main</a>)  (137553836)</li>
</ul>
<h3>JavaScript</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the Explicit Resource Management proposal, including <code>using</code> and <code>await using</code> declarations, <code>Symbol.dispose</code>, <code>DisposableStack</code>, and <code>AsyncDisposableStack</code>. (<a href="https://commits.webkit.org/317894@main">317894@main</a>)  (103209363)</li>
<li>Added support for <code>Iterator.zip()</code> and <code>Iterator.zipKeyed()</code> from the Joint Iteration proposal. (<a href="https://commits.webkit.org/317886@main">317886@main</a>)  (180967133)</li>
<li>Added JavaScript and WebAssembly feature flags alongside other web feature settings. (317306@main (https://commits.webkit.org/317306@main))  (182210113)</li>
</ul>
<h3>Media</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a spurious <code>pause</code> and <code>ended</code> event firing on a live HLS stream when playback reached the live edge. (<a href="https://commits.webkit.org/317626@main">317626@main</a>)  (100556746)</li>
<li>Fixed a media fragment with an out-of-range hours value being accepted as a valid seek instead of being rejected. (<a href="https://commits.webkit.org/317869@main">317869@main</a>)  (181820705)</li>
<li>Fixed a WebVTT cue incorrectly inheriting a preceding line as its identifier across a <code>REGION</code> or <code>STYLE</code> block. (<a href="https://commits.webkit.org/317811@main">317811@main</a>)  (181977285)</li>
</ul>
<h3>Networking</h3>
<h4>New Features</h4>
<ul>
<li>Added initial support for uploading a <code>ReadableStream</code> body with <code>fetch()</code>. (<a href="https://commits.webkit.org/317724@main">317724@main</a>)  (182510365)</li>
<li>Added support for the <code>duplex</code> option on <code>Request</code>, which is required when uploading a <code>ReadableStream</code> body. (<a href="https://commits.webkit.org/317768@main">317768@main</a>)  (182802330)</li>
</ul>
<h3>Scrolling</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>scrollIntoView()</code> on an inline element sharing a line with a much taller element scrolling to the top of the line box instead of to the element. (<a href="https://commits.webkit.org/317933@main">317933@main</a>)  (178491868)</li>
<li>Fixed paged scrolling with Page Down or the spacebar skipping over intermediate scroll snap points. (<a href="https://commits.webkit.org/317562@main">317562@main</a>)  (182562852)</li>
<li>Fixed a crash that could occur while sending a scroll update during window tear-down. (<a href="https://commits.webkit.org/317785@main">317785@main</a>)  (182972245)</li>
<li>Fixed re-snapping after layout always preferring a focused element, instead of only when focus has changed. (<a href="https://commits.webkit.org/317892@main">317892@main</a>)  (183146768)</li>
</ul>
<h3>Storage</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an IndexedDB <code>put()</code> that fails a unique index constraint deleting the record it would have overwritten, leaving the object store with neither the old nor the new record. (<a href="https://commits.webkit.org/317632@main">317632@main</a>)  (181513905)</li>
</ul>
<h3>Web API</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed Digital Credentials <code>get()</code> being rejected in an iframe inside a focused window. (<a href="https://commits.webkit.org/317656@main">317656@main</a>)  (109191868)</li>
</ul>
<h3>Web Inspector</h3>
<h4>New Features</h4>
<ul>
<li>Added support for showing WebAssembly modules in the Sources tab. (<a href="https://commits.webkit.org/317891@main">317891@main</a>)  (182605814)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed disabling the resource cache overwriting a <code>Cache-Control</code> header already set by the page. (<a href="https://commits.webkit.org/317814@main">317814@main</a>)  (183072123)</li>
</ul>
<h3>WebAssembly</h3>
<h4>New Features</h4>
<ul>
<li>Added support for relaxed SIMD instructions. (<a href="https://commits.webkit.org/317549@main">317549@main</a>)  (180967232)</li>
<li>Added support for multiple memories in a single WebAssembly module. (<a href="https://commits.webkit.org/317636@main">317636@main</a>)  (182219080)</li>
</ul>
<h3>WebDriver</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the &#8220;consume user activation&#8221; extension command, which consumes the current browsing context&#8217;s transient user activation and reports whether it was present. (<a href="https://commits.webkit.org/317715@main">317715@main</a>)  (102634281)</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Release Notes for Safari Technology Preview 249</title>
		<link>https://webkit.org/blog/18182/release-notes-for-safari-technology-preview-249/</link>
		
		<dc:creator/>
		<pubDate>Wed, 29 Jul 2026 21:46:12 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Safari Technology Preview]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18182</guid>

					<description><![CDATA[Safari Technology Preview Release 249 is now available for download for macOS Golden Gate and macOS Tahoe.]]></description>
										<content:encoded><![CDATA[<p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 249 is now <a href="https://developer.apple.com/safari/resources/">available for download</a> 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.</p>
<p>This release includes WebKit changes between: <a href="https://github.com/WebKit/WebKit/compare/402dc1b3bf265f5afd15d1b68374ef0885824299...82913509604940fdfe247e5da3609c6de6e44d89">316531@main&#8230;317820@main</a>.</p>
<h3>Accessibility</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where an <code>aria-labelledby</code> relation was not built when its target element was inserted via <code>innerHTML</code>. (<a href="https://commits.webkit.org/316913@main">316913@main</a>)  (179677418)</li>
<li>Fixed an issue where VoiceOver was silent during character navigation inside a local iframe. (<a href="https://commits.webkit.org/317264@main">317264@main</a>)  (182229891)</li>
<li>Fixed an issue where web content somtimes appeared empty to assistive technology after navigation. (<a href="https://commits.webkit.org/317449@main">317449@main</a>)  (182544199)</li>
</ul>
<h3>Animations</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where calling <code>play()</code> on a finite scroll-driven animation timeline did not reset its start time to the current time. (<a href="https://commits.webkit.org/316745@main">316745@main</a>)  (181712713)</li>
<li>Fixed an issue where <code>animation-timeline</code> did not use the last matching timeline when it matched multiple timelines. (<a href="https://commits.webkit.org/317330@main">317330@main</a>)  (182405676)</li>
<li>Fixed an issue where <code>animation-timeline</code> could match a timeline outside the nearest <code>timeline-scope</code> element with that name. (<a href="https://commits.webkit.org/317376@main">317376@main</a>)  (182417407)</li>
</ul>
<h3>CSS</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>attr()</code> function. (<a href="https://commits.webkit.org/316672@main">316672@main</a>)  (173992627)</li>
<li>Added support for <code>outline-offset: inset</code>. (<a href="https://commits.webkit.org/316677@main">316677@main</a>)  (180547604)</li>
<li>Added support for the <code>@function</code> custom functions rule. (<a href="https://commits.webkit.org/316671@main">316671@main</a>)  (181625123)</li>
<li>Added preview support for the <code>wrap-inside</code> property. (<a href="https://commits.webkit.org/317182@main">317182@main</a>)  (181751564)</li>
<li>Added support for the <code>if()</code> function. (<a href="https://commits.webkit.org/316813@main">316813@main</a>)  (181806268)</li>
<li>Added support for <code>calc-mix()</code>. (<a href="https://commits.webkit.org/316847@main">316847@main</a>)  (181839626)</li>
<li>Added support for <code>justify-self</code> on block-level boxes. (<a href="https://commits.webkit.org/317212@main">317212@main</a>)  (181926245)</li>
<li>Added preview support for <code>text-decoration-inset</code>. (<a href="https://commits.webkit.org/317230@main">317230@main</a>)  (182019037)</li>
<li>Added preview support for the <code>content</code> property on the <code>::marker</code> pseudo-element. (<a href="https://commits.webkit.org/317211@main">317211@main</a>)  (182066124)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where setting <code>view-transition-name</code> dynamically did not create a stacking context. (<a href="https://commits.webkit.org/317310@main">317310@main</a>)  (178316558)</li>
<li>Fixed an issue where CSS Grid items with a computed preferred size that behaves as <code>auto</code> did not correctly compute their minimum content contribution. (<a href="https://commits.webkit.org/316697@main">316697@main</a>)  (181146154)</li>
<li>Fixed an issue where visually overflowing content in a CSS Grid item was not painted. (<a href="https://commits.webkit.org/316668@main">316668@main</a>)  (181277780)</li>
<li>Fixed <code>anchor-center</code> in vertical writing modes not being scroll-adjusted along the block axis. (<a href="https://commits.webkit.org/316537@main">316537@main</a>)  (181413103)</li>
<li>Fixed an issue where an empty editable flex container did not reserve a line&#8217;s worth of block size in vertical writing modes. (<a href="https://commits.webkit.org/317467@main">317467@main</a>)  (181485387)</li>
<li>Fixed an issue where CSS Grid did not correctly increase track sizes to accommodate items spanning flexible tracks. (<a href="https://commits.webkit.org/317426@main">317426@main</a>)  (181635324)</li>
<li>Fixed an issue where stretch alignment did not trigger stretch sizing for CSS Grid items. (<a href="https://commits.webkit.org/316949@main">316949@main</a>)  (181750071)</li>
<li>Fixed an issue where CSS Grid items could retain stale block sizes after a subsequent layout. (<a href="https://commits.webkit.org/317166@main">317166@main</a>)  (182144347)</li>
<li>Fixed an issue where <code>clip-path</code> shapes could render with incorrect arcs. (<a href="https://commits.webkit.org/317397@main">317397@main</a>)  (182443333)</li>
<li>Fixed an issue where <code>::highlight()</code> and <code>::target-text</code> ignored <code>text-underline-offset</code>. (<a href="https://commits.webkit.org/317440@main">317440@main</a>)  (182466757)</li>
<li>Fixed an issue where <code>::highlight()</code> decoration replaced the originating element&#8217;s decoration instead of layering over it. (<a href="https://commits.webkit.org/317439@main">317439@main</a>)  (182523249)</li>
</ul>
<h3>Editing</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue that <font face> disallowed font names that were not a valid CSS identifiers. (<a href="https://commits.webkit.org/316948@main">316948@main</a>)  (51409819)</li>
<li>Fixed the Edit menu&#8217;s Copy item being incorrectly enabled when there was no selection in the web page. (<a href="https://commits.webkit.org/316571@main">316571@main</a>)  (176061974)</li>
</ul>
<h3>Forms</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where the <code>datalist</code> popup menu was presented in the wrong place on a screen to the left of the main screen. (<a href="https://commits.webkit.org/316965@main">316965@main</a>)  (181967418)</li>
</ul>
<h3>HTML</h3>
<h4>New Features</h4>
<ul>
<li>Added support for <code>popover=hint</code>. (<a href="https://commits.webkit.org/317402@main">317402@main</a>)  (129495028)</li>
</ul>
<h3>JavaScript</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the <code>Temporal</code> object. (<a href="https://commits.webkit.org/316742@main">316742@main</a>)  (181723535)</li>
</ul>
<h3>MathML</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where U+2016 (DOUBLE VERTICAL LINE) was missing the symmetric property in the MathML operator dictionary. (<a href="https://commits.webkit.org/316867@main">316867@main</a>)  (179558196)</li>
</ul>
<h3>Media</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where finding text starting from a selection could resolve to the wrong caption cue instead of the one nearest the video&#8217;s playhead. (<a href="https://commits.webkit.org/317168@main">317168@main</a>)  (182001231)</li>
</ul>
<h3>Rendering</h3>
<h4>New Features</h4>
<ul>
<li>Added support for dark mode in the XML document viewer. (<a href="https://commits.webkit.org/316832@main">316832@main</a>)  (122234600)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where <code>box-shadow</code> rendering broke when the page was zoomed. (<a href="https://commits.webkit.org/317080@main">317080@main</a>)  (169167365)</li>
</ul>
<h3>Scrolling</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where re-snapping did not select the snap area aligned in both axes when multiple targets were aligned. (<a href="https://commits.webkit.org/317294@main">317294@main</a>)  (182285397)</li>
<li>Fixed an issue where <code>scroll-snap-align</code> was not respected when scrolling to an anchor or calling <code>scrollIntoView()</code>. (<a href="https://commits.webkit.org/317495@main">317495@main</a>)  (182544180)</li>
</ul>
<h3>Spatial Web</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where navigating back to a page with a previously active web environment left the UI stuck showing the environment as active. (<a href="https://commits.webkit.org/316891@main">316891@main</a>)  (180966321)</li>
<li>Fixed an issue where the background color of <code>HTMLModelElement</code> did not match spec for non-opaque colors. (<a href="https://commits.webkit.org/316788@main">316788@main</a>)  (181641249)</li>
</ul>
<h3>Web API</h3>
<h4>New Features</h4>
<ul>
<li>Added support for subgroups in WebGPU. (<a href="https://commits.webkit.org/317145@main">317145@main</a>)  (154874391)</li>
<li>Added support for close watchers, including the <code>closedby</code> attribute for <code>dialog</code> elements. (<a href="https://commits.webkit.org/316680@main">316680@main</a>)  (180105698)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where a user gesture authorization token was not properly verified for Digital Credentials requests. (<a href="https://commits.webkit.org/317228@main">317228@main</a>)  (174908839)</li>
<li>Fixed <code>DOMMatrix</code> and <code>IntersectionObserver</code> correctly enforcing absolute-length unit requirements when parsing values. (<a href="https://commits.webkit.org/316532@main">316532@main</a>)  (181453666)</li>
<li>Fixed an issue where Scroll To Text Fragment directives could run outside <code>text/html</code> and <code>text/plain</code> documents. (<a href="https://commits.webkit.org/316976@main">316976@main</a>)  (181763736)</li>
<li>Fixed an issue where <code>replaceChildren()</code> could not replace a document&#8217;s children. (<a href="https://commits.webkit.org/316909@main">316909@main</a>)  (181921026)</li>
</ul>
<h3>Web Audio</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed Web Audio <code>PannerNode</code> orientation-only changes not updating the directional cone gain. (<a href="https://commits.webkit.org/316541@main">316541@main</a>)  (181413407)</li>
</ul>
<h3>Web Inspector</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the range mappings proposal in source maps. (<a href="https://commits.webkit.org/316748@main">316748@main</a>)  (178564308)</li>
<li>Added per-element <code>Layout Invalidated</code> events in Web Inspector to reflect the number of elements affected by a layout invalidation. (<a href="https://commits.webkit.org/317302@main">317302@main</a>)  (181243589)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where every <code>&lt;input&gt;</code> element showed a Scroll badge in the Elements tab. (<a href="https://commits.webkit.org/316773@main">316773@main</a>)  (101661656)</li>
<li>Fixed an issue where search results did not select the corresponding source code line for fetched JSON. (<a href="https://commits.webkit.org/317499@main">317499@main</a>)  (118115749)</li>
<li>Fixed an issue where search in Web Inspector did not find results inside the shadow DOM. (<a href="https://commits.webkit.org/317500@main">317500@main</a>)  (126458322)</li>
<li>Fixed an issue where Web Inspector could crash when selecting a popover matching a nested <code>@scope</code> with a bare declaration. (<a href="https://commits.webkit.org/316987@main">316987@main</a>)  (181745000)</li>
<li>Fixed an issue where Web Inspector mapped the <code>crimson</code> named color to the wrong RGB value. (<a href="https://commits.webkit.org/317047@main">317047@main</a>)  (182090064)</li>
<li>Fixed an issue where the gradient editor in Web Inspector dropped explicit <code>0%</code> color stops and misparsed leading radial color stops. (<a href="https://commits.webkit.org/317192@main">317192@main</a>)  (182172439)</li>
<li>Fixed an issue where autocompleting a vendor-prefixed value in Styles could duplicate the prefix, for example producing <code>-apple--apple-system</code>. (<a href="https://commits.webkit.org/317167@main">317167@main</a>)  (182178871)</li>
</ul>
<h3>WebAssembly</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where <code>Error</code> stack traces did not include names for modules instantiated with <code>WebAssembly.instantiateStreaming</code>. (<a href="https://commits.webkit.org/316642@main">316642@main</a>)  (181523735)</li>
</ul>
<h3>WebDriver</h3>
<h4>New Features</h4>
<ul>
<li>Added WebDriver support for the Digital Credentials API, including commands to simulate wallet payloads, indefinite waits, and user rejection. (<a href="https://commits.webkit.org/316435@main">316435@main</a>)  (168941907)</li>
</ul>
<h3>WebRTC</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>OverconstrainedError</code> to inherit from <code>DOMException</code> and expose a <code>code</code> attribute per the Media Capture spec. (<a href="https://commits.webkit.org/316578@main">316578@main</a>)  (180728516)</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WebKit Features for Safari 26.6</title>
		<link>https://webkit.org/blog/18178/webkit-features-for-safari-26-6/</link>
		
		<dc:creator/>
		<pubDate>Mon, 27 Jul 2026 18:00:52 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18178</guid>

					<description><![CDATA[Safari 26.6 is here.]]></description>
										<content:encoded><![CDATA[<p>Safari 26.6 is here. This release adds a small refinement to WebAssembly’s streaming compilation paths, and delivers eight bug fixes across CSS, service workers, networking, extensions, and WebRTC.</p>
<p>This release continues the ongoing focus of this entire year — polishing how features fit together, and resolving issues you might have run into as a web developer.</p>
<h2>WebAssembly</h2>
<p>WebKit for Safari 26.6 adds a <code>compileOptions</code> parameter to <code>WebAssembly.compileStreaming()</code> and <code>WebAssembly.instantiateStreaming()</code>.</p>
<p>Safari 26.2 shipped support for <a href="https://webkit.org/blog/17204/webkit-features-for-safari-26-2/">Wasm JS String Builtins</a> — a way for WebAssembly modules to import a set of standardized JavaScript string operations as builtins, which the engine can then optimize much more aggressively than a normal JS import. To turn them on, you pass an options object to <code>WebAssembly.compile()</code> or <code>WebAssembly.instantiate()</code>.</p>
<p>The two streaming variants (<code>compileStreaming()</code> and <code>instantiateStreaming()</code>) didn’t yet accept that same options object. Now they do.</p>
<pre><code class="js"><span class="keyword type">const</span> <span class="identifier">module</span> <span class="operator">=</span> <span class="identifier">await</span> <span class="identifier">WebAssembly</span>.<span class="identifier">compileStreaming</span>(
  <span class="identifier">fetch</span>(<span class="string">"example.wasm"</span>),
  { <span class="identifier">builtins</span><span class="operator">:</span> [<span class="string">"js-string"</span>] }
);
</code></pre>
<p>Now you don’t have to fall back from streaming compilation to use JS String Builtins.</p>
<h2>Bug fixes and more</h2>
<p>In addition to the WebAssembly update, WebKit for Safari 26.6 includes eight bug fixes:</p>
<h3>CSS</h3>
<ul>
<li>Fixed an issue where the <code>ic</code> length unit scaled incorrectly with page zoom, causing it to no longer equal <code>1em</code> as expected by the CSS specification. (174857144)</li>
<li>Fixed an issue where fixed-positioned elements using <code>position-area</code> did not fall back properly when the body was scrollable. (175544079)</li>
<li>Fixed an issue where CSS <code>zoom</code> interacted incorrectly with <code>font-size</code>, <code>font-weight</code>, <code>font-variant</code>, and <code>font-style</code> on iPad when requesting the desktop website. (176647969)</li>
</ul>
<h3>Networking</h3>
<ul>
<li>Fixed an issue where partitioned cookies could not be deleted using <code>WKHTTPCookieStore</code>. (176097960)</li>
</ul>
<h3>Service Workers</h3>
<ul>
<li>Fixed an issue where service worker registrations with missing main scripts were not automatically unregistered, preventing pages from re-registering new service workers. (175522651)</li>
<li>Fixed an issue where service worker registrations with missing imported scripts were not automatically unregistered. (175522816)</li>
</ul>
<h3>Web Extensions</h3>
<ul>
<li>Fixed an issue where web extension service worker registration database files accumulated on each Safari launch, causing performance degradation. (175810627)</li>
</ul>
<h3>WebRTC</h3>
<ul>
<li>Fixed an issue where <code>RTCPeerConnection</code> configured with <code>iceTransportPolicy: "relay"</code> failed to gather any ICE candidates on macOS Sequoia. (175009190)</li>
</ul>
<h2>Updating to Safari 26.6</h2>
<p>Safari 26.6 is available on iOS 26.6, iPadOS 26.6, visionOS 26.6, macOS Tahoe 26.6, macOS Sequoia, and macOS Sonoma. On iOS, iPadOS, and visionOS, you can update to Safari 26.6 as part of the OS update in Settings > General > Software Update. On macOS, Safari updates are delivered through System Settings > General > Software Update.</p>
<h2>Feedback</h2>
<p>We love hearing from you. To share your thoughts, find us online: Jen Simmons on <a href="https://bsky.app/profile/jensimmons.bsky.social">Bluesky</a> / <a href="https://front-end.social/@jensimmons">Mastodon</a>, Saron Yitbarek on <a href="https://bsky.app/profile/saron.bsky.social">Bluesky</a> / <a href="https://front-end.social/@saron">Mastodon</a>, and Jon Davis on <a href="https://bsky.app/profile/jondavis.bsky.social">Bluesky</a> / <a href="https://mastodon.social/@jondavis">Mastodon</a>. You can follow WebKit <a href="https://www.linkedin.com/in/apple-webkit/">on LinkedIn</a>.</p>
<p>If you run into any issues, we welcome your <a href="https://bugs.webkit.org/">bug report</a>. Filing issues really does make a difference.</p>
<p>You can also find this information in the <a href="https://developer.apple.com/documentation/safari-release-notes/">Safari release notes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Release Notes for Safari Technology Preview 248</title>
		<link>https://webkit.org/blog/18162/release-notes-for-safari-technology-preview-248/</link>
		
		<dc:creator/>
		<pubDate>Wed, 22 Jul 2026 18:58:31 +0000</pubDate>
				<category><![CDATA[Safari Technology Preview]]></category>
		<guid isPermaLink="false">https://webkit.org/?p=18162</guid>

					<description><![CDATA[Safari Technology Preview Release 248 is now available for download for macOS Golden Gate and macOS Tahoe.]]></description>
										<content:encoded><![CDATA[<p><a href="https://webkit.org/blog/6017/introducing-safari-technology-preview/">Safari Technology Preview</a> Release 248 is now <a href="https://developer.apple.com/safari/resources/">available for download</a> 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.</p>
<p>This release includes WebKit changes between: <a href="https://github.com/WebKit/WebKit/compare/666fd351d376a96584c357fee973f74f701800be...84565916779faa5f54b09bc075add03a779723c1">315567@main&#8230;316817@main</a>.</p>
<h3>Accessibility</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed VoiceOver on Safari unable to navigate to content revealed by disclosure widgets using <code>hidden="until-found"</code>. (<a href="https://commits.webkit.org/315964@main">315964@main</a>)  (173228707)</li>
<li>Fixed stale <code>aria-labelledby</code> when the referenced element dynamically changes its <code>aria-label</code>. (<a href="https://commits.webkit.org/316316@main">316316@main</a>)  (180319221)</li>
</ul>
<h3>CSS</h3>
<h4>New Features</h4>
<ul>
<li>Added support for forwarding missing color components when interpolating between analogous color spaces. (<a href="https://commits.webkit.org/315569@main">315569@main</a>)  (180239320)</li>
<li>Added support for the <code>no-clamp</code> option on the CSS <code>progress()</code> function. (<a href="https://commits.webkit.org/315977@main">315977@main</a>)  (180473472)</li>
</ul>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed serialization of various CSS at-rules not escaping identifiers. (<a href="https://commits.webkit.org/315795@main">315795@main</a>)  (178750383)</li>
<li>Fixed <code>:last-child</code> and related selectors incorrectly gating on parser state outside of style resolution. (<a href="https://commits.webkit.org/316495@main">316495@main</a>)  (178879939)</li>
<li>Fixed changing the <code>color-scheme</code> of an <code>&lt;iframe&gt;</code> not invalidating the appearance of the embedded document. (<a href="https://commits.webkit.org/316467@main">316467@main</a>)  (179177141)</li>
<li>Fixed CSS scroll snap re-snap to prefer the fragment-targeted (<code>:target</code>) snap area over other aligned snap targets. (<a href="https://commits.webkit.org/315880@main">315880@main</a>)  (180108825)</li>
<li>Fixed the CSS preload scanner failing to preload <code>@import</code> rules that follow an <code>@layer</code> statement rule. (<a href="https://commits.webkit.org/315576@main">315576@main</a>)  (180170656)</li>
<li>Fixed serialization of <code>CSSViewTransitionRule</code>. (<a href="https://commits.webkit.org/315614@main">315614@main</a>)  (180170814)</li>
<li>Fixed <code>MediaList.deleteMedium()</code> to parse its argument as a media query and remove all matching queries. (<a href="https://commits.webkit.org/315579@main">315579@main</a>)  (180270019)</li>
<li>Fixed <code>MediaList.appendMedium()</code> to parse its argument as a single media query and suppress duplicates. (<a href="https://commits.webkit.org/315594@main">315594@main</a>)  (180291283)</li>
<li>Fixed grid items with <code>stretch</code> or <code>fit-content</code> preferred sizes computing incorrect minimum-content contributions when sizing tracks. (<a href="https://commits.webkit.org/316296@main">316296@main</a>)  (180748205)</li>
<li>Fixed inserting a CSS rule while a view transition is active causing the group animation to snap to its final state. (<a href="https://commits.webkit.org/316436@main">316436@main</a>)  (181100818)</li>
<li>Fixed CSS <code>var()</code> to only resolve its fallback when the first argument resolves to the guaranteed-invalid value. (<a href="https://commits.webkit.org/316280@main">316280@main</a>)  (181114298)</li>
<li>Fixed navigating away from a render-blocked document before its first rendering opportunity incorrectly firing <code>pagereveal</code> and starting an outbound cross-document view transition. (<a href="https://commits.webkit.org/316446@main">316446@main</a>)  (181191512)</li>
</ul>
<h3>Editing</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed drag images of DOM elements with CSS transforms not rendering correctly. (<a href="https://commits.webkit.org/316077@main">316077@main</a>)  (99614217)</li>
<li>Fixed opaque DOM mutations coming from dictation on iOS. (<a href="https://commits.webkit.org/316049@main">316049@main</a>)  (163454428)</li>
<li>Fixed deletion in an editable table leaving an empty trailing table row behind. (<a href="https://commits.webkit.org/315990@main">315990@main</a>)  (180877315)</li>
<li>Fixed vertical caret movement in editable content ignoring the requested editable-type parameter. (<a href="https://commits.webkit.org/316241@main">316241@main</a>)  (181000174)</li>
</ul>
<h3>Forms</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the concentric inner-button corner radius on horizontal text form controls incorrectly ignoring the bottom inset. (<a href="https://commits.webkit.org/316022@main">316022@main</a>)  (180869927)</li>
</ul>
<h3>Images</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a regression where RGB gain map images were decoded to 8 bits per channel, causing a color shift and incorrect brightness. (<a href="https://commits.webkit.org/316069@main">316069@main</a>)  (179152566)</li>
<li>Fixed handling of the gain-map target pixel format when decoding HDR images to fall back safely when the format cannot be parsed. (<a href="https://commits.webkit.org/316405@main">316405@main</a>)  (181180757)</li>
</ul>
<h3>JavaScript</h3>
<h4>New Features</h4>
<ul>
<li>Added support for the TC39 BigInt Math proposal, exposing <code>Math</code>-equivalent methods on <code>BigInt</code> such as <code>BigInt.pow</code> and <code>BigInt.sqrt</code>. (<a href="https://commits.webkit.org/315974@main">315974@main</a>)  (152472996)</li>
</ul>
<h3>Media</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed <code>&lt;audio&gt;</code> and <code>&lt;video&gt;</code> controls rendering incorrectly when rotated via CSS transform. (<a href="https://commits.webkit.org/315718@main">315718@main</a>)  (37516619)</li>
<li>Fixed subtitles and closed captions not appearing in fullscreen video on iPhone. (<a href="https://commits.webkit.org/315789@main">315789@main</a>)  (175298523)</li>
<li>Fixed ArrayBuffer-backed YUV <code>VideoFrame</code> with a <code>visibleRect</code> rendering with offset chroma channels. (<a href="https://commits.webkit.org/315742@main">315742@main</a>)  (180202939)</li>
<li>Fixed video playback of streams from certain sources such as security cameras not working. (<a href="https://commits.webkit.org/315774@main">315774@main</a>)  (180411019)</li>
<li>Fixed transient device rotation resulting in captured video frames having the wrong orientation. (<a href="https://commits.webkit.org/315821@main">315821@main</a>)  (180429147)</li>
<li>Fixed Media Source Extensions playback and seek by loosening the gap tolerance between buffered ranges. (<a href="https://commits.webkit.org/316146@main">316146@main</a>)  (180439090)</li>
</ul>
<h3>Navigation</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a <code>&lt;meta http-equiv="refresh"&gt;</code> to a URL differing only in fragment identifier being incorrectly treated as a page reload. (<a href="https://commits.webkit.org/316001@main">316001@main</a>)  (176933795)</li>
</ul>
<h3>Networking</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed URL path separators being encoded as <code>%2F</code> following a percent-encoded Armenian path segment. (<a href="https://commits.webkit.org/315627@main">315627@main</a>)  (180067095)</li>
</ul>
<h3>Rendering</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the background of a composited <code>&lt;html&gt;</code> element not being repainted when the <code>&lt;body&gt;</code> background changed. (<a href="https://commits.webkit.org/316415@main">316415@main</a>)  (177975964)</li>
<li>Fixed a regression where block-axis padding on a <code>flex</code> column container with <code>overflow: auto</code> was excluded from <code>scrollHeight</code>. (<a href="https://commits.webkit.org/315813@main">315813@main</a>)  (179376053)</li>
<li>Fixed an issue where an <code>&lt;img&gt;</code> embedding an SVG with a near-integral intrinsic width rendered one device pixel narrower than expected. (<a href="https://commits.webkit.org/315807@main">315807@main</a>)  (180490343)</li>
<li>Fixed elements with <code>filter: drop-shadow()</code> not being fully repainted when a child is resized. (<a href="https://commits.webkit.org/316450@main">316450@main</a>)  (181284741)</li>
</ul>
<h3>SVG</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed SVG SMIL length animations to reject invalid <code>to</code>, <code>from</code>, and <code>by</code> values such as those with leading whitespace. (<a href="https://commits.webkit.org/315949@main">315949@main</a>)  (118537155)</li>
<li>Fixed Unicode text with complex scripts not rendering correctly along a curved <code>&lt;textPath&gt;</code>. (<a href="https://commits.webkit.org/316144@main">316144@main</a>)  (120284006)</li>
<li>Fixed <code>SVGLength.convertToSpecifiedUnits()</code> failing when converting from <code>px</code> to <code>%</code>, <code>em</code>, or <code>ex</code>. (<a href="https://commits.webkit.org/315953@main">315953@main</a>)  (172056830)</li>
<li>Fixed SVG geometry presentation attributes like <code>cx</code>, <code>cy</code>, <code>r</code>, <code>rx</code>, <code>ry</code>, <code>x</code>, <code>y</code>, <code>width</code>, and <code>height</code> being incorrectly applied to elements such as <code>&lt;g&gt;</code> on which they are not permitted. (<a href="https://commits.webkit.org/315946@main">315946@main</a>)  (175672111)</li>
<li>Fixed an issue where the per-character <code>rotate</code> attribute was discarded on a <code>&lt;textPath&gt;</code>, so it now composes with the path tangent angle. (<a href="https://commits.webkit.org/315786@main">315786@main</a>)  (178044478)</li>
<li>Fixed several SVG styling spec-compliance failures. (<a href="https://commits.webkit.org/316174@main">316174@main</a>)  (181052042)</li>
<li>Fixed dynamic changes to <code>orient</code> and <code>markerUnits</code> on <code>&lt;marker&gt;</code> not repainting elements that reference it. (<a href="https://commits.webkit.org/316350@main">316350@main</a>)  (181106538)</li>
<li>Fixed SVG SMIL <code>number</code>, <code>integer-optional-integer</code>, <code>number-optional-number</code>, and <code>path</code> animations to not apply when their <code>from</code>, <code>to</code>, or <code>by</code> values fail to parse. (<a href="https://commits.webkit.org/316468@main">316468@main</a>)  (181308150)</li>
</ul>
<h3>Scrolling</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed CSS scroll snap points inside zero-sized elements not working correctly. (<a href="https://commits.webkit.org/315948@main">315948@main</a>)  (172863699)</li>
<li>Fixed CSS scroll snap re-snap to prefer a snap area that contains the focused or fragment-targeted element. (<a href="https://commits.webkit.org/315927@main">315927@main</a>)  (180707984)</li>
</ul>
<h3>Security</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed a regression where some websites failed to display and logged Content Security Policy errors in the console. (<a href="https://commits.webkit.org/316290@main">316290@main</a>)  (179684592)</li>
<li>Fixed same-page navigations being incorrectly checked against Content Security Policy. (<a href="https://commits.webkit.org/315759@main">315759@main</a>)  (180342503)</li>
<li>Fixed Content Security Policy <code>frame-ancestors</code> violations in report-only policies being ignored instead of reported. (<a href="https://commits.webkit.org/315753@main">315753@main</a>)  (180447621)</li>
<li>Fixed Content Security Policy parsing to reject trailing characters after the closing quote on <code>nonce-source</code> and <code>hash-source</code> values. (<a href="https://commits.webkit.org/316008@main">316008@main</a>)  (180903857)</li>
<li>Fixed Content Security Policy <code>trusted-types</code> expressions to reject trailing characters after keywords and the wildcard. (<a href="https://commits.webkit.org/316089@main">316089@main</a>)  (180973793)</li>
</ul>
<h3>Storage</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed an issue where IndexedDB transactions could be blocked for an extended period before starting when another page&#8217;s transaction was suspended in the background. (<a href="https://commits.webkit.org/315609@main">315609@main</a>)  (178769599)</li>
</ul>
<h3>Web API</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the Async Clipboard API to request paste access asynchronously. (<a href="https://commits.webkit.org/315997@main">315997@main</a>)  (75969974)</li>
<li>Fixed Digital Credentials to surface <code>OperationError</code> for platform-cancellation and unknown errors instead of <code>AbortError</code> or <code>UnknownError</code>. (<a href="https://commits.webkit.org/315973@main">315973@main</a>)  (174308268)</li>
<li>Fixed Digital Credentials rejecting with the wrong error code and synchronously; rejections are now queued as a task with the correct error. (<a href="https://commits.webkit.org/315895@main">315895@main</a>)  (174895437)</li>
<li>Fixed <code>KeyboardEvent.getModifierState("AltGraph")</code> and <code>MouseEvent.getModifierState("AltGraph")</code> always returning <code>false</code>. (<a href="https://commits.webkit.org/315804@main">315804@main</a>)  (180597374)</li>
<li>Fixed <code>Credential.type</code> returning <code>"digital-credential"</code> instead of <code>"digital"</code> for digital credentials. (<a href="https://commits.webkit.org/315891@main">315891@main</a>)  (180618646)</li>
<li>Fixed aborting <code>navigator.credentials.get()</code> leaving the digital-credentials document picker stuck on screen. (<a href="https://commits.webkit.org/316494@main">316494@main</a>)  (180812397)</li>
<li>Fixed <code>FileReader.readAsText()</code> ignoring the <code>charset</code> parameter of the <code>Blob</code>&#8216;s MIME type. (<a href="https://commits.webkit.org/315996@main">315996@main</a>)  (180890703)</li>
</ul>
<h3>Web Inspector</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed showing ES2022 class private fields, methods, and accessors when inspecting object instances in the Console. (<a href="https://commits.webkit.org/316171@main">316171@main</a>)  (88527162)</li>
<li>Fixed symbolic breakpoints in the debugger so they work with intrinsic functions. (<a href="https://commits.webkit.org/315713@main">315713@main</a>)  (99037335)</li>
<li>Fixed a JavaScript breakpoint on a line containing only a semicolon not being triggered. (<a href="https://commits.webkit.org/316519@main">316519@main</a>)  (126707973)</li>
<li>Fixed the Console REPL to allow redefinition of variables declared with <code>let</code> and <code>const</code>. (<a href="https://commits.webkit.org/316523@main">316523@main</a>)  (143140659)</li>
<li>Fixed the Timeline exporting and importing the wrong timestamp for <code>performance.mark()</code> records. (<a href="https://commits.webkit.org/316073@main">316073@main</a>)  (145226764)</li>
<li>Fixed local response overrides mapped to a file being interpreted as Latin-1 (ISO-8859-1) instead of their actual encoding. (<a href="https://commits.webkit.org/316074@main">316074@main</a>)  (149847746)</li>
<li>Fixed the Media Logging setting not persisting across page loads. (<a href="https://commits.webkit.org/315758@main">315758@main</a>)  (154766890)</li>
<li>Fixed symbolic breakpoints to work with native constructors such as <code>Array</code>, <code>Date</code>, <code>EventTarget</code>, and <code>Worker</code>. (<a href="https://commits.webkit.org/316262@main">316262@main</a>)  (157178256)</li>
<li>Fixed missing stack traces for MIME type errors when importing modules. (<a href="https://commits.webkit.org/316529@main">316529@main</a>)  (169396940)</li>
<li>Fixed the Accessibility sidebar being empty for nodes inside cross-origin iframes. (<a href="https://commits.webkit.org/316399@main">316399@main</a>)  (178562336)</li>
<li>Fixed inline style invalidation to batch <code>DOM.getAttributes</code> commands per tick in cross-origin iframes instead of issuing one command per node. (<a href="https://commits.webkit.org/316487@main">316487@main</a>)  (178830496)</li>
<li>Fixed DOM Storage read and write commands to resolve against the frame&#8217;s own origin in cross-origin iframes. (<a href="https://commits.webkit.org/316501@main">316501@main</a>)  (179249711)</li>
<li>Fixed a moved breakpoint reverting to its original location after closing and reopening Web Inspector. (<a href="https://commits.webkit.org/315585@main">315585@main</a>)  (180083858)</li>
<li>Fixed showing the formatted parameters string for prototype objects such as <code>Map.prototype</code>. (<a href="https://commits.webkit.org/315599@main">315599@main</a>)  (180298712)</li>
<li>Fixed missing formatted parameter strings for object shorthand methods and arrow functions. (<a href="https://commits.webkit.org/315723@main">315723@main</a>)  (180466459)</li>
<li>Fixed an unnecessary colon appearing in front of non-class function properties. (<a href="https://commits.webkit.org/315731@main">315731@main</a>)  (180476445)</li>
<li>Fixed a self-canceling ternary that produced an incorrect cross-axis direction in the flex overlay. (<a href="https://commits.webkit.org/316429@main">316429@main</a>)  (181198803)</li>
<li>Fixed the color picker force-converting picked colors to Display P3. (<a href="https://commits.webkit.org/316419@main">316419@main</a>)  (181201503)</li>
<li>Fixed <code>Page.searchInResources</code> silently omitting cache-backed resources from search results. (<a href="https://commits.webkit.org/316421@main">316421@main</a>)  (181202027)</li>
<li>Fixed duplicate invalid CSS declarations both incorrectly displaying as Active in the Styles sidebar. (<a href="https://commits.webkit.org/316418@main">316418@main</a>)  (181203080)</li>
<li>Fixed adopted constructable stylesheets being misclassified as User Agent stylesheets in cross-origin iframes. (<a href="https://commits.webkit.org/316433@main">316433@main</a>)  (181204768)</li>
<li>Fixed an unsigned underflow that caused the DOM agent to spuriously report power-efficient playback. (<a href="https://commits.webkit.org/316443@main">316443@main</a>)  (181205602)</li>
<li>Fixed <code>Network.setExtraHTTPHeaders</code> to replace previously set headers instead of accumulating them. (<a href="https://commits.webkit.org/316444@main">316444@main</a>)  (181282814)</li>
</ul>
<h3>WebDriver</h3>
<h4>New Features</h4>
<ul>
<li>Added WebDriver support for the Digital Credentials API, including commands to simulate wallet payloads, indefinite waits, and user rejection. (<a href="https://commits.webkit.org/316435@main">316435@main</a>)  (168941907)</li>
</ul>
<h3>WebRTC</h3>
<h4>Resolved Issues</h4>
<ul>
<li>Fixed the WebProcess <code>AudioSession</code> to remain active while microphone capture is live. (<a href="https://commits.webkit.org/316394@main">316394@main</a>)  (180505014)</li>
<li>Fixed the <code>configurationchange</code> event being dropped when a source-side change occurred while a <code>MediaStreamTrack</code> was muted; the event is now deferred until unmute. (<a href="https://commits.webkit.org/316301@main">316301@main</a>)  (180728609)</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>