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

# Safari Technology Preview 40 Release Notes

Preview the latest web technology updates including: JavaScript, FileSystem Entry API, Fetch API, Accessibility, Web API, CSS, CSS Grid, Web Inspector, Media, Rendering, and WebGL.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 40 is now [available for download](https://webkit.org/downloads/) for macOS Sierra and betas of macOS High 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 [221334-221968](https://trac.webkit.org/log?stop_rev=221334&rev=221968&limit=999).

### JavaScript

- Added support for regular expression named capture groups ([r221769](https://trac.webkit.org/changeset/221769/webkit/))
- Fixed semicolon tokens becoming interpreted as an `=` assignment operator ([r221400](https://trac.webkit.org/changeset/221400/webkit/))
- Implemented async iteration statement `for-await-of` ([r221358](https://trac.webkit.org/changeset/221358/webkit/))
- Optimized `Object.keys`  using careful array allocation ([r221853](https://trac.webkit.org/changeset/221853/webkit/))

### FileSystem Entry API

- Added support for `input.webkitEntries` ([r221645](https://trac.webkit.org/changeset/221645/webkit/))
- Implemented `FileSystemDirectoryEntry.getDirectory()` ([r221540](https://trac.webkit.org/changeset/221540/webkit/))
- Implemented `FileSystemEntry.getParent()` ([r221481](https://trac.webkit.org/changeset/221481/webkit/))
- Implemented `FileSystemFileEntry.file()` ([r221544](https://trac.webkit.org/changeset/221544/webkit/))
- Fixed the FileSystemEntry API to ignore hidden files ([r221639](https://trac.webkit.org/changeset/221639/webkit/))
- Finished the `DOMFormData` implementation ([r221839](https://trac.webkit.org/changeset/221839/webkit/), [r221914](https://trac.webkit.org/changeset/221914/webkit/))

### Fetch API

- Added support for `FetchRequest.body` ([r221395](https://trac.webkit.org/changeset/221395/webkit/))
- Added support for `Request` body stream cloning ([r221437](https://trac.webkit.org/changeset/221437/webkit/))
- Added support for consuming a `Request` ReadableStream body ([r221504](https://trac.webkit.org/changeset/221504/webkit/))
- Added support for caching `Response` with a ReadableStream body ([r221704](https://trac.webkit.org/changeset/221704/webkit/))
- Aligned `FetchResponse` and `FetchRequest` body handling ([r221772](https://trac.webkit.org/changeset/221772/webkit/))
- Fixed `Response.statusText` unexpectedly using the full HTTP status line for HTTP/2 responses ([r221804](https://trac.webkit.org/changeset/221804/webkit/))
- Fixed `Request` ReadableStream body to throw an exception when keep alive is true ([r221342](https://trac.webkit.org/changeset/221342/webkit/))

### Accessibility

- Distinguished between `title` attribute tooltips and `aria-label` attribute labels ([r221918](https://trac.webkit.org/changeset/221918/webkit/))

### Web API

- Fixed validation for `DOMMatrix` and `DOMMatrixReadOnly` `NaN` values ([r221545](https://trac.webkit.org/changeset/221545/webkit/))
- Implemented `DOMMatrix2DInit` for `setTransform()` and `addPath()` ([r221462](https://trac.webkit.org/changeset/221462/webkit/))

### CSS

- Removed support for `>>` descendant combinator syntax ([r221788](https://trac.webkit.org/changeset/221788/webkit/))
- Fixed wrong `getComputedStyle` result for pseudo-elements in `display:none` subtrees. ([r221542](https://trac.webkit.org/changeset/221542/webkit/))
- Updated the font selection algorithm to match latest CSS specifications ([r221630](https://trac.webkit.org/changeset/221630/webkit/))

### CSS Grid

- Fixed grid shorthand to not reset the gutter properties ([r221668](https://trac.webkit.org/changeset/221668/webkit/))
- Changed stretching auto tracks to be done as part of the track sizing algorithm ([r221931](https://trac.webkit.org/changeset/221931/webkit/))
- Changed to use transferred size over content size for automatic minimum size ([r221910](https://trac.webkit.org/changeset/221910/webkit/))

### Web Inspector

- Fixed an issue that caused toolbar buttons to be hidden at narrow widths ([r221338](https://trac.webkit.org/changeset/221338/webkit/))
- Prevented the split console in the Settings tab ([r221882](https://trac.webkit.org/changeset/221882/webkit/))
- Use the same Timeline icon in the dashboard and Timeline tab ([r221861](https://trac.webkit.org/changeset/221861/webkit/))
- Increased the maximum width allowed for sidebars ([r221713](https://trac.webkit.org/changeset/221713/webkit/))
- Fixed an issue that prevented ⌘E and ⌘G from working in the main content area when quick console drawer is open ([r221691](https://trac.webkit.org/changeset/221691/webkit/))

### Media

- Prevented increasing the reported `totalFrameDelay` for non-displayed frames, or frames coming in while paused ([r221937](https://trac.webkit.org/changeset/221937/webkit/))
- Fixed MSE-to-Canvas painting that can become “stuck” during heavy workloads ([r221430](https://trac.webkit.org/changeset/221430/webkit/))

### Rendering

- Implemented the `HTMLImageElement.async` attribute ([r221803](https://trac.webkit.org/changeset/221803/webkit/))
- Implemented `HTMLImageElement.decode()` method ([r221805](https://trac.webkit.org/changeset/221805/webkit/))
- Fixed respecting the SVG fragment identifier if it is a part of an HTTP URL ([r221377](https://trac.webkit.org/changeset/221377/webkit/))
- Enabled previous elements with `lang=` to affect fonts selected for subsequent elements ([r221408](https://trac.webkit.org/changeset/221408/webkit/))

### WebGL

- Implemented `getActiveUniforms()` for WebGL 2 ([r221667](https://trac.webkit.org/changeset/221667/webkit/))
- Accelerated `texImage2D` for video doesn’t respect `flipY` ([r221932](https://trac.webkit.org/changeset/221932/webkit/))
- Fixed `VideoTextureCopierCV` to correctly restore vertex attribute state ([r221933](https://trac.webkit.org/changeset/221933/webkit/))

---

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)