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

# Safari Technology Preview 31 Release Notes

Preview the latest web technology updates including: Web API, JavaScript, Layout & Rendering, CSS Grid, Font Variations, Web Inspector, Media, Web Driver, WebCrypto, and Security.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 31 is now [available for download](https://webkit.org/downloads/) for macOS Sierra. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions [216643-217407](https://trac.webkit.org/log?stop_rev=216643&rev=217407).

### Web API

- Added media and type attribute support for `<link rel="preload">` ([r217247](https://trac.webkit.org/changeset/217247/webkit/trunk/Source))
- Added support for `DOMMatrix` and `DOMMatrixReadOnly` ([r216959](https://trac.webkit.org/changeset/216959/webkit))
- Fixed `getElementById` to return the correct element when a matching element is removed during `beforeload` event ([r216978](https://trac.webkit.org/changeset/216978/webkit/trunk/Source))
- Fixed skipping `<slot>` children when collecting content for `innerText` ([r216966](https://trac.webkit.org/changeset/216966/webkit/trunk/Source))

### JavaScript

- Fixed a syntax error thrown when declaring a top level for-loop iteration variable the same as a function parameter ([r217200](https://trac.webkit.org/changeset/217200/webkit/trunk/Source))

### Layout & Rendering

- Added support for `transform-box` to switch sizing box in SVG ([r217236](https://trac.webkit.org/changeset/217236/webkit/trunk/Source))
- Fixed `clientX` and `clientY` on mouse events to be relative to the layout viewport ([r216824](https://trac.webkit.org/changeset/216824/webkit/trunk/Source))
- Fixed large animated images getting decoded as a large static image before receiving all of the data ([r217262](https://trac.webkit.org/changeset/217262/webkit/trunk/Source))
- Fixed screen flickering caused by asynchronous image decoding for large images when interacting with the page ([r216901](https://trac.webkit.org/changeset/216901/webkit/trunk/Source))
- Fixed element position when dragging jQuery Draggable elements with `position:fixed` after pinch zoom ([r216803](https://trac.webkit.org/changeset/216803/webkit/trunk/Source))
- Fixed a timing issue causing a hardware-accelerated transform animation to misplace an element 50% of the time ([r217075](https://trac.webkit.org/changeset/217075/webkit/trunk/Source))

### CSS Grid

- Implemented the `place-self` shorthand ([r216829](https://trac.webkit.org/changeset/216829/webkit/trunk/Source))
- Fixed static position of positioned grid items ([r216916](https://trac.webkit.org/changeset/216916/webkit/trunk/Source))
- Ignored collapsed tracks on `content-distribution` alignment ([r217345](https://trac.webkit.org/changeset/217345/webkit/trunk/Source))

### Font Variations

- Added support for `calc()` in `font-variation-settings` and `font-feature-settings` ([r217267](https://trac.webkit.org/changeset/217267/webkit/trunk/Source))
- Enabled the `woff2-variations` format identifier for `@font-face` ([r217241](https://trac.webkit.org/changeset/217241/webkit/trunk/Source))
- Updated the `font-style` implementation in the font selection algorithm ([r217272](https://trac.webkit.org/changeset/217272/webkit/trunk/Source))

### Web Inspector

- Added a new icon for Web Socket resources ([r217067](https://trac.webkit.org/changeset/217067/webkit/trunk/Source))
- Changed adding new CSS rules so that the added rules go into a new Inspector Style Sheet resource that can be viewed, edited, and saved ([r217258](https://trac.webkit.org/changeset/217258/webkit/trunk/Source))
- Fixed an issue where changes are not applied in Styles sidebar when switching tabs without blurring editor ([r217266](https://trac.webkit.org/changeset/217266/webkit/trunk/Source))
- Fixed content views not getting restored on reload if its tree element is filtered out ([r217317](https://trac.webkit.org/changeset/217317/webkit/trunk/Source))
- Fixed an error when trying to delete DOM breakpoints from the Debugger tab ([r216681](https://trac.webkit.org/changeset/216681/webkit/trunk/Source))
- Fixed deleting a disabled XHR breakpoint ([r217306](https://trac.webkit.org/changeset/217306/webkit/trunk/Source))
- Fixed miscellaneous RTL and localization issues ([r216692](https://trac.webkit.org/changeset/216692/webkit/trunk/Source), [r217232](https://trac.webkit.org/changeset/217232/webkit/trunk/Source), [r217229](https://trac.webkit.org/changeset/217229/webkit/trunk/Source))
- Prevented loading the active recording until a Timeline view needs to be shown ([r217379](https://trac.webkit.org/changeset/217379/webkit/trunk/Source))

### Media

- Added support for painting MSE video-element to canvas ([r217185](https://trac.webkit.org/changeset/217185/webkit/trunk/Source))
- Fixed captions and subtitles not showing up in picture-in-picture for MSE content ([r216951](https://trac.webkit.org/changeset/216951/webkit/trunk/Source))
- Fixed media element reporting hidden when in picture-in-picture mode and tab is backgrounded ([r217223](https://trac.webkit.org/changeset/217223/webkit/trunk/Source))

### Web Driver

- Fixed characters produced with the shift modifier on a QWERTY keyboard to be delivered as shift-down, char-down, char-up, and shift-up events ([r217244](https://trac.webkit.org/changeset/217244/webkit/trunk/Source))
- Fixed `navigator.webdriver` to return false if the page is not controlled by automation ([r217391](https://trac.webkit.org/changeset/217391/webkit/trunk/Source))

### WebCrypto

- Replaced `CryptoOperationData` with `BufferSource` ([r216992](https://trac.webkit.org/changeset/216992/webkit/trunk/Source))

### Security

- Improved error message for `Access-Control-Allow-Origin` violations due to a misconfigured server ([r217069](https://trac.webkit.org/changeset/217069/webkit/trunk/Source))

---

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)