Release Notes for Safari Technology Preview 15

Safari Technology Preview Release 15 is now available for download for both macOS Sierra and OS X El Capitan 10.11.6. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions 206196–206808.

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

Fetch API

  • Made ReadableStream throw TypeError values instead of strings (r206770)
  • Changed Fetch to prevent redirection to non-HTTP URLs (r206716)
  • Made FetchBody use UTF8 to encode text data (r206636)
  • Added support for URLSearchParams as the body of a Fetch (r206632)


  • Sped up String.prototype.toLowerCase() by 7–8% on benchmarks (r206804)
  • Fixed cases where class, function, and arrow function names were not inferred during assignment (r206599, r206610)
  • Fixed arrow functions so they don’t allow duplicate parameter names (r206647)
  • Updated Generator and GeneratorFunction property descriptors to match the ES6 spec (r206711, r206738)
  • Fixed a bug where String.prototype.padStart() and padEnd() would insert null in rare cases (r206573)
  • Fixed a bug with Function.prototype.length when there are parameters with default values (r206268)


  • Implemented rendering of font-variation-settings and enabled it by default (r206679, r206701, r206761)
  • Implemented animation of font-variation-settings (r206690)
  • Added mapping for font-family: cursive to KaiTi fonts in Chinese (r206791)
  • Sped up the computation of CSS Grid row sizes with indefinite heights by 2× (r206253)
  • Fixed setting a style element’s textContent or cssText so it properly triggers a style recalculation (r206404)
  • Fixed toggling display: none on a parent element of a Shadow DOM slot to work in more cases (r206493)

Web APIs

  • Enabled support for the download attribute on anchor and area elements — including Blob URLs (r206356, r206358, r206439, r206478, r206630)
  • Exposed CryptoKey to Web Workers (r206627)
  • Implemented Node.prototype.getRootNode() (r206285)
  • Implemented ShadowRoot.prototype.elementFromPoint() (r206795)
  • Implemented DOMTokenList.prototype.supports() (r206561, r206616)
  • Implemented from the HTML spec (r206634)
  • Implemented KeyboardEvent.prototype.code from the UI Event spec (r206803)
  • Implemented KeyboardEvent.prototype.isComposing from the UI Event spec (r206796)
  • Implemented KeyboardEvent.prototype.key from the UI Event spec (r206750)
  • Implemented KeyboardEvent.prototype.repeat from the UI Event spec (r206724)
  • Implemented KeyboardEvent.prototype.getModifierState() from the UI Event spec (r206725)
  • Changed ReadableStream to match the Steams API spec (r206508)
  • Changed DOMTokenList.prototype.value and toString() to match the DOM spec (r206560)
  • Changed td.scope to only return known values (r206733)
  • Changed HTMLLabelElement.prototype.form to match the HTML spec (r206332)
  • Changed Element.insertAdjacentHTML() to match the HTML spec (r206308)
  • Changed so it returns null when it is blocked by Safari (r206777)
  • Changed HTMLSlotElement.prototype.assignedNodes() to include fallback contents when flatten option is set (r206534)
  • Changed Object.prototype.getOwnPropertyDescriptor() so it works correctly across origins (r206221)
  • Changed HTML serialization to always add xml: prefix for attributes in the XML namespace (r206663)
  • Changed properties on Window and Location to be non-enumerable when accessing them cross origin (r206233)
  • Fixed a bug where text nodes assigned to a linked slot were not clickable (r206605)
  • Fixed the assignment of non-numeric values to input.minlength by setting it to 0 (r206588)
  • Fixed input elements so they work inside Shadow DOM trees (r206403)
  • Fixed the document.title getter by stripping and collapsing the right whitespace characters (r206309)
  • Fixed going into fullscreen from Silverlight a second time would hide the menu bar and dock for Safari (r206675)
  • Fixed the serialization of HTML element attributes to match the HTML spec (r206240)
  • Fixed the serialization of HTML void elements to ignore any child elements (r206266)
  • Fixed the serialization of bgsound, keygen, and track elements (r206246)
  • Fixed a bug where setting attributes on HTMLMeterElement to non-finite values would throw the wrong exception type (r206243)
  • Fixed a bug where IDBIndex.prototype.openCursor() would match indices on multiple object stores (r206280)
  • Fixed a bug preventing structured clones of WebCrypto keys under Safari 10 (r206684)

Web Inspector

  • Added line range highlighting to show where the debugger is paused — good for lines with multiple expressions or multiple function calls (r206654, r206655)
  • Made breakpoints on blank lines or comments break on the next possible line (r206653)
  • Fixed stepping out of a function so it always takes you to the caller instead of sometimes resuming (r206652, r206693)
  • Fixed stepping to a line in the debugger with an “auto continue” breakpoint so it still pauses (r206698)
  • Fixed refreshing while in the Timelines tab would cause negative timestamps in the Network tab (r206464)
  • Fixed a bug where Box Model values were not updated when DOM node styles changed (r206406)
  • Fixed a bug where the DOM would not update when editing Box Model values (border, margin, etc.) (r206363)
  • Added a console message when an anchor download attribute is ignored (r206562)
  • Made clicking a second time on the color swatch square hide the CSS color picker (r206729)


  • Fixed Picture in Picture playback so it always shows the correct state of the play button (r206520)


  • Exposed a label element’s text content as the description for meter elements (r206581)
  • Exposed a label element’s text content as the description for progress elements (r206391)

URL Handling

  • Navigations to tel: and mailto: links now require a user gesture; navigations without a user gesture will show a confirmation prompt
  • Users are now prompted when navigating to URLs that open other applications


  • Fixed an issue where a CSP violation report may be sent to the wrong domain when the frame-ancestors directive is violated (r206278)

Safari Extensions

  • Fixed an issue where Safari Technology Preview would consume excess memory when certain Safari Extensions were installed (r206885)