Release Notes for Safari Technology Preview 248

Release Notes for Safari Technology Preview 248

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.

Safari Technology Preview

available for download

This release includes WebKit changes between: 315567@main…316817@main.

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)

315964@main

Fixed stale aria-labelledby when the referenced element dynamically changes its aria-label. (316316@main) (180319221)

316316@main

CSS

New Features

Added support for forwarding missing color components when interpolating between analogous color spaces. (315569@main) (180239320)

315569@main

Added support for the no-clamp option on the CSS progress() function. (315977@main) (180473472)

315977@main

Resolved Issues

Fixed serialization of various CSS at-rules not escaping identifiers. (315795@main) (178750383)

315795@main

Fixed :last-child and related selectors incorrectly gating on parser state outside of style resolution. (316495@main) (178879939)

316495@main

Fixed changing the color-scheme of an <iframe> not invalidating the appearance of the embedded document. (316467@main) (179177141)

316467@main

Fixed CSS scroll snap re-snap to prefer the fragment-targeted (:target) snap area over other aligned snap targets. (315880@main) (180108825)

315880@main

Fixed the CSS preload scanner failing to preload @import rules that follow an @layer statement rule. (315576@main) (180170656)

315576@main

Fixed serialization of CSSViewTransitionRule. (315614@main) (180170814)

315614@main

Fixed MediaList.deleteMedium() to parse its argument as a media query and remove all matching queries. (315579@main) (180270019)

315579@main

Fixed MediaList.appendMedium() to parse its argument as a single media query and suppress duplicates. (315594@main) (180291283)

315594@main

Fixed grid items with stretch or fit-content preferred sizes computing incorrect minimum-content contributions when sizing tracks. (316296@main) (180748205)

316296@main

Fixed inserting a CSS rule while a view transition is active causing the group animation to snap to its final state. (316436@main) (181100818)

316436@main

Fixed CSS var() to only resolve its fallback when the first argument resolves to the guaranteed-invalid value. (316280@main) (181114298)

316280@main

Fixed navigating away from a render-blocked document before its first rendering opportunity incorrectly firing pagereveal and starting an outbound cross-document view transition. (316446@main) (181191512)

316446@main

Editing

Resolved Issues

Fixed drag images of DOM elements with CSS transforms not rendering correctly. (316077@main) (99614217)

316077@main

Fixed opaque DOM mutations coming from dictation on iOS. (316049@main) (163454428)

316049@main

Fixed deletion in an editable table leaving an empty trailing table row behind. (315990@main) (180877315)

315990@main

Fixed vertical caret movement in editable content ignoring the requested editable-type parameter. (316241@main) (181000174)

316241@main

Forms

Resolved Issues

Fixed the concentric inner-button corner radius on horizontal text form controls incorrectly ignoring the bottom inset. (316022@main) (180869927)

316022@main

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)

316069@main

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)

316405@main

JavaScript

New Features

Added support for the TC39 BigInt Math proposal, exposing Math-equivalent methods on BigInt such as BigInt.pow and BigInt.sqrt. (315974@main) (152472996)

315974@main

Media

Resolved Issues

Fixed <audio> and <video> controls rendering incorrectly when rotated via CSS transform. (315718@main) (37516619)

315718@main

Fixed subtitles and closed captions not appearing in fullscreen video on iPhone. (315789@main) (175298523)

315789@main

Fixed ArrayBuffer-backed YUV VideoFrame with a visibleRect rendering with offset chroma channels. (315742@main) (180202939)

315742@main

Fixed video playback of streams from certain sources such as security cameras not working. (315774@main) (180411019)

315774@main

Fixed transient device rotation resulting in captured video frames having the wrong orientation. (315821@main) (180429147)

315821@main

Fixed Media Source Extensions playback and seek by loosening the gap tolerance between buffered ranges. (316146@main) (180439090)

316146@main

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)

316001@main

Networking

Resolved Issues

Fixed URL path separators being encoded as %2F following a percent-encoded Armenian path segment. (315627@main) (180067095)

315627@main

Rendering

Resolved Issues

Fixed the background of a composited <html> element not being repainted when the <body> background changed. (316415@main) (177975964)

316415@main

Fixed a regression where block-axis padding on a flex column container with overflow: auto was excluded from scrollHeight. (315813@main) (179376053)

315813@main

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)

315807@main

Fixed elements with filter: drop-shadow() not being fully repainted when a child is resized. (316450@main) (181284741)

316450@main

SVG

Resolved Issues

Fixed SVG SMIL length animations to reject invalid to, from, and by values such as those with leading whitespace. (315949@main) (118537155)

315949@main

Fixed Unicode text with complex scripts not rendering correctly along a curved <textPath>. (316144@main) (120284006)

316144@main

Fixed SVGLength.convertToSpecifiedUnits() failing when converting from px to %, em, or ex. (315953@main) (172056830)

315953@main

Fixed SVG geometry presentation attributes like cx, cy, r, rx, ry, x, y, width, and height being incorrectly applied to elements such as <g> on which they are not permitted. (315946@main) (175672111)

315946@main

Fixed an issue where the per-character rotate attribute was discarded on a <textPath>, so it now composes with the path tangent angle. (315786@main) (178044478)

315786@main

Fixed several SVG styling spec-compliance failures. (316174@main) (181052042)

316174@main

