<!--
{
  "documentType" : "article",
  "framework" : "Safari Technology Preview Release Notes",
  "identifier" : "/documentation/Safari-Technology-Preview-Release-Notes/stp-release-3",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Safari Technology Preview 3 Release Notes"
}
-->

# Safari Technology Preview 3 Release Notes

Preview the latest web technology updates including: JavaScript, CSS, Web APIs, Web Inspector, Rendering, Security, Networking, and Accessibility.

## Overview

[Safari Technology Preview](/blog/6017/introducing-safari-technology-preview/) Release 3 is now available for [download](https://developer.apple.com/safari/download/). If you already have Safari Technology Preview installed, you can update from the [Mac App Store’s Updates tab](macappstore://showUpdatesPage). Release 3 of Safari Technology Preview covers WebKit revisions [199086–199865](https://trac.webkit.org/log?action=follow_copy&mode=follow_copy&rev=199865&stop_rev=199086&limit=999).

### JavaScript

- Added support for `Symbol.isConcatSpreadable` per the ES6 spec ([r199397](https://trac.webkit.org/changeset/199397))
- Made `RegExp` constructor get the `Symbol.match` property to decide if an object should be constructed like a `RegExp` object per the ES6 spec ([r199106](https://trac.webkit.org/changeset/199106))
- Changed `String.match` and `String.search` to use `RegExp` constructor per the ES6 spec ([r199144](https://trac.webkit.org/changeset/199144))
- Corrected how function declarations are hoisted per the ES6 spec ([r199179](https://trac.webkit.org/changeset/199179))
- Improved parsing of ES6 arrow functions ([r199352](https://trac.webkit.org/changeset/199352))
- Added `RegExp.prototype[@@split]` and made `String.prototype.split` use it per the ES6 spec ([r199731](https://trac.webkit.org/changeset/199731))
- Added `RegExp.prototype[@@search]` ([r199748](https://trac.webkit.org/changeset/199748))
- Updated the treatment of invoking methods on `RegExp.prototype` per the ES6 spec ([r199545](https://trac.webkit.org/changeset/199545))
- Made more test cases pass with ES6 `RegExp` unicode flag ([r199523](https://trac.webkit.org/changeset/199523))
- Added support for caching accesses to `arguments.length` for a performance speed-up ([r199240](https://trac.webkit.org/changeset/199240))
- Corrected the behavior of `throw()` for generators yielding to an inner generator per draft ECMAScript spec ([r199652](https://trac.webkit.org/changeset/199652))

### CSS

- Implemented the functional `:host()` pseudo class ([r199291](https://trac.webkit.org/changeset/199291))
- Improved support for SVG cursor images ([r199625](https://trac.webkit.org/changeset/199625))
- Started using OpenType math fonts by default for MathML ([r199773](https://trac.webkit.org/changeset/199773))
- Fixed measurement of hanging punctuation ([r199777](https://trac.webkit.org/changeset/199777))
- Improved hyphenation when the last line in a paragraph only contains one syllable of a word ([r199818](https://trac.webkit.org/changeset/199818))
- Fixed a layout problem affecting CSS Grid items without a static inline position in RTL languages ([r199098](https://trac.webkit.org/changeset/199098))
- Fixed positioned items with gaps for CSS Grid ([r199223](https://trac.webkit.org/changeset/199223))
- Added support for CSS Grid `grid-template-columns` `repeat(auto-fill, …)` and `repeat(auto-fit, …)` ([r199343](https://trac.webkit.org/changeset/199343))
- Fixed positioned items with content alignment in CSS Grids ([r199657](https://trac.webkit.org/changeset/199657))
- Started using `grid-template-areas` to determine the explicit grid ([r199661](https://trac.webkit.org/changeset/199661))
- Corrected CSS Grid layout by using the margin box for non-auto minimum sizes ([r199728](https://trac.webkit.org/changeset/199728))

### Web APIs

- Added support setting and retrieving `Blob` values in IndexedDB ([r199120](https://trac.webkit.org/changeset/199120), [r199230](https://trac.webkit.org/changeset/199230), [r199499](https://trac.webkit.org/changeset/199499), [r199524](https://trac.webkit.org/changeset/199524), [r199708](https://trac.webkit.org/changeset/199708), [r199730](https://trac.webkit.org/changeset/199730))
- Corrected `MessageEvent.source` result once `window` has been fully created ([r199087](https://trac.webkit.org/changeset/199087))
- Improved stability when the first child of a shadow root is a comment node ([r199097](https://trac.webkit.org/changeset/199097))
- Made `CSS` be a proper constructor on the `window` object with static functions ([r199112](https://trac.webkit.org/changeset/199112))
- Exposed the `Crypto` constructor on the `window` object ([r199159](https://trac.webkit.org/changeset/199159))
- Added support for `display: contents` on `<slot>` elements ([r199151](https://trac.webkit.org/changeset/199151))
- Fixed `FontFace` so it will be properly reject the returned promise if Content Security Policy blocks all the URLs ([r199611](https://trac.webkit.org/changeset/199611))
- Made `FontFaceSet` handle null correctly ([r199216](https://trac.webkit.org/changeset/199216))
- Corrected `DOMTokenList.contains()` so it does not throw an exception ([r199296](https://trac.webkit.org/changeset/199296))
- Made `Selection.deleteFromDocument` not delete a character when the selection is a caret per the spec ([r199585](https://trac.webkit.org/changeset/199585))
- Improved the IndexedDB bindings to better match the spec ([r199750](https://trac.webkit.org/changeset/199750), [r199774](https://trac.webkit.org/changeset/199774))
- Made `AudioBufferSourceNode.buffer` nullable ([r199751](https://trac.webkit.org/changeset/199751))
- Improved stability handling a wheel event that closes a frame ([r199181](https://trac.webkit.org/changeset/199181))

### Web Inspector

- Made it possible to expand objects in the Instances heap snapshot view to see what it retains ([r199379](https://trac.webkit.org/changeset/199379))
- Improved performance dramatically in the Timelines tab when recording pages with a lot of rapid activity and for long recordings ([r199747](https://trac.webkit.org/changeset/199747))
- Improved JavaScript pretty printing performance by using Esprima and by no longer blocking the main thread ([r199168](https://trac.webkit.org/changeset/199168), [r199169](https://trac.webkit.org/changeset/199169))
- Improved the profiler’s sampling rate to get closer to a 1ms sample frequency ([r199092](https://trac.webkit.org/changeset/199092))
- Improved filtering in Open Quickly dialog ([r199143](https://trac.webkit.org/changeset/199143), [r199226](https://trac.webkit.org/changeset/199226))
- Made the Open Quickly dialog keep its resource list up to date ([r199207](https://trac.webkit.org/changeset/199207))
- Stopped trying to match color patterns in JavaScript source code to improve performance of large resources ([r199095](https://trac.webkit.org/changeset/199095))
- Changed take snapshot navigation button to a camera glyph ([r199177](https://trac.webkit.org/changeset/199177))
- Corrected source code location links in the JavaScript profile Call Trees view ([r199201](https://trac.webkit.org/changeset/199201))
- Made XHRs and Web Workers full-text searchable ([r199263](https://trac.webkit.org/changeset/199263))
- Improved the appearance of DOM nodes in object previews ([r199322](https://trac.webkit.org/changeset/199322))
- Improved the tab bar rendering when the tabs are small ([r199325](https://trac.webkit.org/changeset/199325))
- Corrected dock controls disappearing from the toolbar after leaving fullscreen ([r199395](https://trac.webkit.org/changeset/199395))
- Started remembering the zoom factor as a persistent setting across sessions ([r199396](https://trac.webkit.org/changeset/199396))
- Corrected `sourceMappingURL` not being used when `sourceURL` was also set ([r199688](https://trac.webkit.org/changeset/199688))
- Started localizing sizes and times by using `Number.prototype.toLocaleString` ([r199635](https://trac.webkit.org/changeset/199635))
- Made `sourceMappingURL` work more reliably across reloads ([r199852](https://trac.webkit.org/changeset/199852))

### Rendering

- Improved the time to display for some pages — allowing a short page header to render immediately before other content populates later ([r199155](https://trac.webkit.org/changeset/199155))
- Fixed page tile layers disappearing when graphics acceleration is unavailable ([r199130](https://trac.webkit.org/changeset/199130))
- Made `font-size: 0` render as 0 width when `text-rendering: optimizeLegibility` is used ([r199150](https://trac.webkit.org/changeset/199150))
- Corrected focus ring drawing at incorrect location on image map with a CSS transform ([r199247](https://trac.webkit.org/changeset/199247))
- Made negative `letter-spacing` affect the right edge of the content’s visual overflow ([r199516](https://trac.webkit.org/changeset/199516))
- Corrected compositing for WebGL based canvases after they changed size ([r199536](https://trac.webkit.org/changeset/199536))
- Started clearing the rendered icon on `<input type=file>` when an empty files list is set ([r199540](https://trac.webkit.org/changeset/199540))
- Improved performance of `border-collapse: collapse` on tables ([r199552](https://trac.webkit.org/changeset/199552))
- Improved rendering of `select[multiple]` to better match other browsers ([r199553](https://trac.webkit.org/changeset/199553))
- Fixed backdrop filter so it honors `visibility: hidden` ([r199862](https://trac.webkit.org/changeset/199862))

### Security

- Made nested browsing context created for `<object>` or `<embed>` respect Content Security Policy’s `object-src` directive ([r199527](https://trac.webkit.org/changeset/199527))
- Started ignoring Content Security Policy meta tags if it is not a descendent of `<head>` per the spec ([r199163](https://trac.webkit.org/changeset/199163))
- Started ignoring `report-only` Content Security Policy directives delivered via meta tag per the spec ([r199538](https://trac.webkit.org/changeset/199538))
- Started ignoring paths in Content Security Policy URL matching after redirects per spec ([r199612](https://trac.webkit.org/changeset/199612))
- Removed support for `X-Frame-Options` in `<meta>` per the spec ([r199696](https://trac.webkit.org/changeset/199696))

### Networking

- Stopped speculatively revalidating cached redirects ([r199521](https://trac.webkit.org/changeset/199521))
- Stopped cacheing responses with `Content-Range` headers to avoid serving incorrect results ([r199090](https://trac.webkit.org/changeset/199090))
- Fixed clearing the application cache when removing website data in Privacy preferences ([r199204](https://trac.webkit.org/changeset/199204))

### Accessibility

- Changed the `application` role description to “web application” to avoid confusion with the top-level system application description ([r199260](https://trac.webkit.org/changeset/199260))
- Made `presentation` role be preferred over child `<title>` and `<desc>` elements in SVG content ([r199588](https://trac.webkit.org/changeset/199588))

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)