Apple has released Safari Technology Preview 247, the latest version of its developer preview web browser. The preview version of Apple’s popular browser offers developers and other interested users the ability to try out features that may or may not, debut in future public release versions of Safari.
Safari Technology Preview 247 adds the Safari Model Context Protocol (MCP) server meant to speed up web development and debugging. With the MCP server, an AI agent can emulate what users experience on a website, providing better information for debugging.
Any MCP-compatible client can connect to the Safari MCP server. More information is available on Apple’s WebKit site.
Safari Technology Preview 247 also includes fixes and updates for Accessibility, CSS, Fonts, Forms, HTML, JavaScript, MathML, Media, Model Element, Networking, Rendering, SVG, Scrolling, Security, Spatial Web, Text, Web API, WebDriver, and WebGL.
The current Safari Technology Preview release is compatible with machines running macOS Sequoia and macOS Tahoe, the newest version of macOS that launched earlier this year.
The update is available through the Software Update mechanism in System Preferences or System Settings to anyone who has downloaded the browser from Apple’s website.
Overview
Safari Technology Preview Release 247 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: 314716@main…315846@main.
Accessibility
Resolved Issues
- Fixed VoiceOver jumping to the top of the page when navigating to an element that immediately becomes accessibility-ignored via JavaScript. (315078@main) (179065364)
- Fixed VoiceOver reporting the Recent Events table on parks.wa.gov as empty. (314901@main) (179156593)
- Fixed VoiceOver not exposing
aria-actionscustom actions when the action target is accessibility-ignored. (315097@main) (179286650)- Fixed an
<a>element with a click handler but nohrefnot being exposed as a link. (315102@main) (179398579)CSS
New Features
- Added support for
calc-mix(). (314719@main) (176199063)Resolved Issues
- Fixed scroll overcompensation of fixed, nested anchor-positioned elements, so they no longer lose their position when scrolling. (314757@main) (174010503)
- Fixed an issue where
font-synthesisincorrectly applied synthetic oblique to variable fonts declared with@font-face. (314814@main) (178698772)- Fixed synthetic bold not being applied for a variable font whose
@font-facefont-weightdescriptor explicitly restricts it tonormal. (314537@main) (179001275)- Fixed an issue where CSS math functions produced an incorrect signed zero for subtraction,
min(),max(),clamp(), andmod(). (315188@main) (179534440)- Fixed an issue where
input[type=hidden]was not set todisplay: none !importantin the user-agent stylesheet. (315559@main) (180137214)Fonts
Resolved Issues
- Fixed an issue where synthetic bold incorrectly added advance width to zero-advance glyphs. (315157@main) (179418570)
Forms
Resolved Issues
- Fixed an issue where a positive
margin-topon a<legend>element inside a<fieldset>did not shift the fieldset down. (315391@main) (141267953)HTML
Resolved Issues
- Fixed an issue where
<link rel=preload as=json>incorrectly triggered a preload. (315422@main) (179843455)- Fixed an issue where the deprecated
align="center"attribute was not treated as identical toalign="middle"per spec. (315531@main) (180128710)JavaScript
Resolved Issues
- Fixed an issue where
Temporaloperations were not aligned with the spec’s abstract operations. (315377@main) (179844859).Instant MathML
New Features
- Added support for embellished operator detection through
mrowfor underover layout. (314924@main) (173192995)Resolved Issues
- Fixed MathML operators routed through
Mathbeing invisible when their glyph only exists in a fallback font. (314928@main) (178096170)Operator - Fixed MathML to use MathML Core fallback values for script layout constants. (315004@main) (179177178)
Media
New Features
- Added support for overriding color space for hardware video decoders in WebCodecs. (314887@main) (178717498)
- Added support for mapping
nextslideandpreviousslideMediaSession actions tonexttrackandprevioustrackplatform commands, so pressing next/previous track invokes a registered slide handler when no direct track handler is registered. (314839@main) (178744268)Resolved Issues
- Fixed media controls not appearing when tapping videos in the LinkedIn feed on iPad. (315049@main) (171231918)
- Fixed an issue where the
Mediatext-track removal loop always processed only the last track. (315310@main) (179508398)Source - Fixed an issue where
istestedValid Video Frame Buffer Init() displayandWidth displaypresence against themselves instead of the correct properties. (315401@main) (179514279)Height - Fixed an issue where
MediaartworkMetadata sizesparsing read the wrong substring for the height value. (315402@main) (179523057)- Fixed an issue where the
picturegetter inverted the shadow-host connectivity check. (315403@main) (179675087)In Picture Element Model Element
Resolved Issues
- Fixed setting the
entityon aTransform <model>element while the model is unloaded or hidden. (314951@main) (179114750)- Fixed
<model>elements losing gesture interactivity after the model player is reloaded (for example, when the model scrolls out of and back into the viewport). (315026@main) (179249565)Networking
Resolved Issues
- Fixed an issue where WebKit refused to load valid ASCII domains starting with
xn--that did not pass strict IDNA 2008 validation, aligning behavior with the WHATWG URL Standard.xn--is the prefix of a punycode-encoded non-ASCII domain. (314820@main) (177686282)- Fixed an issue where arbitrary
Content-*headers from304responses were not used to update cached entries. (315449@main) (179864251)- Fixed an issue where the
Cache-Controlrequest directivesmax-age,min-fresh, andno-storewere not honored. (315447@main) (179865576)- Fixed an issue where
Cache-Control: publicwas not honored on responses with unknown status codes. (315445@main) (179870099)- Fixed an issue where the HTTP cache did not store responses with explicit freshness for all status codes. (315450@main) (179871690)
Rendering
Resolved Issues
- Fixed
text-wrap: balancenot being applied to content with-webkit-line-clamp. (314783@main) (172715503)- Fixed an issue where text changes that did not modify the text element’s size in a flex layout on a new compositing layer did not trigger re-rendering. (315173@main) (179292409)
- Fixed an issue where an underline was drawn twice on
<sup>elements. (315220@main) (179537119)- Fixed an issue where an underline under a
<sup>element was offset by one device pixel from the rest of the line on subpixel displays. (315316@main) (179586525)- Fixed an issue where the
exunit intext-box-edgemisplaced the propagated underline, causing it to be painted twice. (315331@main) (179769451)- Fixed an issue where
min-widthwas not honored overmax-widthwhen sizing a shrink-to-fit container around a replaced element. (315396@main) (179935558)SVG
Resolved Issues
- Fixed SVG applying
text-decorationto elements withdisplay: contents. (314830@main) (85691104)- Fixed SVG
<text>withtextscaling each glyph separately whenLength xoryis a list. (315146@main) (94161279)- Fixed an issue where
box-shadowwas not drawn on fixed-positioned SVG elements. (315468@main) (97098951)- 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. (315329@main) (177482001)
- Fixed
Intersectionnot computing intersections for SVG element roots. (314837@main) (177807041)Observer - Fixed SVG vertical
<text>to honor the CSStext-orientationproperty instead of only the deprecatedglyph-orientation-verticalpresentation attribute. (315080@main) (178044217)- Fixed an issue where
getreturned approximately 360° instead of 0° for full-turn rotations after normalisation into the [0°, 360°) range. (315293@main) (178044934)Rotation Of Char() - Fixed an issue where a non-BMP character before a
<tspan>boundary shifted thexandyvalue lists by one position. (315418@main) (178360036)- Fixed interpolation of arc flags in the
dproperty to treat them as non-zero booleans. (314745@main) (178950624)- Fixed
pathto honorFrom Ellipse Element autovalues forrxandry, so APIs such asgetreturn the correct length for ellipses. (314846@main) (178959205)Total Length() - Fixed animated GIFs freezing when presentation attributes are changed on an SVG image referenced by a
<use>element. (315094@main) (179414226)- Fixed an issue where
geton an SVGBounding Client Rect() <tspan>element returned the bounds of the entire<text>element instead of the<tspan>’s own area. (315234@main) (179626476)- Fixed an issue where a nested
clip-pathon a<clipelement ignored css zoom. (315562@main) (180162723)Path> Scrolling
Resolved Issues
- Fixed an issue where
scrollwithInto View nearestalignment incorrectly aligned to the far edge for an oversized target positioned before the scrollport. (315225@main) (106356373)- Fixed a regression on macOS 26 where horizontal rubber-banding interfered with vertical scrolling. (315424@main) (165449829)
- Fixed an issue where scroll snapping selected a snap point that overshot the destination instead of the closest one in the scroll direction. (315522@main) (179549119)
- Fixed an issue where interrupting a smooth scroll with a new
scrollcall to a different target fired theTo() scrollendevent at the wrong position. (315471@main) (179551854)- 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. (315291@main) (179553122)
Security
Resolved Issues
- Fixed an issue where Content Security Policy
'self'did not match script sources in opaque-origin HTTP(S) documents. (314912@main) (178638597)- Fixed an issue where Content Security Policy incorrectly applied
script-srcto JSON module imports instead ofconnect-src. (315497@main) (180006320)Spatial Web
Known Issues
- WebXR might not render when you use Simulator. (178666073)
Workaround: Use an Apple Vision Pro device instead of Simulator.
Resolved Issues
- Fixed an issue where transforming the camera instead of the model in a
<model>element led to undesirable lighting effects. (312407@main) (179522538)Deprecations
- Removed the Spatial Backdrop developer preview in favor of the Immersive API. (315100@main) (160271766)
Text
Resolved Issues
- Fixed a line break appearing after a U+201D Right Double Quotation Mark. (314829@main) (177952069)
Web API
Resolved Issues
- Fixed an issue where the URL Pattern tokenizer emitted a spurious zero-length
Regexptoken for empty regexp groups. (315289@main) (179452346)WebDriver
New Features
- Allow your agent to connect to a Safari browser for development and debugging via the Safari MCP server. (176038457)
Resolved Issues
- Fixed an issue where the WebDriver full page screenshot was clipped to the viewport dimensions instead of the full page. (315337@main) (179840186)
WebGL
Resolved Issues
- Fixed a regression where a WebGL canvas was filled with opaque content that hid stacked canvases beneath it. (315018@main) (175352260)
Apple’s aim with Safari Technology Preview is to gather feedback from developers and users on its browser development process. Safari Technology Preview can run side-by-side with the existing Safari browser and while it is designed for developers, it does not require a developer account to download and use.