Release Notes for Safari Technology Preview 16

Safari Technology Preview Release 16 is now available for download 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.

URL Parser

  • Enabled a faster and more standards-compliant URL parser (r207162)

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)


  • Supported CSS Shapes Level 1 without a -webkit- prefix (r207630)
  • Fixed an issue where CSS font-variation-settings did not handle uppercase axis names in variable fonts (r207581)


  • Made full access to the keyboard available when content is fullscreen (r207439)
  • Made setting HTMLMediaElement.volume to NaN or Infinity throw a TypeError (r207375)
  • Allowed throttling of background tabs that have media elements with no audible audio (r207338)

Fetch API

  • Added support for Request cache mode (r207086)
  • Forbid redirection to non-HTTP(s) URL when in non-navigation mode (r206858)
  • Ensured memory cache does not bypass redirect mode (r206994)
  • Improved network data transfer to stream when the application needs it (r206857)


  • Implemented Intl.getCanonicalLocales (r206837)
  • Changed ES6 method functions to not have a prototype property (r207461)
  • Forbid "use strict" directive in generator functions with non-simple parameters (r207569)
  • Prevented Array.prototype.concat from modifying frozen objects (r207178)
  • Prevented Array.prototype.slice from modifying frozen objects (r207226)
  • Prevented JSON.parse from modifying frozen objects (r207341)
  • Handled non-function, non-undefined comparator in Array.prototype.sort (r207235)

Web APIs

  • Changed MouseEvent coordinates to be set to 0 for simulated clicks (r207544)
  • Fixed an issue where select.options could incorrectly return too many option elements (r207181)
  • Made table.deleteRow(–1) do nothing when there are no rows (r207640)
  • Fixed event listener order when overwriting an attribute event listener (r206889)
  • Implemented DOMPoint and DOMPointReadOnly (r207420)
  • Implemented DOMRect and DOMRectReadOnly (r207438)
  • Added support for "CapsLock" modifier in KeyboardEvent.getModifierState() (r206828)
  • Added support for window.navigator.languages attribute (r207021)
  • Updated window.navigator.language to no longer return an all lowercase string (r206949)
  • Updated HTMLSelectElement to ignore nested optgroup elements when recalculating (r207276)
  • Ensured a toggle event is fired whenever is changed (r207514)

Web Inspector

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


  • Implemented prefers-reduced-motion media query (r207173)
  • Set <figcaption> to provide the accessible name for other content inside the <figure> (r206943)
  • Exposed the invalid status for input types with an invalid input value (r207035)
  • Exposed the placeholder attribute when both the placeholder and aria-placeholder attributes are set (r207014)
  • Improved accessibility support for <summary> elements (r207314)
  • Mapped the <output> element to status role and exposed its text content as a title (r207429)
  • Added a new role for the <mark> element and exposed the role description (r207583)
  • Improved the <meter> element to describe the status of the value (r207540)
  • Provided more detailed role description for input types exposed as standard text fields (r207401)

Shadow DOM

  • Fixed updating styles for stylesheets that change in a shadow tree (r206880)

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)
  • 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)
  • Fixed an issue that caused the keyboard to remain visible when swiping back on (r207486)