Safari 17.4 Release Notes
Released March 5, 2024 — 17.4 (19618.1.15)
Overview
Safari 17.4 is available for iOS 17.4, iPadOS 17.4, visionOS 1.1, macOS Sonoma, macOS Monterey, and macOS Ventura.
Accessibility
New Features
Added support for the new CSS
contentalternative text syntax. (26942023)
Resolved Issues
Fixed exposing the correct
<summary>element role. (13661104)Fixed non-accessible content within iframes with ARIA roles. (104611075)
Fixed VoiceOver word echo on text inputs with a
comboboxrole. (112488137)Fixed an issue where
innerHTMLandinnerTextchanges to labels did not update their corresponding input element’s accessibility title. (113872525)Fixed
<details>and<summary>elements not included in VoiceOver form controls menu or list. (117308226)Fixed comboboxes not notifying assistive technologies when
aria-activedescendantchanges. (117747058)Fixed toggling accessibility preferences to correctly update form control appearance. (117914468)
Fixed: Removed the default ARIA-level heading for a heading role, matching removal from ARIA specifications. (119059172)
Fixed text missing from accessibility labels for many common shadow DOM scenarios. (120223342)
AutoFill
New Features
Added support for Apple Cash virtual card numbers and showing the user their Apple Cash balance when using AutoFill. (107634154)
Browser Changes
New Features
Added support for webpage translation in
<iframe>elements. (99293324)Added support for hiding titles in the Favorites Bar. (119145918)
Resolved Issues
Fixed loading a ⌘Click fragment link in a background tab. (119079650)
CSS
New Features
Added support for
@scope. (82359096)Added support for percentages in
letter-spacingandword-spacing. (114538918)Added support for
align-contenton block containers. (114740670)Added support for invalidating
:any-link,:link, and:-webkit-any-linkinside:has(). (116616425)Added the
white-space-collapseandtext-wrap-modeCSS properties. (117248327)Added support for CSS custom properties of
::backdrop. (117949961)Added support for
::grammar-errorand::spelling-error(119314048)Added support for
align-contenton table cells. (119701629)
Resolved Issues
Fixed the default link color contrast for the dark color scheme. (61149466)
Fixed
getComputedStyle()for invalid pseudo-elements. (98504661)Fixed
querySelector()to not throw an exception for-webkit-prefixed pseudo-elements. (99299129)Fixed
:user-invalidtriggering while typing a date. (110687369)Fixed: Updated
text-transform: full-size-kanato align with Unicode 15. (111508663)Fixed
contain: inline-sizebreakinggrid-template-rows: auto. (113915953)Fixed
svhanddvhunits being unexpectedly equal when the Safari tab bar is not visible. (115085360)Fixed
mixed-blend-modeto blend correctly against the root background. (115688282)Fixed
backdrop-filterwith many interoperability improvements. (115703346)Fixed
oklabandoklchlightness value clamping. (116195533)Fixed flex layout invalidation in cases where the content of a flex item changes or style changes impact the preferred widths computation of its items. (117181858)
Fixed selection gaps to get painted with the expected
::selectionpseudo-element color. (117796745)Fixed parsing and serialization of
-webkit-prefixed pseudo-elements. (118081134)Fixed
::backdropto be allowed after::slotted(). (119015204)Fixed to allow
:checkedand:indeterminateto match at the same time. (119075969)Fixed grid with size containment and
min-heightnot sizing row correctly. (119736473)Fixed computing values of basic shape
rect()andxywh()as the equivalentinset(). (119739406)Fixed poor performance with
:has(+ :not(.class))pseudo-class selector. (119819247)Fixed CSS
contentcomputed value serialization. (120061551)Fixed pseudo-element parsing in
getComputedStyle()andKeyframeEffect.prototype.pseudoElementso they require them starting with::(or:for 4 legacy pseudo-elements). (120170550)Fixed CSS
linear()easing. (120290721)Fixed named at-rule container getting skipped when the container is named in a
:hostselector. (120428386)Fixed
:not(:has(:not(foo)))getting misclassified as scope breaking. (120492012)Fixed the name for a
::slottedpseudo-element in a container query getting resolved against the wrong scope. (122224135)
Deprecations
Made
-apple-prefixed pseudo-elements no longer valid. (120268884)
Forms
New Features
Added support for vertical writing mode support for form controls. (12072686)
Added support for
<hr>inside<select>rendered as a separator on iOS. (108783915)Added support for the
showPicker()method for<input type="date">on macOS. (110099910)Added support for
<input type="checkbox" switch>. (119378678)
Resolved Issues
Fixed
<select>not refreshing the dropdown after an<option>is removed on iPad. (88292987)Fixed
text-indentto affect the selected file(s) label for file inputs. (105223868)Fixed
dir=autoto work forhidden,password,submit,reset, andbuttoninput types, madedirnamework forpasswordandsubmitinput types, and removeddirnamesupport fromnumberinput types. (113127508)Fixed serialization of
autocompletewith awebauthntoken. (116107937)Fixed
<option>elements outside of an<optgroup>getting added to the preceding group. (117930480)
Fullscreen
Resolved Issues
Fixed viewport units to be correct after entering and exiting fullscreen mode on iOS, iPadOS, and in visionOS. (120496571)
HTML
Resolved Issues
Fixed the
system-uifont family within<canvas>. (117231545)Fixed
<progress>to use the page’s preferred rendering update interval. (118976548)Fixed missing support for the
directionattribute in the list of attributes whose values are matched case-insensitively with attribute selectors. (119432066)
JavaScript
New Features
Added support for
Promise.withResolvers. (116473362)Added
TimeZoneOffsetformat support toIntl.DateTimeFormat. (117124296)Aligned the implementation of the internal function IntlMathematicalValue (used in
Number.prototype.toLocaleString, andIntl.NumberFormat) with its current specification. (117535507)Enabled Array group methods. (118037635)
Added support for
ArrayBuffer.prototype.detached,ArrayBuffer.prototype.transfer, andArrayBuffer.prototype.transferToFixedLength. (118037759)
Resolved Issues
Fixed stringification algorithm of the Function constructor to match specifications. (102065151)
Fixed block-level function declarations to have correct scope in global code and aligned the detection of hoistable block-level legacy function declarations with the spec. (113880075)
Fixed an edge case with detecting a semantic error in generators. (117497786)
Fixed Temporal API to throw TypeErrors for unexpected primitives. (117992134)
Fixed Temporal options handling to align with the specification. (118088676)
Fixed
Temporal.Now.timeZone()to be updated totimeZoneId(). (118674314)
Loading
Resolved Issues
Fixed Link-stylesheet elements to not fire load events for non-text/css and non-2XX responses. (116112223)
Fixed link-stylesheet elements to not fire load events for non-2XX responses such as 3XX responses that do not redirect. (116331826)
Lockdown Mode
Resolved Issues
Fixed Lockdown Mode disabling on sites with COOP and COEP HTTP headers. (119503109)
Media
New Features
Added support for all of HTML’s character entities in WebVTT. (51064890)
Added support for VP8/VP9 and WebM on iOS and iPadOS. (64825245)
Added WebCodecs HEVC support. (112067287)
Added MediaStream support for
whiteBalanceMode. (115552800)Added support for the Vorbis audio codec on iOS, iPadOS, and in visionOS. (116776158)
Added prioritizing video sources with power efficient hardware-decoded codecs before software-decoded codecs. (120679553)
Resolved Issues
Fixed WebVTT regions to position according to specifications. (23091897)
Fixed pausing MediaRecorder continuing to call
ondataavailableat every timeslice event. (115979604)Fixed an HEVC decoder issue when translating annexb data. (116768196)
Fixed WebVTT to treat negative percentages as invalid values. (117615681)
Fixed
object-fit: fillon<video>elements. (118020922)Fixed WebRTC calls not unmuting automatically after using Siri sometimes losing incoming audio. (118461093)
Fixed white bars across the top and bottom of fullscreen video playback while using Light Mode. (118530255)
Fixed the always empty
video.bufferedattribute. (118550061)Fixed WebVTT to correctly parse region
idsettings. (118551267)Fixed VideoEncoder produces no frames with latencyMode “realtime” when framerate/bitrate are not given. (118725549)
Fixed AV1-in-MP4 codec string not shown in Show Media Stats. (118850797)
Fixed
getDisplayMediaframeRatealways at 30 regardless of constraints. (118874132)Fixed returning to fullscreen from picture-in-picture breaking subsequent touch input. (119832557)
Fixed HLS video captions where there are multiple text tracks available. (119839950)
Fixed fullscreen video not scaling to display size when the Safari window is in Full Screen App Mode. (119893556)
Fixed handling key renewal requests that cause playback errors for some DRM content. (120230860)
Fixed camera and mic activation failure due to media capability granting and activation order. (120510826)
Fixed paint-on captions shifting during playback. (120847946)
Fixed videos shifting up and down when fullscreen overlay controls appear or disappear. (120848395)
Fixed volume slider flickering when adjusting volume in Safari in visionOS. (120855936)
Fixed blocked encrypted sampled not getting enqueued after a CDM is attached to a SourceBuffer. (120879185)
Fixed video playback on Twitter.com in Safari in visionOS. (121391975)
Fixed Netflix.com content that can become zoomed-in and cropped when in fullscreen mode. (121822831)
Fixed pseudo-element font size calculation to fix subtitle size in fullscreen mode. (122584350)
Rendering
Resolved Issues
Fixed incorrectly oriented Traditional Mongolian script characters. (93426525)
Fixed resizing behavior with
writing-mode: vertical-rlordirection: rtl. (102620110)Fixed opacity and rendering the root element background image. (115396444)
Fixed the color of the drop shadow to preserve its alpha channel. (115812347)
Fixed filters with outsets to repaint the entire filterRegion if GraphicsStyles are used. (115817290)
Fixed compositing the filter style transparency layers to not clip the destination context. (115901634)
Fixed a bug where the returned transform from
getComputedStylewas incorrect. (117523629)Fixed handling images with color spaces not supported by the backend to fallback to render in sRGB. (118238178)
Fixed check boxes and radio buttons to avoid floats. (118660695)
Fixed rendering for a
<div>within a transformed parent<div>withoverflow: hidden. (118901069)Fixed rendering issues when editing text. (119833765)
Fixed
offsetHeightandoffsetWidthare 0 for an inline box wrapping a block. (119955792)Fixed a floating element causing a list item bullet to be orphaned on constrained lines. (120022893)
Fixed incorrect inline box (hugging) outline painting in vertical writing modes. (120217559)
Fixed incorrect
chunit value invertical-rlandvertical-lrwhentext-orientationis not upright. (120293590)Fixed graphics artifacts when scrolling a Heroku app. (120373474)
Fixed
overflow: hiddento not prevent CSS Subgrid from applying. (120848131)Fixed the repaint area for underline text decorations. (121082290)
Fixed
align-contentandjustify-contenton scroll containers causing overflowing content to become inaccessible. (121366949)Fixed rendering floats and an out-of-flow
<br>element withclear. (121444267)Fixed a line break at gaps between two inline elements in a container with
white-space: nowrap. (121859917)Fixed cropped first letter for custom fonts that report negative advance width. (121891210)
Deprecations
Removed
margin-trimbehavior for floats to match specification changes. (115794102)
Safari Extensions
New Features
Extensions that haven’t been granted permission to Private Browsing can now open Private Browsing windows. (105983371)
Resolved Issues
Fixed sending an error back to the caller if an error occurs for
scripting.executeScript(). (107996753)Fixed an issue where scripts may not be removed after calling
scripting.unregisterContentScripts(). (113171510)
Scrolling
Resolved Issues
Fixed unusable horizontal scrollbars for right-to-left,
vertical-rl, or flexbox reverse mode elements. (104944522)Fixed a
scrollTo()followed by an animated scroll ending at the wrong scroll position. (117608836)Fixed wheel overflow behavior with Shadow DOM elements. (118496293)
Fixed keyboard scrolling beyond the page getting stuck at a bad scroll offset. (120053910)
Storage
Resolved Issues
Fixed cases where website data is unexpectedly evicted. (119818267)
SVG
New Features
Added support for
kernelUnitLengthXandkernelUnitLengthYfor SVGFESpecularLightingElement. (118768259)
Resolved Issues
Fixed applying
rxorryexclusively via CSS having no effect. (113500023)Fixed negative SVGTransform scale values to be correctly stringified. (118656892)
Fixed the layout of an SVG when it is inside an
<iframe>without affecting the size of the<iframe>. (120178866)
Deprecations
Removed support for SVGRenderingIntent. (102516681)
URLs
Resolved Issues
Fixed CSS invoked URL parsing to always use UTF-8 as agreed by the W3C CSS WG. (114889625)
Web Animations
New Features
Added support for
transition-behavior: allow-discrete. (108703206)
Resolved Issues
Fixed style invalidation for animations. (118500247)
Fixed a paused animation where
currentTimeis changed to 0 not restarting when unpaused. (118826588)
Web API
New Features
Added
Element.prototype.setHTMLUnsafe(),ShadowRoot.prototype.setHTMLUnsafe(), andDocument.parseHTMLUnsafe()methods. (115345128)Added
scaleNonUniformin DOMMatrixReadOnly. (117875678)Added support for
AbortSignal.any(). (117985827)Added support for
element.checkVisibility(). (118157977)Added ShadowRoot
clonableproperty. (119707278)Added support for CustomStateSet in custom elements and
:state()pseudo-class. (120072599)
Resolved Issues
Fixed invalid coordinates on
wheelandgesturechangeevents inside an iframe. (105243167)Fixed HTMLAreaElement to align with the HTML Standard. (110028213)
Fixed the result of
Range.getClientRects()andRange.getBoundingRect()for certain ranges. (112543805)Fixed Scroll To Text Fragment to not scroll after dynamic stylesheet loads and the user has scrolled. (112608578)
Fixed SharedWorker referrer policy to default to its context referrer policy if none is provided in its script http response. (114625126)
Fixed URL encoding for
Request’sreferrerfeature andResponse.redirect(). They now always use UTF-8. (115219660)Fixed reprocessing
<meta name="color-scheme">when theirnameorcontentattribute changes. (115958450)Fixed
FetchResponse.formData()to parse headers names as case insensitive. (116742000)Fixed declarative shadow trees to match the latest specifications. (117655691)
Fixed jiggling caused by repeated calls to
scrollIntoView({ block: 'center' }). (117755250)Fixed fullscreen warning banner to prevent cutting off long domain names. (118078137)
Fixed updating
resizeByandresizeToto useintrather thanfloatto align with specifications. (118872048)Fixed the CookieChangeEvent to not be exposed when the Cookie Store API is disabled. (118902989)
Fixed
Element.prototype.setAttributeNode()to not treat attribute names case insensitively. (119013600)Fixed toggling the
spellcheckattribute not toggling spelling markers on input elements. (119269616)Fixed removing highlights in the Custom Highlights API. (119531671)
Fixed
getElementsByName()to only return HTML elements, not SVG, MathML, or other types of elements. (120275680)Fixed the
buttonvalue for apointerupevent not matching thepointerdownevent. (120429508)Fixed a wheel event to fire on an element that has been re-inserted after
document.open. (120893136)Fixed Scroll To Text Fragment Text Directives to find text with additional unrendered white space in their node data. (120913588)
Fixed changing HTMLCanvasElement width or height causing intermediate buffer allocations. (122309325)
Fixed canvas
captureStreamstuttering with WebGL. (122471664)
Web Apps
New Features
Added support for the shortcuts manifest member on macOS. Shortcuts are available in the File menu and the Dock context menu. Users can set up custom keyboard shortcuts for them in System Settings > Keyboard > Keyboard Shortcuts > App Shortcuts. (106137954)
Added support for the categories manifest member on macOS. When creating a Launchpad folder containing web apps, the folder is automatically named accordingly. (116480550)
Web Assembly
New Features
Enabled extended constant expressions. (118190467)
Web Inspector
New Features
Added support for grouping source map load errors. (109239646)
Added support for logging a message to the Console when a page attempts to load a font URL blocked by Lockdown Mode. (114657783)
Resolved Issues
Fixed Home Screen Web Apps in Simulator to be listed under a “Home Screen Web Apps” section in the device submenu of the Develop menu. (117742935)
Fixed the
tan()function to not trigger the color picker. (118724061)
WebAuthn
New Features
Added support for
getClientCapabilities(). (119058559)
WebGL
New Features
Added support for new WebGL extensions:
EXT_clip_controlEXT_depth_clampEXT_polygon_offset_clampWEBGL_polygon_mode(118110035)
Resolved Issues
Fixed Canvas WebGL context capture to WebCodecsVideoFrame not capturing all frames. (108459224)
Fixed: Improved performance of MSAA rendering, including antialiased default framebuffer and fixed PBO uploads of PVRTC1 textures. (117461678)
Fixed WebGL OffscreenCanvas returning the previously created WebGL1 context when asking for WebGL2. (119028794)
Fixed WebGL to be available in nested workers. (120279728)
WebKit
Resolved Issues
Fixed HTML content not displaying in a Simulator, affecting projects using the web extension project template. (121338366)
WebRTC
Resolved Issues
Fixed media tracks obtained with
{"width":1920,"height":1080,"frameRate":24}. (61747755)Fixed triggering resolution scaling in the case of WebRTC maintain-framerate
degradationPreference. (121041723)Fixed a bug that prevented HTML canvas elements from always being marked dirty on initialization. This could cause some video effects to have choppy animations. (121257960)