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

# Safari Technology Preview 16 Release Notes

Preview the latest web technology updates including: URL Parser, Gamepad API, CSS, Media, Fetch API, JavaScript, Web APIs, Web Inspector, Accessibility, Shadow DOM, and bug fixes.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 16 is now [available for download](https://webkit.org/downloads/) for macOS Sierra. If you are using Safari Technology Preview on OS X El Capitan, update to macOS Sierra to ensure you continue to receive updates. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions [206808–207669](https://trac.webkit.org/log/?stop_rev=206898&rev=207669&limit=999).

### URL Parser

- Enabled a faster and more standards-compliant URL parser ([r207162](https://trac.webkit.org/changeset/207162))

### Gamepad API

- Enabled the Gamepad API by default, allowing gamepads already configured for use with macOS to work on web pages using the Gamepad API ([r207348](https://trac.webkit.org/changeset/207348))

### CSS

- Supported CSS Shapes Level 1 without a `-webkit-` prefix ([r207630](https://trac.webkit.org/changeset/207630))
- Fixed an issue where CSS `font-variation-settings` did not handle uppercase axis names in variable fonts ([r207581](https://trac.webkit.org/changeset/207581))

### Media

- Made full access to the keyboard available when content is fullscreen ([r207439](https://trac.webkit.org/changeset/207439))
- Made setting `HTMLMediaElement.volume` to `NaN` or `Infinity` throw a `TypeError` ([r207375](https://trac.webkit.org/changeset/207375))
- Allowed throttling of background tabs that have media elements with no audible audio ([r207338](https://trac.webkit.org/changeset/207338))

### Fetch API

- Added support for `Request` cache mode ([r207086](https://trac.webkit.org/changeset/207086))
- Forbid redirection to non-HTTP(s) URL when in non-navigation mode ([r206858](https://trac.webkit.org/changeset/206858))
- Ensured memory cache does not bypass redirect mode ([r206994](https://trac.webkit.org/changeset/206994))
- Improved network data transfer to stream when the application needs it ([r206857](https://trac.webkit.org/changeset/206857))

### JavaScript

- Implemented `Intl.getCanonicalLocales` ([r206837](https://trac.webkit.org/changeset/206837))
- Changed ES6 method functions to not have a `prototype` property ([r207461](https://trac.webkit.org/changeset/207461))
- Forbid `"use strict"` directive in generator functions with non-simple parameters ([r207569](https://trac.webkit.org/changeset/207569))
- Prevented `Array.prototype.concat` from modifying frozen objects ([r207178](https://trac.webkit.org/changeset/207178))
- Prevented `Array.prototype.slice` from modifying frozen objects ([r207226](https://trac.webkit.org/changeset/207226))
- Prevented `JSON.parse` from modifying frozen objects ([r207341](https://trac.webkit.org/changeset/207341))
- Handled non-function, non-undefined comparator in `Array.prototype.sort` ([r207235](https://trac.webkit.org/changeset/207235))

### Web APIs

- Changed `MouseEvent` coordinates to be set to 0 for simulated clicks ([r207544](https://trac.webkit.org/changeset/207544))
- Fixed an issue where `select.options` could incorrectly return too many `option` elements ([r207181](https://trac.webkit.org/changeset/207181))
- Made `table.deleteRow(–1)` do nothing when there are no rows ([r207640](https://trac.webkit.org/changeset/207640))
- Fixed event listener order when overwriting an attribute event listener ([r206889](https://trac.webkit.org/changeset/206889))
- Implemented `DOMPoint` and `DOMPointReadOnly` ([r207420](https://trac.webkit.org/changeset/207420))
- Implemented `DOMRect` and `DOMRectReadOnly` ([r207438](https://trac.webkit.org/changeset/207438))
- Added support for `"CapsLock"` modifier in `KeyboardEvent.getModifierState()` ([r206828](https://trac.webkit.org/changeset/206828))
- Added support for `window.navigator.languages` attribute ([r207021](https://trac.webkit.org/changeset/207021))
- Updated `window.navigator.language` to no longer return an all lowercase string ([r206949](https://trac.webkit.org/changeset/206949))
- Updated `HTMLSelectElement` to ignore nested optgroup elements when recalculating ([r207276](https://trac.webkit.org/changeset/207276))
- Ensured a `toggle` event is fired whenever `details.open` is changed ([r207514](https://trac.webkit.org/changeset/207514))

### Web Inspector

- Fixed Timeline UI updating while recording in remote Web Inspector ([r207466](https://trac.webkit.org/changeset/207466))
- Exposed computed tree node and heading level for accessibility ([r207553](https://trac.webkit.org/changeset/207553))
- Added toggles for debugger pauses at `console.assert` failures ([r207444](https://trac.webkit.org/changeset/207444))
- Prevented changing content view when dragging to delete a breakpoint ([r207359](https://trac.webkit.org/changeset/207359))
- Improved debugger highlight when inside of `getter` and `setter` calls ([r207358](https://trac.webkit.org/changeset/207358))
- Improved debugger highlight when pausing on the first statement of a program ([r207227](https://trac.webkit.org/changeset/207227))
- Improved debugger highlight for dot- and bracket-expressions in `if` statements ([r207312](https://trac.webkit.org/changeset/207312))
- Removed line flash while stepping to prevent distraction ([r207165](https://trac.webkit.org/changeset/207165))
- Prevented CSS autocompletion from adding extra unexpected characters ([r207481](https://trac.webkit.org/changeset/207481))
- Corrected syntax highlighting for mixed case CSS values like  `translateX` ([r207489](https://trac.webkit.org/changeset/207489))
- Fixed an issue when pasting into a CSS rule selector ([r206888](https://trac.webkit.org/changeset/206888))

### Accessibility

- Implemented `prefers-reduced-motion` media query ([r207173](https://trac.webkit.org/changeset/207173))
- Set `<figcaption>` to provide the accessible name for other content inside the `<figure>` ([r206943](https://trac.webkit.org/changeset/206943))
- Exposed the invalid status for input types with an invalid input value ([r207035](https://trac.webkit.org/changeset/207035))
- Exposed the `placeholder` attribute when both the `placeholder` and `aria-placeholder` attributes are set ([r207014](https://trac.webkit.org/changeset/207014))
- Improved accessibility support for `<summary>` elements ([r207314](https://trac.webkit.org/changeset/207314))
- Mapped the `<output>` element to status role and exposed its text content as a title ([r207429](https://trac.webkit.org/changeset/207429))
- Added a new role for the `<mark>` element and exposed the role description ([r207583](https://trac.webkit.org/changeset/207583))
- Improved the `<meter>` element to describe the status of the value ([r207540](https://trac.webkit.org/changeset/207540))
- Provided more detailed role description for input types exposed as standard text fields ([r207401](https://trac.webkit.org/changeset/207401))

### Shadow DOM

- Fixed updating styles for stylesheets that change in a shadow tree ([r206880](https://trac.webkit.org/changeset/206880))

### Bug Fixes

- Fixed an issue where Safari Technology Preview would hang when waking from sleep
- Fixed an issue where the contents of a tab would remain onscreen briefly after automatically switching to a new tab when opening a `target=_blank` link
- Changed “Download Linked File” context menu action to use the value of the `download` attribute as the filename ([r207648](https://trac.webkit.org/changeset/207648))
- Changed “Download Linked File As…” context menu action to use the value of the `download` attribute as the suggested filename
- Fixed a bug where a keyframe animation on `body` could trigger high CPU usage ([r207372](https://trac.webkit.org/changeset/207372))
- Fixed an issue that caused the keyboard to remain visible when swiping back on twitter.com ([r207486](https://trac.webkit.org/changeset/207486))

---

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)