Contents

Safari Technology Preview 4 Release Notes

Preview the latest web technology updates including: Networking, Media, JavaScript, CSS, Web APIs, Web Inspector, Rendering, Accessibility, and bug fixes.

Overview

Safari Technology Preview Release 4 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 4 of Safari Technology Preview covers WebKit revisions 199865–200417.

Networking

  • Allow non-standard HTTP headers in WebSocket handshakes, which makes the 1Password extension work again (r200120, r200219)

Media

  • Fixed Netflix video playback (r200172)

JavaScript

  • Disabled Symbol.isConcatSpreadable due to performance concerns; is expected to return in the next release (r200149)

  • Made super() available to object literals, not just ES6 classes (r199927)

  • Sped up calling bound functions with no bound arguments by 4x (r199946)

  • Implemented String.prototype.localeCompare from ECMA-402 (r199967)

  • Optimized JSON.parse for a 1–2.5% improvement in Kraken json-parse-financial (r199968)

  • Implemented RegExp.prototype.@@replace and use it for String.prototype.replace (r200117)

  • Implemented spec changes for String.prototype.padStart and String.prototype.padEnd (r200194, r200210)

  • Unified how Math.pow() is optimized across all JIT tiers (r200208)

  • Made Reflect.toString() be [object Object] not [object Reflect] (r200355)

CSS

  • Made -webkit-image-set work inside CSS variables (r199884)

  • Changed transitions to no longer animate to/from auto values (r200360)

  • Implemented proper handling of animation-delay with a negative delay (r200042)

  • Started parsing play-state as part of the animation shorthand (r200043)

  • Made toggling animation-play-state not restart a finished animation (r200047)

  • Fixed a regression which caused position: absolute pseudo elements to inherit text-decoration (r200302)

  • Moved CSS Grid behind a runtime switch that is currently enabled by default (r200215, r200389)

  • Started implementation of auto-fill and auto-fit for CSS Grid (r200182, r200368)

  • Fixed computed style of grid-template-columns and grid-template-rows properties (r199981)

  • Fixed a bug with positioned grid items in vertical writing mode (r199874)

  • Fixed alignment with CSS Grid content distribution (r200181)

  • Improved user agent styles for <math> elements (r199869)

Web APIs

  • Fixed wheel events so they fire with body, html { height: 100% } (r200247)

  • Marked IndexedDB constructors as hidden on the worker global object until it is supported (r199889)

  • Made ping attribute for anchor elements only work for http/https URLs (r199900)

  • Renamed Shadow DOM’s getAssignedNodes to assignedNodes and support flattened option (r200285)

  • Removed Shadow DOM’s Node.prototype.rootNode because it was not compatible with existing websites (r200297)

  • Made document.currentScript return null when executing a script inside a shadow tree (r200327)

  • Fixed clicks sometimes being ignored inside button elements when the mouse moves (r200414)

Web Inspector

  • Made console a namespace object (like Math and JSON), allowing functions to be called unbound (r200350, r200373)

  • Fixed an issue where scripts would not load due to Esprima.js not being found (r200229)

  • Started showing dynamically added <script>// <![CDATA[ elements added to a frame as resources (r200065)

  • Made sourceURL and sourceMappingURL always work when using the Function constructor (r199939)

  • Restored filtering to the Timelines tab (r200067)

  • Added column number info to event listener locations (r199940)

  • Fixed profiles missing from records in JavaScript & Events timeline (r199979)

  • Fixed selecting a bar in the Frames timeline mode (r199972)

  • Made sorting by name or location columns work as expected (r199974)

  • Fixed the line error widget showing up on the wrong resource (r200064)

  • Clarified Retained Size in heap snapshots by hiding retained size of non-dominated children (r200086)

  • Made the debugger statements evaluated in the console properly show the source code (r199897)

  • Made jump to line work correctly the first time in pretty-printed JavaScript (r200262)

  • Improved scrolling performance in Timelines tab (r200270)

  • Improved performance of rendering many console messages (r200401)

  • Changed console.assert and console.trace to allow format specifiers (r200370)

  • Improved performance of console.assert by 10x when the assertion is true (r200371)

  • Changed console.time and console.timeEnd to use a default label when none if specified, and warn when attempting to start an already started timer (r200400)

  • Added CSS autocompletion suggestions for -webkit-user-select (r200154)

Rendering

  • Made non-accelerated CSS and SVG animations run at 60fps (r200164, r200171)

  • Made <select multiple> padding consistent with other browsers (r200265)

  • Fixed blur filter escaping an enclosing overflow: hidden (r200283)

  • Fixed a regression with min-content and box-sizing: border-box that affected Facebook’s messenger.com (r199895)

Accessibility

  • Made VoiceOver properly speak superscript content (r200214)

  • Fixed navigation around composed emoji characters and content with multiple whitespace sequences (r200258)

  • Made aria-label attribute work on <label> elements (r200290)

  • Made region a landmark and `

Bug Fixes

  • Corrected how WebKit determines the user’s preferred region from the system language setting. (r200105)

See Also

2016