Fixed dynamic changes to orient and markerUnits on <marker> not repainting elements that reference it. (316350@main) (181106538)

316350@main

Fixed SVG SMIL number, integer-optional-integer, number-optional-number, and path animations to not apply when their from, to, or by values fail to parse. (316468@main) (181308150)

316468@main

Scrolling

Resolved Issues

Fixed CSS scroll snap points inside zero-sized elements not working correctly. (315948@main) (172863699)

315948@main

Fixed CSS scroll snap re-snap to prefer a snap area that contains the focused or fragment-targeted element. (315927@main) (180707984)

315927@main

Security

Resolved Issues

Fixed a regression where some websites failed to display and logged Content Security Policy errors in the console. (316290@main) (179684592)

316290@main

Fixed same-page navigations being incorrectly checked against Content Security Policy. (315759@main) (180342503)

315759@main

Fixed Content Security Policy frame-ancestors violations in report-only policies being ignored instead of reported. (315753@main) (180447621)

315753@main

Fixed Content Security Policy parsing to reject trailing characters after the closing quote on nonce-source and hash-source values. (316008@main) (180903857)

316008@main

Fixed Content Security Policy trusted-types expressions to reject trailing characters after keywords and the wildcard. (316089@main) (180973793)

316089@main

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)

315609@main

Web API

Resolved Issues

Fixed the Async Clipboard API to request paste access asynchronously. (315997@main) (75969974)

315997@main

Fixed Digital Credentials to surface OperationError for platform-cancellation and unknown errors instead of AbortError or UnknownError. (315973@main) (174308268)

315973@main

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)

315895@main

Fixed KeyboardEvent.getModifierState("AltGraph") and MouseEvent.getModifierState("AltGraph") always returning false. (315804@main) (180597374)

315804@main

Fixed Credential.type returning "digital-credential" instead of "digital" for digital credentials. (315891@main) (180618646)

315891@main

Fixed aborting navigator.credentials.get() leaving the digital-credentials document picker stuck on screen. (316494@main) (180812397)

316494@main

Fixed FileReader.readAsText() ignoring the charset parameter of the Blob‘s MIME type. (315996@main) (180890703)

315996@main

Web Inspector

Resolved Issues

Fixed showing ES2022 class private fields, methods, and accessors when inspecting object instances in the Console. (316171@main) (88527162)

316171@main

Fixed symbolic breakpoints in the debugger so they work with intrinsic functions. (315713@main) (99037335)

315713@main

Fixed a JavaScript breakpoint on a line containing only a semicolon not being triggered. (316519@main) (126707973)

316519@main

Fixed the Console REPL to allow redefinition of variables declared with let and const. (316523@main) (143140659)

316523@main

Fixed the Timeline exporting and importing the wrong timestamp for performance.mark() records. (316073@main) (145226764)

316073@main

Fixed local response overrides mapped to a file being interpreted as Latin-1 (ISO-8859-1) instead of their actual encoding. (316074@main) (149847746)

316074@main

Fixed the Media Logging setting not persisting across page loads. (315758@main) (154766890)

315758@main

Fixed symbolic breakpoints to work with native constructors such as Array, Date, EventTarget, and Worker. (316262@main) (157178256)

316262@main

Fixed missing stack traces for MIME type errors when importing modules. (316529@main) (169396940)

316529@main

Fixed the Accessibility sidebar being empty for nodes inside cross-origin iframes. (316399@main) (178562336)

316399@main

Fixed inline style invalidation to batch DOM.getAttributes commands per tick in cross-origin iframes instead of issuing one command per node. (316487@main) (178830496)

316487@main

Fixed DOM Storage read and write commands to resolve against the frame’s own origin in cross-origin iframes. (316501@main) (179249711)

316501@main

Fixed a moved breakpoint reverting to its original location after closing and reopening Web Inspector. (315585@main) (180083858)

315585@main

Fixed showing the formatted parameters string for prototype objects such as Map.prototype. (315599@main) (180298712)

315599@main

Fixed missing formatted parameter strings for object shorthand methods and arrow functions. (315723@main) (180466459)

315723@main

Fixed an unnecessary colon appearing in front of non-class function properties. (315731@main) (180476445)

315731@main

Fixed a self-canceling ternary that produced an incorrect cross-axis direction in the flex overlay. (316429@main) (181198803)

316429@main

Fixed the color picker force-converting picked colors to Display P3. (316419@main) (181201503)

316419@main

Fixed Page.searchInResources silently omitting cache-backed resources from search results. (316421@main) (181202027)

316421@main

Fixed duplicate invalid CSS declarations both incorrectly displaying as Active in the Styles sidebar. (316418@main) (181203080)

316418@main

Fixed adopted constructable stylesheets being misclassified as User Agent stylesheets in cross-origin iframes. (316433@main) (181204768)

316433@main

Fixed an unsigned underflow that caused the DOM agent to spuriously report power-efficient playback. (316443@main) (181205602)

316443@main

Fixed Network.setExtraHTTPHeaders to replace previously set headers instead of accumulating them. (316444@main) (181282814)

316444@main

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)

316435@main

WebRTC

Resolved Issues

Fixed the WebProcess AudioSession to remain active while microphone capture is live. (316394@main) (180505014)

316394@main

Fixed the configurationchange event being dropped when a source-side change occurred while a MediaStreamTrack was muted; the event is now deferred until unmute. (316301@main) (180728609)

316301@main