Release Notes for Safari Technology Preview 3

Safari Technology Preview Release 3 is now available for download. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. Release 3 of Safari Technology Preview covers WebKit revisions 199086–199865.


  • Added support for Symbol.isConcatSpreadable per the ES6 spec (r199397)
  • Made RegExp constructor get the Symbol.match property to decide if an object should be constructed like a RegExp object per the ES6 spec (r199106)
  • Changed String.match and to use RegExp constructor per the ES6 spec (r199144)
  • Corrected how function declarations are hoisted per the ES6 spec (r199179)
  • Improved parsing of ES6 arrow functions (r199352)
  • Added RegExp.prototype[@@split] and made String.prototype.split use it per the ES6 spec (r199731)
  • Added RegExp.prototype[@@search] (r199748)
  • Updated the treatment of invoking methods on RegExp.prototype per the ES6 spec (r199545)
  • Made more test cases pass with ES6 RegExp unicode flag (r199523)
  • Added support for caching accesses to arguments.length for a performance speed-up (r199240)
  • Corrected the behavior of throw() for generators yielding to an inner generator per draft ECMAScript spec (r199652)


  • Implemented the functional :host() pseudo class (r199291)
  • Improved support for SVG cursor images (r199625)
  • Started using OpenType math fonts by default for MathML (r199773)
  • Fixed measurement of hanging punctuation (r199777)
  • Improved hyphenation when the last line in a paragraph only contains one syllable of a word (r199818)
  • Fixed a layout problem affecting CSS Grid items without a static inline position in RTL languages (r199098)
  • Fixed positioned items with gaps for CSS Grid (r199223)
  • Added support for CSS Grid grid-template-columns repeat(auto-fill, …) and repeat(auto-fit, …) (r199343)
  • Fixed positioned items with content alignment in CSS Grids (r199657)
  • Started using grid-template-areas to determine the explicit grid (r199661)
  • Corrected CSS Grid layout by using the margin box for non-auto minimum sizes (r199728)

Web APIs

  • Added support setting and retrieving Blob values in IndexedDB (r199120, r199230, r199499, r199524, r199708, r199730)
  • Corrected MessageEvent.source result once window has been fully created (r199087)
  • Improved stability when the first child of a shadow root is a comment node (r199097)
  • Made CSS be a proper constructor on the window object with static functions (r199112)
  • Exposed the Crypto constructor on the window object (r199159)
  • Added support for display: contents on <slot> elements (r199151)
  • Fixed FontFace so it will be properly reject the returned promise if Content Security Policy blocks all the URLs (r199611)
  • Made FontFaceSet handle null correctly (r199216)
  • Corrected DOMTokenList.contains() so it does not throw an exception (r199296)
  • Made Selection.deleteFromDocument not delete a character when the selection is a caret per the spec (r199585)
  • Improved the IndexedDB bindings to better match the spec (r199750, r199774)
  • Made AudioBufferSourceNode.buffer nullable (r199751)
  • Improved stability handling a wheel event that closes a frame (r199181)

Web Inspector

  • Made it possible to expand objects in the Instances heap snapshot view to see what it retains (r199379)
  • Improved performance dramatically in the Timelines tab when recording pages with a lot of rapid activity and for long recordings (r199747)
  • Improved JavaScript pretty printing performance by using Esprima and by no longer blocking the main thread (r199168, r199169)
  • Improved the profiler’s sampling rate to get closer to a 1ms sample frequency (r199092)
  • Improved filtering in Open Quickly dialog (r199143, r199226)
  • Made the Open Quickly dialog keep its resource list up to date (r199207)
  • Stopped trying to match color patterns in JavaScript source code to improve performance of large resources (r199095)
  • Changed take snapshot navigation button to a camera glyph (r199177)
  • Corrected source code location links in the JavaScript profile Call Trees view (r199201)
  • Made XHRs and Web Workers full-text searchable (r199263)
  • Improved the appearance of DOM nodes in object previews (r199322)
  • Improved the tab bar rendering when the tabs are small (r199325)
  • Corrected dock controls disappearing from the toolbar after leaving fullscreen (r199395)
  • Started remembering the zoom factor as a persistent setting across sessions (r199396)
  • Corrected sourceMappingURL not being used when sourceURL was also set (r199688)
  • Started localizing sizes and times by using Number.prototype.toLocaleString (r199635)
  • Made sourceMappingURL work more reliably across reloads (r199852)


  • Improved the time to display for some pages — allowing a short page header to render immediately before other content populates later (r199155)
  • Fixed page tile layers disappearing when graphics acceleration is unavailable (r199130)
  • Made font-size: 0 render as 0 width when text-rendering: optimizeLegibility is used (r199150)
  • Corrected focus ring drawing at incorrect location on image map with a CSS transform (r199247)
  • Made negative letter-spacing affect the right edge of the content’s visual overflow (r199516)
  • Corrected compositing for WebGL based canvases after they changed size (r199536)
  • Started clearing the rendered icon on <input type=file> when an empty files list is set (r199540)
  • Improved performance of border-collapse: collapse on tables (r199552)
  • Improved rendering of select[multiple] to better match other browsers (r199553)
  • Fixed backdrop filter so it honors visibility: hidden (r199862)


  • Made nested browsing context created for <object> or <embed> respect Content Security Policy’s object-src directive (r199527)
  • Started ignoring Content Security Policy meta tags if it is not a descendent of <head> per the spec (r199163)
  • Started ignoring report-only Content Security Policy directives delivered via meta tag per the spec (r199538)
  • Started ignoring paths in Content Security Policy URL matching after redirects per spec (r199612)
  • Removed support for X-Frame-Options in <meta> per the spec (r199696)


  • Stopped speculatively revalidating cached redirects (r199521)
  • Stopped cacheing responses with Content-Range headers to avoid serving incorrect results (r199090)
  • Fixed clearing the application cache when removing website data in Privacy preferences (r199204)


  • Changed the application role description to “web application” to avoid confusion with the top-level system application description (r199260)
  • Made presentation role be preferred over child <title> and <desc> elements in SVG content (r199588)

You can file bugs or feature requests at the WebKit bug tracker, or you can submit feedback or bugs to Apple on Apple’s bug reporting website. For other questions or feedback, feel free to reach us on Twitter at @webkit or Jonathan Davis at @jonathandavis.