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

# Safari Technology Preview 12 Release Notes

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

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 12 is now [available for download](https://webkit.org/downloads/) for both macOS Sierra betas and OS X El Capitan. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions [204289–204876](http://trac.webkit.org/log/?rev=204876&stop_rev=204289&limit=999).

This release of Safari Technology Preview will be the last that will install and run on OS X El Capitan 10.11.4 and 10.11.5. To continue testing or living on the latest enhancements to WebKit, please upgrade to OS X El Capitan 10.11.6 or the macOS Sierra betas.

### JavaScript

- Added checks for  `TypedArray.prototype.slice` to ensure the source and destination have not been detached ([r204868](https://trac.webkit.org/changeset/204868/))
- Added exception handling for `const` variables used in a `for-in` or `for-of` loop ([r204586](https://trac.webkit.org/changeset/204586/))
- Improved the performance of `Array.prototype.map` when used with Arrays ([r204488](https://trac.webkit.org/changeset/204488/))
- Implemented `Object.entries` and `Object.values` from the ES2017 specifications ([r204419](https://trac.webkit.org/changeset/204419/), [r204358](https://trac.webkit.org/changeset/204358/))
- Changed the `line`, `column` and `sourceURL` properties of `Error` to be configurable and writable ([r204663](https://trac.webkit.org/changeset/204663/))

### Web APIs

- Fetch API is enabled by default ([r204705](https://trac.webkit.org/changeset/204705/))
- Updated Resource Timing implementation ([r204736](https://trac.webkit.org/changeset/204736/), [r204641](https://trac.webkit.org/changeset/204641/), [r204429](https://trac.webkit.org/changeset/204429/))
- Aligned `Range.surroundContents()` with the latest DOM specification ([r204390](https://trac.webkit.org/changeset/204390/))
- Added support for `HTMLAreaElement.toString()` ([r204871](https://trac.webkit.org/changeset/204871/))
- Changed the `prefix` properties of `Attr` and `Element` to be read-only ([r204648](https://trac.webkit.org/changeset/204648/))
- Changed `<command>` to an `HTMLUnknownElement` and `<basefont>` to an `HTMLElement` ([r204647](https://trac.webkit.org/changeset/204647/))
- Moved the `prefix`, `namespaceURI`, and `localName` attributes from `Node` to `Attr` and `Element` ([r204624](https://trac.webkit.org/changeset/204624/))
- Aligned text encoding labels with the Encoding specification ([r204605](https://trac.webkit.org/changeset/204605/))
- Added `Animatable`, `AnimationEffect`, `KeyframeEffect` and `Animation` interfaces for Web Animations ([r204594](https://trac.webkit.org/changeset/204594/))
- Aligned `isDefaultNamespace()`, `lookupPrefix()`, and `lookupNamespaceURI()` with the specification ([r204536](https://trac.webkit.org/changeset/204536/))
- Changed `querySelector()` and  `querySelectorAll()` to always throw a `SyntaxError` when failing to parse a selector string ([r204522](https://trac.webkit.org/changeset/204522/))
- Moved `embeds`, `plugins`, and `scripts` attributes from `HTMLDocument` to `Document` ([r204450](https://trac.webkit.org/changeset/204450/))
- Moved the `compatMode` and `designMode` properties from `HTMLDocument` to `Document` ([r204451](https://trac.webkit.org/changeset/204451/), [r204449](https://trac.webkit.org/changeset/204449/))
- Updated `getElementsByTagName()` to take a qualified name parameter ([r204441](https://trac.webkit.org/changeset/204441/))
- Exposed `crypto.getRandomValues` to Web Workers ([r204481](https://trac.webkit.org/changeset/204481/))
- Added application/vnd.api+json as a valid JSON MIME-type ([r204437](https://trac.webkit.org/changeset/204437/))

### Web Inspector

- Added *Open in New Tab*, *Reveal in Resources Tab* and *Copy Link Address* to the context menu of link attributes ([r204846](https://trac.webkit.org/changeset/204846/))
- Added *Download File* context menu item for resource tree elements ([r204862](https://trac.webkit.org/changeset/204862/))
- Added *Copy Selected* context menu item to the Console ([r204511](https://trac.webkit.org/changeset/204511/))
- Added a visual editor for the `spring()` timing-function ([r204775](https://trac.webkit.org/changeset/204775/))
- Fixed an issue where “NaN x NaN” was shown for invisible elements in the *Styles →  Computed → Box Model* section ([r204759](https://trac.webkit.org/changeset/204759/))
- Set Open Resource Dialog to jump to the last line when the specified line number (“:n”) is more than the total line count of the resource ([r204755](https://trac.webkit.org/changeset/204755/))
- Added an icon for selectors that only affect pseudo-elements ([r204754](https://trac.webkit.org/changeset/204754/))
- Fixed DOM nodes shifting when hovering over them in the Console ([r204520](https://trac.webkit.org/changeset/204520/))
- Fixed the alignment of the Close button of the selected item in the Network tab ([r204491](https://trac.webkit.org/changeset/204491/))
- Changed the Visual Styles Sidebar behavior for SVGs to show SVG specific sections ([r204758](https://trac.webkit.org/changeset/204758/))
- Changed the Visual Styles Sidebar *Text* → *Content* section to only be visible for a pseudo-element ([r204757](https://trac.webkit.org/changeset/204757/))
- Escaped *Text → Content* in the Visual Styles Sidebar ([r204510](https://trac.webkit.org/changeset/204510/))
- Addressed status icons flickering from rapid updates in the Visual Styles Sidebar ([r204562](https://trac.webkit.org/changeset/204562/))
- Fixed the placement of Error and Warning icons in the Visual Styles Sidebar ([r204490](https://trac.webkit.org/changeset/204490/))
- Fixed a hang when using Command-Shift-O (⌘⇧O) when the loaded web page has frames ([r204428](https://trac.webkit.org/changeset/204428/))
- Enabled editing node attributes, content, and styles for shadow DOM nodes ([r204370](https://trac.webkit.org/changeset/204370/))
- Improved the display of large numbers in the console log counter on the dashboard ([r204642](https://trac.webkit.org/changeset/204642/))
- Improved the display of large class lists and made the quick-toggle easier to discover ([r204496](https://trac.webkit.org/changeset/204496/))

### MathML

- Improved the extraction of operator and token elements’ characters ([r204830](https://trac.webkit.org/changeset/204830/))
- Introduced a `MathMLRowElement` class for `mrow`-like elements ([r204779](https://trac.webkit.org/changeset/204779/))
- Introduced a `MathMLAnnotationElement` class for the `<annotation>` and `<annotation-xml>` elements ([r204692](https://trac.webkit.org/changeset/204692/))

### CSS

- Enabled the `:host` pseudo-class to style elements in the shadow tree ([r204724](https://trac.webkit.org/changeset/204724/))
- Corrected the namespace prefix handling in front of element name CSS selectors ([r204591](https://trac.webkit.org/changeset/204591/))

### Rendering

- Fixed SVG clip-path to work on a root SVG element ([r204872](https://trac.webkit.org/changeset/204872))
- Fixed `ctx.drawImage` to clip the source rectangle if it is outside the source image ([r204517](https://trac.webkit.org/changeset/204517/))

### Accessibility

- Labelled audio description tracks correctly to prevent user confusion ([r204601](https://trac.webkit.org/changeset/204601/))
- Added a percentage value description for the media control’s timeline slider ([r204361](https://trac.webkit.org/changeset/204361/))

### Security

- Improved `URLParser`  parsing IPv4 addresses and URLs without credentials ([r204701](https://trac.webkit.org/changeset/204701/), [r204544](https://trac.webkit.org/changeset/204544/))
- Added support to handle cross-origin redirect requests while in CORS mode ([r204693](https://trac.webkit.org/changeset/204693/), [r204795](https://trac.webkit.org/changeset/204795/))
- Corrected the `Upgrade-Insecure-Request` state handling between navigations ([r204521](https://trac.webkit.org/changeset/204521/))
- Added a sandbox  for the Adobe Flash Player ESR plug-in used in enterprise environments ([r204461](https://trac.webkit.org/changeset/204461))
- Changed instantiation of WebKit plug-ins to happen at layout time, instead of at style resolution time ([r204320](https://trac.webkit.org/changeset/204320/))

---

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)