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