Safari Technology Preview release 4 now available for download

A fresh version of the Safari Technology Preview is now available to download, bringing the developer-centric version of the browser up to its fourth release. This release comes exactly two weeks following the last update, continuing Apple's two-week cadence for releases thus far.

If you're a developer and interested in testing out the latest release, here's a rundown of what's new:

Networking

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

Media

  • Fixed Netflix video playback

JavaScript

  • Disabled Symbol.isConcatSpreadable due to performance concerns; is expected to return in the next release
  • Made super() available to object literals, not just ES6 classes
  • Sped up calling bound functions with no bound arguments by 4x
  • Implemented String.prototype.localeCompare from ECMA-402
  • Optimized JSON.parse for a 1–2.5% improvement in Kraken json-parse-financial
  • Implemented RegExp.prototype.@@replace and use it for String.prototype.replace
  • Implemented spec changes for String.prototype.padStart and String.prototype.padEnd
  • Unified how Math.pow() is optimized across all JIT tiers
  • Made Reflect.toString() be [object Object] not [object Reflect]

CSS

  • Made -webkit-image-set work inside CSS variables
  • Changed transitions to no longer animate to/from auto values
  • Implemented proper handling of animation-delay with a negative delay
  • Started parsing play-state as part of the animation shorthand
  • Made toggling animation-play-state not restart a finished animation
  • Fixed a regression which caused position: absolute pseudo elements to inherit text-decoration
  • Moved CSS Grid behind a runtime switch that is currently enabled by default
  • Started implementation of auto-fill and auto-fit for CSS Grid
  • Fixed computed style of grid-template-columns and grid-template-rows properties
  • Fixed a bug with positioned grid items in vertical writing mode
  • Fixed alignment with CSS Grid content distribution
  • Improved user agent styles for elements

Web APIs

  • Fixed wheel events so they fire with body, html { height: 100% }
  • Marked IndexedDB constructors as hidden on the worker global object until it is supported
  • Made ping attribute for anchor elements only work for http/https URLs
  • Renamed Shadow DOM's getAssignedNodes to assignedNodes and support flattened option
  • Removed Shadow DOM's Node.prototype.rootNode because it was not compatible with existing websites
  • Made document.currentScript return null when executing a script inside a shadow tree
  • Fixed clicks sometimes being ignored inside button elements when the mouse moves

Web Inspector

  • Made console a namespace object (like Math and JSON), allowing functions to be called unbound
  • Fixed an issue where scripts would not load due to Esprima.js not being found
  • Started showing dynamically added
  • Made sourceURL and sourceMappingURL always work when using the Function constructor
  • Restored filtering to the Timelines tab
  • Added column number info to event listener locations
  • Fixed profiles missing from records in JavaScript & Events timeline
  • Fixed selecting a bar in the Frames timeline mode
  • Made sorting by name or location columns work as expected
  • Fixed the line error widget showing up on the wrong resource
  • Clarified Retained Size in heap snapshots by hiding retained size of non-dominated children
  • Made the debugger statements evaluated in the console properly show the source code
  • Made jump to line work correctly the first time in pretty-printed JavaScript
  • Improved scrolling performance in Timelines tab
  • Improved performance of rendering many console messages
  • Changed console.assert and console.trace to allow format specifiers
  • Improved performance of console.assert by 10x when the assertion is true
  • 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
  • Added CSS autocompletion suggestions for -webkit-user-select

Rendering

  • Made non-accelerated CSS and SVG animations run at 60fps
  • Made < select multiple > padding consistent with other browsers
  • Fixed blur filter escaping an enclosing overflow: hidden
  • Fixed a regression with min-content and box-sizing: border-box that affected Facebook's messenger.com

Accessibility

  • Made VoiceOver properly speak superscript content
  • Fixed navigation around composed emoji characters and content with multiple whitespace sequences
  • Made aria-label attribute work on < label > elements
  • Made region a landmark and < section > elements have a role of region if there is an author provided accessible name via the aria-label or aria-labelledby attributes

Bug Fixes

  • Corrected how WebKit determines the user's preferred region from the system language setting.

If you're unfamiliar with Safari Technology Preview, it's a version of the Safari browser meant to give developers a way to experiment with and test new technologies before they head to Safari proper. If you're interested, you can download the latest release from Apple{.nofollow} now. If you've used a prior release, you should be able to grab the update through the Mac App Store now.

Dan Thorp-Lancaster